1 - \left(\frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot \left(0.254829592 + \frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot \left(-0.284496736 + \frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot \left(1.421413741 + \frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot \left(-1.453152027 + \frac{1}{1 + 0.3275911 \cdot \left|x\right|} \cdot 1.061405429\right)\right)\right)\right)\right) \cdot e^{-\left|x\right| \cdot \left|x\right|}\sqrt[3]{\left(\left(\frac{\frac{1.453152027}{e^{\left|x\right| \cdot \left|x\right|}}}{\left(\left(1 + \left|x\right| \cdot 0.3275911\right) \cdot \left(1 + \left|x\right| \cdot 0.3275911\right)\right) \cdot \left(\left(1 + \left|x\right| \cdot 0.3275911\right) \cdot \left(1 + \left|x\right| \cdot 0.3275911\right)\right)} - \frac{1.421413741}{\left(\left(\left(1 + \left|x\right| \cdot 0.3275911\right) \cdot \left(1 + \left|x\right| \cdot 0.3275911\right)\right) \cdot \left(1 + \left|x\right| \cdot 0.3275911\right)\right) \cdot e^{\left|x\right| \cdot \left|x\right|}}\right) - \left(\frac{\frac{1.061405429}{e^{\left|x\right| \cdot \left|x\right|}}}{{\left(1 + \left|x\right| \cdot 0.3275911\right)}^{5}} + \frac{0.254829592}{e^{\left|x\right| \cdot \left|x\right|} \cdot \left(1 + \left|x\right| \cdot 0.3275911\right)}\right)\right) + \left(1 + \frac{\frac{0.284496736}{e^{\left|x\right| \cdot \left|x\right|}}}{\left(1 + \left|x\right| \cdot 0.3275911\right) \cdot \left(1 + \left|x\right| \cdot 0.3275911\right)}\right)} \cdot \left(\sqrt[3]{\log \left(e^{1 - \frac{\frac{\frac{-0.284496736 + \frac{1.421413741 + \frac{-1.453152027 + \frac{1.061405429}{1 + \left|x\right| \cdot 0.3275911}}{1 + \left|x\right| \cdot 0.3275911}}{1 + \left|x\right| \cdot 0.3275911}}{1 + \left|x\right| \cdot 0.3275911} + 0.254829592}{1 + \left|x\right| \cdot 0.3275911}}{e^{\left|x\right| \cdot \left|x\right|}}}\right)} \cdot \sqrt[3]{\left(\left(\left(1 + \frac{1.453152027}{\left(\left(1 + \left|x\right| \cdot 0.3275911\right) \cdot \left(1 + \left|x\right| \cdot 0.3275911\right)\right) \cdot \left(e^{\left|x\right| \cdot \left|x\right|} \cdot \left(\left(1 + \left|x\right| \cdot 0.3275911\right) \cdot \left(1 + \left|x\right| \cdot 0.3275911\right)\right)\right)}\right) - \left(\frac{\frac{1.061405429}{e^{\left|x\right| \cdot \left|x\right|}}}{{\left(1 + \left|x\right| \cdot 0.3275911\right)}^{5}} + \frac{\frac{0.254829592}{e^{\left|x\right| \cdot \left|x\right|}}}{1 + \left|x\right| \cdot 0.3275911}\right)\right) - \frac{1.421413741}{\left(e^{\left|x\right| \cdot \left|x\right|} \cdot \left(\left(1 + \left|x\right| \cdot 0.3275911\right) \cdot \left(1 + \left|x\right| \cdot 0.3275911\right)\right)\right) \cdot \left(1 + \left|x\right| \cdot 0.3275911\right)}\right) + \frac{0.284496736}{e^{\left|x\right| \cdot \left|x\right|} \cdot \left(\left(1 + \left|x\right| \cdot 0.3275911\right) \cdot \left(1 + \left|x\right| \cdot 0.3275911\right)\right)}}\right)double f(double x) {
double r46451578 = 1.0;
double r46451579 = 0.3275911;
double r46451580 = x;
double r46451581 = fabs(r46451580);
double r46451582 = r46451579 * r46451581;
double r46451583 = r46451578 + r46451582;
double r46451584 = r46451578 / r46451583;
double r46451585 = 0.254829592;
double r46451586 = -0.284496736;
double r46451587 = 1.421413741;
double r46451588 = -1.453152027;
double r46451589 = 1.061405429;
double r46451590 = r46451584 * r46451589;
double r46451591 = r46451588 + r46451590;
double r46451592 = r46451584 * r46451591;
double r46451593 = r46451587 + r46451592;
double r46451594 = r46451584 * r46451593;
double r46451595 = r46451586 + r46451594;
double r46451596 = r46451584 * r46451595;
double r46451597 = r46451585 + r46451596;
double r46451598 = r46451584 * r46451597;
double r46451599 = r46451581 * r46451581;
double r46451600 = -r46451599;
double r46451601 = exp(r46451600);
double r46451602 = r46451598 * r46451601;
double r46451603 = r46451578 - r46451602;
return r46451603;
}
double f(double x) {
double r46451604 = 1.453152027;
double r46451605 = x;
double r46451606 = fabs(r46451605);
double r46451607 = r46451606 * r46451606;
double r46451608 = exp(r46451607);
double r46451609 = r46451604 / r46451608;
double r46451610 = 1.0;
double r46451611 = 0.3275911;
double r46451612 = r46451606 * r46451611;
double r46451613 = r46451610 + r46451612;
double r46451614 = r46451613 * r46451613;
double r46451615 = r46451614 * r46451614;
double r46451616 = r46451609 / r46451615;
double r46451617 = 1.421413741;
double r46451618 = r46451614 * r46451613;
double r46451619 = r46451618 * r46451608;
double r46451620 = r46451617 / r46451619;
double r46451621 = r46451616 - r46451620;
double r46451622 = 1.061405429;
double r46451623 = r46451622 / r46451608;
double r46451624 = 5.0;
double r46451625 = pow(r46451613, r46451624);
double r46451626 = r46451623 / r46451625;
double r46451627 = 0.254829592;
double r46451628 = r46451608 * r46451613;
double r46451629 = r46451627 / r46451628;
double r46451630 = r46451626 + r46451629;
double r46451631 = r46451621 - r46451630;
double r46451632 = 0.284496736;
double r46451633 = r46451632 / r46451608;
double r46451634 = r46451633 / r46451614;
double r46451635 = r46451610 + r46451634;
double r46451636 = r46451631 + r46451635;
double r46451637 = cbrt(r46451636);
double r46451638 = -0.284496736;
double r46451639 = -1.453152027;
double r46451640 = r46451622 / r46451613;
double r46451641 = r46451639 + r46451640;
double r46451642 = r46451641 / r46451613;
double r46451643 = r46451617 + r46451642;
double r46451644 = r46451643 / r46451613;
double r46451645 = r46451638 + r46451644;
double r46451646 = r46451645 / r46451613;
double r46451647 = r46451646 + r46451627;
double r46451648 = r46451647 / r46451613;
double r46451649 = r46451648 / r46451608;
double r46451650 = r46451610 - r46451649;
double r46451651 = exp(r46451650);
double r46451652 = log(r46451651);
double r46451653 = cbrt(r46451652);
double r46451654 = r46451608 * r46451614;
double r46451655 = r46451614 * r46451654;
double r46451656 = r46451604 / r46451655;
double r46451657 = r46451610 + r46451656;
double r46451658 = r46451627 / r46451608;
double r46451659 = r46451658 / r46451613;
double r46451660 = r46451626 + r46451659;
double r46451661 = r46451657 - r46451660;
double r46451662 = r46451654 * r46451613;
double r46451663 = r46451617 / r46451662;
double r46451664 = r46451661 - r46451663;
double r46451665 = r46451632 / r46451654;
double r46451666 = r46451664 + r46451665;
double r46451667 = cbrt(r46451666);
double r46451668 = r46451653 * r46451667;
double r46451669 = r46451637 * r46451668;
return r46451669;
}



Bits error versus x
Results
Initial program 14.0
Simplified14.0
rmApplied add-log-exp14.0
Applied add-log-exp14.0
Applied diff-log14.7
Simplified14.0
rmApplied add-cube-cbrt14.0
Taylor expanded around 0 14.3
Simplified10.5
Taylor expanded around -inf 10.0
Simplified10.0
Final simplification10.0
herbie shell --seed 2019125
(FPCore (x)
:name "Jmat.Real.erf"
(- 1 (* (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) (+ 0.254829592 (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) (+ -0.284496736 (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) (+ 1.421413741 (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) (+ -1.453152027 (* (/ 1 (+ 1 (* 0.3275911 (fabs x)))) 1.061405429))))))))) (exp (- (* (fabs x) (fabs x)))))))