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}}== |