/* * poly.c * * Copyright (c) 1998-2018, Arm Limited. * SPDX-License-Identifier: MIT */ double __kernel_poly(const double *coeffs, int n, double x) { double result = coeffs[--n]; while ((n & ~0x6) != 0) /* Loop until n even and < 8 */ result = (result * x) + coeffs[--n]; switch (n) { case 6: result = (result * x) + coeffs[5]; result = (result * x) + coeffs[4]; case 4: result = (result * x) + coeffs[3]; result = (result * x) + coeffs[2]; case 2: result = (result * x) + coeffs[1]; result = (result * x) + coeffs[0]; } return result; }