Horner's rule for polynomial evaluation: Difference between revisions

Content added Content deleted
(Emacs Lisp: Improve formatting, use cl-lib)
Line 1,590: Line 1,590:
echo horner($coeff, $x), "\n";
echo horner($coeff, $x), "\n";
?></lang>
?></lang>

=={{header|Picat}}==
<lang Picat>go =>
horner([-19, 7, -4, 6], 3, V),
println(V),
horner2([-19, 7, -4, 6], 3, V2),
println(V2),
V3 = horner3([-19, 7, -4, 6], 3),
println(V3),
nl.

% Prolog style
horner([],_X,0).
horner([H|T],X,V) :-
horner(T,X,V1),
V = V1 * X + H.

% Iterative version
horner2(Coeff, X, V) =>
Acc = 0,
foreach(I in Coeff.length..-1..1)
Acc := Acc*X + Coeff[I]
end,
V = Acc.

% Functional approach
h3(X,A,B) = A+B*X.
horner3(Coeff, X) = fold($h3(X),0,Coeff.reverse()).</lang>

Output:
<pre>128
128
128</pre>



=={{header|PicoLisp}}==
=={{header|PicoLisp}}==