\frac{x}{x + y \cdot e^{2.0 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5.0}{6.0}\right) - \frac{2.0}{t \cdot 3.0}\right)\right)}}\frac{x}{\mathsf{fma}\left(y, e^{2.0 \cdot \mathsf{fma}\left(\frac{5.0}{6.0} - \left(\frac{\frac{2.0}{t}}{3.0} - a\right), c - b, \left(\left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right) \cdot \sqrt{a + t}\right) \cdot \frac{\sqrt[3]{z}}{t}\right)}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r20514176 = x;
double r20514177 = y;
double r20514178 = 2.0;
double r20514179 = z;
double r20514180 = t;
double r20514181 = a;
double r20514182 = r20514180 + r20514181;
double r20514183 = sqrt(r20514182);
double r20514184 = r20514179 * r20514183;
double r20514185 = r20514184 / r20514180;
double r20514186 = b;
double r20514187 = c;
double r20514188 = r20514186 - r20514187;
double r20514189 = 5.0;
double r20514190 = 6.0;
double r20514191 = r20514189 / r20514190;
double r20514192 = r20514181 + r20514191;
double r20514193 = 3.0;
double r20514194 = r20514180 * r20514193;
double r20514195 = r20514178 / r20514194;
double r20514196 = r20514192 - r20514195;
double r20514197 = r20514188 * r20514196;
double r20514198 = r20514185 - r20514197;
double r20514199 = r20514178 * r20514198;
double r20514200 = exp(r20514199);
double r20514201 = r20514177 * r20514200;
double r20514202 = r20514176 + r20514201;
double r20514203 = r20514176 / r20514202;
return r20514203;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r20514204 = x;
double r20514205 = y;
double r20514206 = 2.0;
double r20514207 = 5.0;
double r20514208 = 6.0;
double r20514209 = r20514207 / r20514208;
double r20514210 = t;
double r20514211 = r20514206 / r20514210;
double r20514212 = 3.0;
double r20514213 = r20514211 / r20514212;
double r20514214 = a;
double r20514215 = r20514213 - r20514214;
double r20514216 = r20514209 - r20514215;
double r20514217 = c;
double r20514218 = b;
double r20514219 = r20514217 - r20514218;
double r20514220 = z;
double r20514221 = cbrt(r20514220);
double r20514222 = r20514221 * r20514221;
double r20514223 = r20514214 + r20514210;
double r20514224 = sqrt(r20514223);
double r20514225 = r20514222 * r20514224;
double r20514226 = r20514221 / r20514210;
double r20514227 = r20514225 * r20514226;
double r20514228 = fma(r20514216, r20514219, r20514227);
double r20514229 = r20514206 * r20514228;
double r20514230 = exp(r20514229);
double r20514231 = fma(r20514205, r20514230, r20514204);
double r20514232 = r20514204 / r20514231;
return r20514232;
}




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 | 3.1 |
| Herbie | 1.7 |
Initial program 3.6
Simplified1.7
rmApplied *-un-lft-identity1.7
Applied add-cube-cbrt1.7
Applied times-frac1.7
Applied associate-*r*1.7
Simplified1.7
Final simplification1.7
herbie shell --seed 2019163 +o rules:numerics
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:herbie-target
(if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2.0 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2.0 (/ (- (* (* z (sqrt (+ t a))) (* (* 3.0 t) (- a (/ 5.0 6.0)))) (* (- (* (+ (/ 5.0 6.0) a) (* 3.0 t)) 2.0) (* (- a (/ 5.0 6.0)) (* (- b c) t)))) (* (* (* t t) 3.0) (- a (/ 5.0 6.0))))))))) (/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))))))))))
(/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))