module hypotenusei { # Inverse normal moveout integer :: nt integer, dimension (nt), allocatable :: iz #% _init( nt, t0, dt, xs) integer it real t0, dt, xs, t, zsquared do it= 1, nt { t = t0 + dt*(it-1) zsquared = t * t - xs * xs if ( zsquared >= 0.) iz (it) = 1.5 + (sqrt( zsquared) - t0) /dt else iz (it) = 0 } #% _lop( zz, tt) integer it do it= 1, nt { if ( iz (it) > 0 ) { if( adj) zz( iz(it)) += tt( it ) else tt(it) += zz( iz(it)) } } }