Average Error: 0.0 → 0.0
Time: 15.6s
Precision: 64
\[x - \frac{2.307529999999999859028321225196123123169 + x \cdot 0.2706100000000000171951342053944244980812}{1 + \left(0.992290000000000005364597654988756403327 + x \cdot 0.04481000000000000260680366181986755691469\right) \cdot x}\]
\[x - \mathsf{fma}\left(x, 0.2706100000000000171951342053944244980812, 2.307529999999999859028321225196123123169\right) \cdot \frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(0.04481000000000000260680366181986755691469, x, 0.992290000000000005364597654988756403327\right), x, 1\right)}\]
x - \frac{2.307529999999999859028321225196123123169 + x \cdot 0.2706100000000000171951342053944244980812}{1 + \left(0.992290000000000005364597654988756403327 + x \cdot 0.04481000000000000260680366181986755691469\right) \cdot x}
x - \mathsf{fma}\left(x, 0.2706100000000000171951342053944244980812, 2.307529999999999859028321225196123123169\right) \cdot \frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(0.04481000000000000260680366181986755691469, x, 0.992290000000000005364597654988756403327\right), x, 1\right)}
double f(double x) {
        double r53506 = x;
        double r53507 = 2.30753;
        double r53508 = 0.27061;
        double r53509 = r53506 * r53508;
        double r53510 = r53507 + r53509;
        double r53511 = 1.0;
        double r53512 = 0.99229;
        double r53513 = 0.04481;
        double r53514 = r53506 * r53513;
        double r53515 = r53512 + r53514;
        double r53516 = r53515 * r53506;
        double r53517 = r53511 + r53516;
        double r53518 = r53510 / r53517;
        double r53519 = r53506 - r53518;
        return r53519;
}

double f(double x) {
        double r53520 = x;
        double r53521 = 0.27061;
        double r53522 = 2.30753;
        double r53523 = fma(r53520, r53521, r53522);
        double r53524 = 1.0;
        double r53525 = 0.04481;
        double r53526 = 0.99229;
        double r53527 = fma(r53525, r53520, r53526);
        double r53528 = 1.0;
        double r53529 = fma(r53527, r53520, r53528);
        double r53530 = r53524 / r53529;
        double r53531 = r53523 * r53530;
        double r53532 = r53520 - r53531;
        return r53532;
}

Error

Bits error versus x

Derivation

  1. Initial program 0.0

    \[x - \frac{2.307529999999999859028321225196123123169 + x \cdot 0.2706100000000000171951342053944244980812}{1 + \left(0.992290000000000005364597654988756403327 + x \cdot 0.04481000000000000260680366181986755691469\right) \cdot x}\]
  2. Simplified0.0

    \[\leadsto \color{blue}{x - \frac{\mathsf{fma}\left(x, 0.2706100000000000171951342053944244980812, 2.307529999999999859028321225196123123169\right)}{\mathsf{fma}\left(\mathsf{fma}\left(0.04481000000000000260680366181986755691469, x, 0.992290000000000005364597654988756403327\right), x, 1\right)}}\]
  3. Using strategy rm
  4. Applied div-inv0.0

    \[\leadsto x - \color{blue}{\mathsf{fma}\left(x, 0.2706100000000000171951342053944244980812, 2.307529999999999859028321225196123123169\right) \cdot \frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(0.04481000000000000260680366181986755691469, x, 0.992290000000000005364597654988756403327\right), x, 1\right)}}\]
  5. Final simplification0.0

    \[\leadsto x - \mathsf{fma}\left(x, 0.2706100000000000171951342053944244980812, 2.307529999999999859028321225196123123169\right) \cdot \frac{1}{\mathsf{fma}\left(\mathsf{fma}\left(0.04481000000000000260680366181986755691469, x, 0.992290000000000005364597654988756403327\right), x, 1\right)}\]

Reproduce

herbie shell --seed 2019235 +o rules:numerics
(FPCore (x)
  :name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, D"
  :precision binary64
  (- x (/ (+ 2.30753 (* x 0.27061000000000002)) (+ 1 (* (+ 0.992290000000000005 (* x 0.044810000000000003)) x)))))