# Half order causal derivative. # subroutine halfdif( conj, n, x, y) integer n2, i, conj, n real omega, x(n), y(n) complex cz, cv(4096) n2=1; while(n2 4096) call erexit('halfdif memory') do i= 1, n2 { cv(i) = 0.} do i= 1, n if( conj == 0) { cv(i) = x(i)} else { cv(i) = y(i)} call ftu( +1., n2, cv) do i= 1, n2 { omega = (i-1.) * 2.*3.14159265 / n2 cz = csqrt( 1. - cexp( cmplx( 0., omega))) if( conj != 0) cz = conjg( cz) cv(i) = cv(i) * cz } call ftu( -1., n2, cv) do i= 1, n if( conj == 0) { y(i) = cv(i)} else { x(i) = cv(i)} return; end