module conv { use helix use compress contains function conv1( aa, bb) result ( ss) { type( filter) :: aa, bb, ss integer :: na, nb, ns, ia, ib, i na = size (aa%lag) nb = size (bb%lag) ns = maxval (aa%lag) + maxval (bb%lag) call allocatehelix (ss, ns) ss%lag = (/ (i, i = 1, ns) /) do ia = 1, na { i = aa%lag (ia) ss%flt (i) = aa%flt (ia) } do ib = 1, nb { i = bb%lag (ib) ss%flt (i) = ss%flt (i) + bb%flt (ib) } do ia = 1, na { do ib = 1, nb { i = aa%lag (ia) + bb%lag (ib) ss%flt (i) = ss%flt (i) + aa%flt (ia) * bb%flt (ib) }} call resize (ss) } }