module hipass { real, private :: r, t #% _init (eps) real eps r = 1+0.5*eps*eps r = r - sqrt(r*r-1.) #% _lop( x, y) integer i, n n = size (x) if( adj) { t = y (n); x(n) = x(n) + t do i=n-1,1,-1 { t = y(i) - y(i+1) + r*t x(i) = x(i) + t } } else { t = x (1); y(1) = y(1) + t do i=2,n { t = x(i) - x(i-1) + r*t y(i) = y(i) + t } } }