39 lines
1.0 KiB
Plaintext
39 lines
1.0 KiB
Plaintext
*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$))
|