// polynomial for approximating cos(x)
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

deg = 8;   // polynomial degree
a = -pi/4; // interval
b = pi/4;

// find even polynomial with minimal abs error compared to cos(x)

f = cos(x);

// return p that minimizes |f(x) - poly(x) - x^d*p(x)|
approx = proc(poly,d) {
  return remez(f(x)-poly(x), deg-d, [a;b], x^d, 1e-10);
};

// first coeff is fixed, iteratively find optimal double prec coeffs
poly = 1;
for i from 1 to deg/2 do {
  p = roundcoefficients(approx(poly,2*i), [|D ...|]);
  poly = poly + x^(2*i)*coeff(p,0);
};

display = hexadecimal;
print("rel error:", accurateinfnorm(1-poly(x)/f(x), [a;b], 30));
print("abs error:", accurateinfnorm(f(x)-poly(x), [a;b], 30));
print("in [",a,b,"]");
print("coeffs:");
for i from 0 to deg do coeff(poly,i);
