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
       }
    }
} 
