\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\frac{x}{x + y \cdot e^{2 \cdot \left(\mathsf{fma}\left(z, \frac{\sqrt{t + a}}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right) + \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right) \cdot \left(\left(-\left(b - c\right)\right) + \left(b - c\right)\right)\right)}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r353804 = x;
double r353805 = y;
double r353806 = 2.0;
double r353807 = z;
double r353808 = t;
double r353809 = a;
double r353810 = r353808 + r353809;
double r353811 = sqrt(r353810);
double r353812 = r353807 * r353811;
double r353813 = r353812 / r353808;
double r353814 = b;
double r353815 = c;
double r353816 = r353814 - r353815;
double r353817 = 5.0;
double r353818 = 6.0;
double r353819 = r353817 / r353818;
double r353820 = r353809 + r353819;
double r353821 = 3.0;
double r353822 = r353808 * r353821;
double r353823 = r353806 / r353822;
double r353824 = r353820 - r353823;
double r353825 = r353816 * r353824;
double r353826 = r353813 - r353825;
double r353827 = r353806 * r353826;
double r353828 = exp(r353827);
double r353829 = r353805 * r353828;
double r353830 = r353804 + r353829;
double r353831 = r353804 / r353830;
return r353831;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r353832 = x;
double r353833 = y;
double r353834 = 2.0;
double r353835 = z;
double r353836 = t;
double r353837 = a;
double r353838 = r353836 + r353837;
double r353839 = sqrt(r353838);
double r353840 = r353839 / r353836;
double r353841 = b;
double r353842 = c;
double r353843 = r353841 - r353842;
double r353844 = 5.0;
double r353845 = 6.0;
double r353846 = r353844 / r353845;
double r353847 = r353837 + r353846;
double r353848 = 3.0;
double r353849 = r353836 * r353848;
double r353850 = r353834 / r353849;
double r353851 = r353847 - r353850;
double r353852 = r353843 * r353851;
double r353853 = -r353852;
double r353854 = fma(r353835, r353840, r353853);
double r353855 = -r353843;
double r353856 = r353855 + r353843;
double r353857 = r353851 * r353856;
double r353858 = r353854 + r353857;
double r353859 = r353834 * r353858;
double r353860 = exp(r353859);
double r353861 = r353833 * r353860;
double r353862 = r353832 + r353861;
double r353863 = r353832 / r353862;
return r353863;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c
| Original | 3.6 |
|---|---|
| Target | 2.7 |
| Herbie | 2.1 |
Initial program 3.6
rmApplied *-un-lft-identity3.6
Applied times-frac3.2
Applied prod-diff22.0
Simplified22.0
Simplified2.1
Final simplification2.1
herbie shell --seed 2020056 +o rules:numerics
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:precision binary64
:herbie-target
(if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2 (/ (- (* (* z (sqrt (+ t a))) (* (* 3 t) (- a (/ 5 6)))) (* (- (* (+ (/ 5 6) a) (* 3 t)) 2) (* (- a (/ 5 6)) (* (- b c) t)))) (* (* (* t t) 3) (- a (/ 5 6))))))))) (/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3))))))))))))
(/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3)))))))))))