#$ #$=head1 NAME #$ #$hconest - convolution using helix filters, adjoint is filter #$ #$=head1 SYNOPSIS #$ #$Initializer - C #$ #$Operator - C #$ #$=head1 PARAMETERS #$ #$=over 4 #$ #$=item x - C #$ #$ data #$ #$=item aa - type(filter) #$ #$ helix filter to perform convolution with #$ #$=item adj,add,xx,yy - #$ #$ standard operators parameters #$ #$=back #$ #$=head1 DESCRIPTION #$ #$ Masked helix convolution, adjoint is the filter$ #$ #$=head1 SEE ALSO #$ #$L,L,L,L #$ #$=head1 LIBRARY #$ #$B #$ #$=cut module hconest { # masked helix convolution, adjoint is the filter. use helix real, dimension (:), pointer :: x type( filter) :: aa #% _init( x, aa) #% _lop( a, y) integer ia, ix, iy do ia = 1, size( a) { do iy = 1 + aa%lag( ia), size( y) { if( aa%mis( iy)) cycle ix = iy - aa%lag( ia) if( adj) a( ia) += y( iy) * x( ix) else y( iy) += a( ia) * x( ix) } } }