\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(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r378091 = x;
double r378092 = y;
double r378093 = 2.0;
double r378094 = z;
double r378095 = t;
double r378096 = a;
double r378097 = r378095 + r378096;
double r378098 = sqrt(r378097);
double r378099 = r378094 * r378098;
double r378100 = r378099 / r378095;
double r378101 = b;
double r378102 = c;
double r378103 = r378101 - r378102;
double r378104 = 5.0;
double r378105 = 6.0;
double r378106 = r378104 / r378105;
double r378107 = r378096 + r378106;
double r378108 = 3.0;
double r378109 = r378095 * r378108;
double r378110 = r378093 / r378109;
double r378111 = r378107 - r378110;
double r378112 = r378103 * r378111;
double r378113 = r378100 - r378112;
double r378114 = r378093 * r378113;
double r378115 = exp(r378114);
double r378116 = r378092 * r378115;
double r378117 = r378091 + r378116;
double r378118 = r378091 / r378117;
return r378118;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r378119 = x;
double r378120 = y;
double r378121 = 2.0;
double r378122 = z;
double r378123 = t;
double r378124 = cbrt(r378123);
double r378125 = r378124 * r378124;
double r378126 = r378122 / r378125;
double r378127 = a;
double r378128 = r378123 + r378127;
double r378129 = sqrt(r378128);
double r378130 = r378129 / r378124;
double r378131 = r378126 * r378130;
double r378132 = b;
double r378133 = c;
double r378134 = r378132 - r378133;
double r378135 = 5.0;
double r378136 = 6.0;
double r378137 = r378135 / r378136;
double r378138 = r378127 + r378137;
double r378139 = 3.0;
double r378140 = r378123 * r378139;
double r378141 = r378121 / r378140;
double r378142 = r378138 - r378141;
double r378143 = r378134 * r378142;
double r378144 = r378131 - r378143;
double r378145 = r378121 * r378144;
double r378146 = exp(r378145);
double r378147 = r378120 * r378146;
double r378148 = r378119 + r378147;
double r378149 = r378119 / r378148;
return r378149;
}




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
Results
| Original | 4.2 |
|---|---|
| Target | 3.1 |
| Herbie | 2.8 |
Initial program 4.2
rmApplied add-cube-cbrt4.2
Applied times-frac2.8
Final simplification2.8
herbie shell --seed 2020083
(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)))))))))))