00001 c artmrartiwt_.F
00002 c*********************************************************************
00003 c* (c) Copyright 1994-2002 Brown Deer Technology, LLC.
00004 c* All rights reserved.
00005 c*********************************************************************
00006
00007 subroutine artmrartiwt(
00008 & Asize,Msize
00009 & ,amax,mmax
00010 & ,mrastep,mracoef
00011 & ,datavalue
00012 & )
00013
00014 implicit none
00015
00016 c ****************************************
00017 c ***** COMMON BLOCKS AND PARAMETERS *****
00018 c ****************************************
00019
00020 #include "stormdef.h"
00021 real INVSQRT2
00022 parameter( INVSQRT2 = STORMDEF_MATHCONST_INVSQRT2 )
00023
00024 c *******************************
00025 c ***** VARIABLES EXCHANGED *****
00026 c *******************************
00027
00028 integer Asize
00029 integer Msize
00030 integer amax
00031 integer mmax
00032 integer mrastep
00033 real mracoef(0:1,0:Msize-1,0:Asize-1)
00034 real datavalue(0:Asize-1)
00035
00036 c ****************************
00037 c ***** LOCAL VARIABLES ******
00038 c ****************************
00039
00040 integer itmp
00041 integer imcycle
00042 integer a
00043 integer m
00044 real tmpold,tmps,tmpw
00045
00046 c ******************************
00047 c ***** EXTERNAL FUNCTIONS *****
00048 c ******************************
00049
00050 mrastep=mrastep+1
00051
00052 itmp=ishft(1,mmax)-1
00053
00054 itmp=itmp-iand(itmp,mrastep)
00055
00056 imcycle=0
00057
00058 do while (btest(itmp,imcycle).and.(imcycle.lt.mmax))
00059 imcycle=imcycle+1
00060 enddo
00061
00062 do a=0,amax
00063
00064 m=imcycle
00065
00066 if (m.lt.mmax) then
00067 mracoef(0,m,a)=(mracoef(0,m+1,a)-mracoef(1,m+1,a))*INVSQRT2
00068 endif
00069
00070 m=m-1
00071
00072 do while (m.ge.0)
00073 mracoef(0,m,a)=(mracoef(0,m+1,a)+mracoef(1,m+1,a))*INVSQRT2
00074 m=m-1
00075 enddo
00076
00077 datavalue(a)=mracoef(0,0,a)
00078
00079 enddo
00080
00081 return
00082 end
00083 c********************************************************