// polynomial for approximating e^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 = 4; // poly degree
N = 128; // table entries
b = log(2)/(2*N);  // interval
a = -b;

// find polynomial with minimal abs error

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

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

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