// polynomial used for __v_log(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 = 6; // poly degree
a = -0x1.fc1p-9;
b = 0x1.009p-8;

// 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);
