*FLOAT 64 DIM h(5), f(15), g(20) h() = -8,-9,-3,-1,-6,7 f() = -3,-6,-1,8,-6,3,-1,-9,-9,3,-2,5,2,-2,-7,-1 g() = 24,75,71,-34,3,22,-45,23,245,25,52,25,-67,-96,96,31,55,36,29,-43,-7 PROCdeconv(g(), f(), x()) PRINT "deconv(g,f) = " FNprintarray(x()) x() -= h() : IF SUM(x()) <> 0 PRINT "Error!" PROCdeconv(g(), h(), y()) PRINT "deconv(g,h) = " FNprintarray(y()) y() -= f() : IF SUM(y()) <> 0 PRINT "Error!" END DEF PROCdeconv(g(), f(), RETURN h()) LOCAL f%, g%, i%, l%, n% f% = DIM(f(),1) + 1 g% = DIM(g(),1) + 1 DIM h(g% - f%) FOR n% = 0 TO g% - f% h(n%) = g(n%) IF n% < f% THEN l% = 0 ELSE l% = n% - f% + 1 IF n% THEN FOR i% = l% TO n% - 1 h(n%) -= h(i%) * f(n% - i%) NEXT ENDIF h(n%) /= f(0) NEXT n% ENDPROC DEF FNprintarray(a()) LOCAL i%, a$ FOR i% = 0 TO DIM(a(),1) a$ += STR$(a(i%)) + ", " NEXT = LEFT$(LEFT$(a$))