00001 c artmrartwt_.F
00002 c*********************************************************************
00003 c* (c) Copyright 1994-2002 Brown Deer Technology, LLC.
00004 c* All rights reserved.
00005 c*********************************************************************
00006
00007 subroutine artmrartwt(
00008 & Asize,Msize
00009 & ,amax,mmax
00010 & ,mrastep,mracoef
00011 & ,data
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 data(0:Asize-1)
00035
00036 c ****************************
00037 c ***** LOCAL VARIABLES ******
00038 c ****************************
00039
00040 integer mcycle
00041 integer a
00042 integer m
00043 real tmp,tmpold
00044
00045 c ******************************
00046 c ***** EXTERNAL FUNCTIONS *****
00047 c ******************************
00048
00049 mrastep=mrastep+1
00050
00051 mcycle=0
00052 do while (btest(mrastep,mcycle).and.(mcycle.lt.mmax))
00053 mcycle=mcycle+1
00054 enddo
00055
00056 do a=0,amax
00057
00058 tmp=data(a)
00059
00060 m=1
00061 do while (m.le.mcycle)
00062 tmpold=mracoef(0,m-1,a)
00063 mracoef(0,m-1,a)=tmp
00064 mracoef(1,m,a)=(tmpold-tmp)*INVSQRT2
00065 tmp=(tmpold+tmp)*INVSQRT2
00066 m=m+1
00067 enddo
00068
00069 mracoef(0,m-1,a)=tmp
00070
00071 enddo
00072
00073 return
00074 end
00075 c********************************************************