// polynomial for approximating sin(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 = 15;  // polynomial degree
a = -pi/2; // interval
b = pi/2;

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

// account for /x
deg = deg-1;

// f = sin(x)/x;
f = 1;
c = 1;
for i from 1 to 60 do { c = 2*i*(2*i + 1)*c; f = f + (-1)^i*x^(2*i)/c; };

// 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("abs error:", accurateinfnorm(sin(x)-x*poly(x), [a;b], 30));
print("in [",a,b,"]");
print("coeffs:");
for i from 0 to deg do coeff(poly,i);
