// polynomial for approximating log(1+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 = 12; // poly degree
// |log(1+x)| > 0x1p-4 outside the interval
a = -0x1p-4;
b =  0x1.09p-4;

// find log(1+x)/x polynomial with minimal relative error
// (minimal relative error polynomial for log(1+x) is the same * x)
deg = deg-1; // because of /x

// f = log(1+x)/x; using taylor series
f = 0;
for i from 0 to 60 do { f = f + (-x)^i/(i+1); };

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

// first coeff is fixed, iteratively find optimal double prec coeffs
poly = 1;
for i from 1 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)/f(x), [a;b], 30));
print("in [",a,b,"]");
print("coeffs:");
for i from 0 to deg do coeff(poly,i);
