Average Error: 0.0 → 0.0
Time: 3.6s
Precision: 64
\[x - \frac{2.30753 + x \cdot 0.27061000000000002}{1 + \left(0.992290000000000005 + x \cdot 0.044810000000000003\right) \cdot x}\]
\[x - \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{2.30753 + x \cdot 0.27061000000000002}{1 + \left(0.992290000000000005 + x \cdot 0.044810000000000003\right) \cdot x}\right)\right)\]
x - \frac{2.30753 + x \cdot 0.27061000000000002}{1 + \left(0.992290000000000005 + x \cdot 0.044810000000000003\right) \cdot x}
x - \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{2.30753 + x \cdot 0.27061000000000002}{1 + \left(0.992290000000000005 + x \cdot 0.044810000000000003\right) \cdot x}\right)\right)
double f(double x) {
        double r134323 = x;
        double r134324 = 2.30753;
        double r134325 = 0.27061;
        double r134326 = r134323 * r134325;
        double r134327 = r134324 + r134326;
        double r134328 = 1.0;
        double r134329 = 0.99229;
        double r134330 = 0.04481;
        double r134331 = r134323 * r134330;
        double r134332 = r134329 + r134331;
        double r134333 = r134332 * r134323;
        double r134334 = r134328 + r134333;
        double r134335 = r134327 / r134334;
        double r134336 = r134323 - r134335;
        return r134336;
}

double f(double x) {
        double r134337 = x;
        double r134338 = 2.30753;
        double r134339 = 0.27061;
        double r134340 = r134337 * r134339;
        double r134341 = r134338 + r134340;
        double r134342 = 1.0;
        double r134343 = 0.99229;
        double r134344 = 0.04481;
        double r134345 = r134337 * r134344;
        double r134346 = r134343 + r134345;
        double r134347 = r134346 * r134337;
        double r134348 = r134342 + r134347;
        double r134349 = r134341 / r134348;
        double r134350 = log1p(r134349);
        double r134351 = expm1(r134350);
        double r134352 = r134337 - r134351;
        return r134352;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.0

    \[x - \frac{2.30753 + x \cdot 0.27061000000000002}{1 + \left(0.992290000000000005 + x \cdot 0.044810000000000003\right) \cdot x}\]
  2. Using strategy rm
  3. Applied expm1-log1p-u0.0

    \[\leadsto x - \color{blue}{\mathsf{expm1}\left(\mathsf{log1p}\left(\frac{2.30753 + x \cdot 0.27061000000000002}{1 + \left(0.992290000000000005 + x \cdot 0.044810000000000003\right) \cdot x}\right)\right)}\]
  4. Final simplification0.0

    \[\leadsto x - \mathsf{expm1}\left(\mathsf{log1p}\left(\frac{2.30753 + x \cdot 0.27061000000000002}{1 + \left(0.992290000000000005 + x \cdot 0.044810000000000003\right) \cdot x}\right)\right)\]

Reproduce

herbie shell --seed 2020081 +o rules:numerics
(FPCore (x)
  :name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, D"
  :precision binary64
  (- x (/ (+ 2.30753 (* x 0.27061)) (+ 1 (* (+ 0.99229 (* x 0.04481)) x)))))