23 lines
608 B
Plaintext
23 lines
608 B
Plaintext
def deconv($g; $f):
|
|
{ h: [range(0; ($g|length) - ($f|length) + 1) | 0] }
|
|
| reduce range ( 0;.h|length) as $n (.;
|
|
.h[$n] = $g[$n]
|
|
| (if $n >= ($f|length) then $n - ($f|length) + 1 else 0 end) as $lower
|
|
| .i = $lower
|
|
| until(.i >= $n;
|
|
.h[$n] -= .h[.i] * $f[$n - .i]
|
|
| .i += 1 )
|
|
| .h[$n] /= $f[0] )
|
|
| .h ;
|
|
|
|
### The tasks
|
|
|
|
def h: [-8, -9, -3, -1, -6, 7];
|
|
def f: [-3, -6, -1, 8, -6, 3, -1, -9, -9, 3, -2, 5, 2, -2, -7, -1];
|
|
def g: [24, 75, 71, -34, 3, 22, -45, 23, 245, 25, 52, 25, -67, -96, 96, 31, 55, 36, 29, -43, -7];
|
|
|
|
h,
|
|
deconv(g; f),
|
|
f,
|
|
deconv(g; h)
|