C++程序  |  26行  |  604 B

/*
 * 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;
}