> | Polinomio := proc(c::float, coef::list) local potencia, i, y; potencia := 1; y := coef[1]; for i from 2 to nops(coef) do potencia := potencia*c; y := y + coef[i] * potencia; od; |
RETURN(y);
end:
> | Horner := proc(c::float, coef::list) local i, y; y := coef[nops(coef)]; for i from nops(coef)-1 by -1 to 1 do y := y * c + coef[i]; od; RETURN(y); end: |
> | p2000 := randpoly(x,degree=8000,dense): |
> | q2000 := subs(x=1,convert(p2000,list)): |
> | ha := time(): Polinomio(104567980000000.0, q2000); time() - ha; |
> | ha := time(): Horner(104567980000000., q2000); time() - ha; |
> |