Horner's rule for polynomial evaluation: Difference between revisions

→‎{{header|C++}}: more idiomatic solution
(add scala example)
(→‎{{header|C++}}: more idiomatic solution)
Line 129:
return 0;
}</lang>
 
Yet another solution, which is more idiomatic in C++ and works on any bidirectional sequence:
 
<lang cpp>
#include <iostream>
 
template<typename BidirIter>
double horner(BidirIter begin, BidirIter end, double x)
{
double result = 0;
while (end != begin)
result = result*x + *--end;
return result;
}
 
int main()
{
double c[] = { -19, 7, -4, 6 };
std::cout << horner(c, c + 4, 3) << std::endl;
}
</lang>
 
=={{header|Clojure}}==
973

edits