Polynomial synthetic division: Difference between revisions

Added Perl example
m (→‎{{header|Perl 6}}: corrected hidden precedence bug)
(Added Perl example)
Line 140:
[1, 0, 0, 0, -2] / [1, 1, 1, 1] = [1, -1], remainder [0, 0, -1]
</pre>
 
=={{header|Perl}}==
{{trans|Perl 6}}
<lang perl>sub synthetic_division {
my($numerator,$denominator) = @_;
my @result = @$numerator;
my $end = @$denominator-1;
 
for my $i (0 .. @$numerator-($end+1)) {
next unless $result[$i];
$result[$i] /= @$denominator[0];
$result[$i+$_] -= @$denominator[$_] * $result[$i] for 1 .. $end;
}
 
return join(' ', @result[0 .. @result-($end+1)]), join(' ', @result[-$end .. -1]);
}
 
sub poly_divide {
*n = shift; *d = shift;
my($quotient,$remainder)= synthetic_division( \@n, \@d );
"[@n] / [@d] = [$quotient], remainder [$remainder]\n";
}
 
print poly_divide([1, -12, 0, -42], [1, -3]);
print poly_divide([1, 0, 0, 0, -2], [1, 1, 1, 1]);</lang>
{{out}}
<pre>[1 -12 0 -42] / [1 -3] = [1 -9 -27], remainder [-123]
[1 0 0 0 -2] / [1 1 1 1] = [1 -1], remainder [0 0 -1]</pre>
 
=={{header|Perl 6}}==
2,392

edits