| 53 | |
| 54 | template <class T_, class U> |
| 55 | inline U evaluate_polynomial(const T_* poly, U const& z, std::size_t count) { |
| 56 | megdnn_assert(count > 0); |
| 57 | U sum = static_cast<U>(poly[count - 1]); |
| 58 | for (int i = static_cast<int>(count) - 2; i >= 0; --i) { |
| 59 | sum *= z; |
| 60 | sum += static_cast<U>(poly[i]); |
| 61 | } |
| 62 | return sum; |
| 63 | } |
| 64 | |
| 65 | template <std::size_t N, class T, class V> |
| 66 | inline V evaluate_polynomial(const T (&a)[N], const V& val) { |