Average Error: 0.0 → 0.0
Time: 20.8s
Precision: 64
\[x - \frac{2.307529999999999859028321225196123123169 + x \cdot 0.2706100000000000171951342053944244980812}{1 + \left(0.992290000000000005364597654988756403327 + x \cdot 0.04481000000000000260680366181986755691469\right) \cdot x}\]
\[x - \frac{2.307529999999999859028321225196123123169 + x \cdot 0.2706100000000000171951342053944244980812}{1 + \mathsf{fma}\left(\sqrt[3]{0.992290000000000005364597654988756403327} \cdot \sqrt[3]{0.992290000000000005364597654988756403327}, \sqrt[3]{0.992290000000000005364597654988756403327}, x \cdot 0.04481000000000000260680366181986755691469\right) \cdot x}\]
x - \frac{2.307529999999999859028321225196123123169 + x \cdot 0.2706100000000000171951342053944244980812}{1 + \left(0.992290000000000005364597654988756403327 + x \cdot 0.04481000000000000260680366181986755691469\right) \cdot x}
x - \frac{2.307529999999999859028321225196123123169 + x \cdot 0.2706100000000000171951342053944244980812}{1 + \mathsf{fma}\left(\sqrt[3]{0.992290000000000005364597654988756403327} \cdot \sqrt[3]{0.992290000000000005364597654988756403327}, \sqrt[3]{0.992290000000000005364597654988756403327}, x \cdot 0.04481000000000000260680366181986755691469\right) \cdot x}
double f(double x) {
        double r85646 = x;
        double r85647 = 2.30753;
        double r85648 = 0.27061;
        double r85649 = r85646 * r85648;
        double r85650 = r85647 + r85649;
        double r85651 = 1.0;
        double r85652 = 0.99229;
        double r85653 = 0.04481;
        double r85654 = r85646 * r85653;
        double r85655 = r85652 + r85654;
        double r85656 = r85655 * r85646;
        double r85657 = r85651 + r85656;
        double r85658 = r85650 / r85657;
        double r85659 = r85646 - r85658;
        return r85659;
}

double f(double x) {
        double r85660 = x;
        double r85661 = 2.30753;
        double r85662 = 0.27061;
        double r85663 = r85660 * r85662;
        double r85664 = r85661 + r85663;
        double r85665 = 1.0;
        double r85666 = 0.99229;
        double r85667 = cbrt(r85666);
        double r85668 = r85667 * r85667;
        double r85669 = 0.04481;
        double r85670 = r85660 * r85669;
        double r85671 = fma(r85668, r85667, r85670);
        double r85672 = r85671 * r85660;
        double r85673 = r85665 + r85672;
        double r85674 = r85664 / r85673;
        double r85675 = r85660 - r85674;
        return r85675;
}

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. Using strategy rm
  3. Applied add-cube-cbrt0.0

    \[\leadsto x - \frac{2.307529999999999859028321225196123123169 + x \cdot 0.2706100000000000171951342053944244980812}{1 + \left(\color{blue}{\left(\sqrt[3]{0.992290000000000005364597654988756403327} \cdot \sqrt[3]{0.992290000000000005364597654988756403327}\right) \cdot \sqrt[3]{0.992290000000000005364597654988756403327}} + x \cdot 0.04481000000000000260680366181986755691469\right) \cdot x}\]
  4. Applied fma-def0.0

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

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

Reproduce

herbie shell --seed 2019347 +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)))))