\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(c - b, \frac{5.0}{6.0} - \left(\frac{\frac{2.0}{t}}{3.0} - a\right), \frac{\sqrt{a + t} \cdot \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)}{\frac{t}{\sqrt[3]{z}}}\right)}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r17506225 = x;
double r17506226 = y;
double r17506227 = 2.0;
double r17506228 = z;
double r17506229 = t;
double r17506230 = a;
double r17506231 = r17506229 + r17506230;
double r17506232 = sqrt(r17506231);
double r17506233 = r17506228 * r17506232;
double r17506234 = r17506233 / r17506229;
double r17506235 = b;
double r17506236 = c;
double r17506237 = r17506235 - r17506236;
double r17506238 = 5.0;
double r17506239 = 6.0;
double r17506240 = r17506238 / r17506239;
double r17506241 = r17506230 + r17506240;
double r17506242 = 3.0;
double r17506243 = r17506229 * r17506242;
double r17506244 = r17506227 / r17506243;
double r17506245 = r17506241 - r17506244;
double r17506246 = r17506237 * r17506245;
double r17506247 = r17506234 - r17506246;
double r17506248 = r17506227 * r17506247;
double r17506249 = exp(r17506248);
double r17506250 = r17506226 * r17506249;
double r17506251 = r17506225 + r17506250;
double r17506252 = r17506225 / r17506251;
return r17506252;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r17506253 = x;
double r17506254 = y;
double r17506255 = 2.0;
double r17506256 = c;
double r17506257 = b;
double r17506258 = r17506256 - r17506257;
double r17506259 = 5.0;
double r17506260 = 6.0;
double r17506261 = r17506259 / r17506260;
double r17506262 = t;
double r17506263 = r17506255 / r17506262;
double r17506264 = 3.0;
double r17506265 = r17506263 / r17506264;
double r17506266 = a;
double r17506267 = r17506265 - r17506266;
double r17506268 = r17506261 - r17506267;
double r17506269 = r17506266 + r17506262;
double r17506270 = sqrt(r17506269);
double r17506271 = z;
double r17506272 = cbrt(r17506271);
double r17506273 = r17506272 * r17506272;
double r17506274 = r17506270 * r17506273;
double r17506275 = r17506262 / r17506272;
double r17506276 = r17506274 / r17506275;
double r17506277 = fma(r17506258, r17506268, r17506276);
double r17506278 = r17506255 * r17506277;
double r17506279 = exp(r17506278);
double r17506280 = fma(r17506254, r17506279, r17506253);
double r17506281 = r17506253 / r17506280;
return r17506281;
}




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 | 4.0 |
|---|---|
| Target | 3.2 |
| Herbie | 1.9 |
Initial program 4.0
Simplified1.9
rmApplied add-cube-cbrt1.9
Applied *-un-lft-identity1.9
Applied times-frac1.9
Applied associate-/r*1.9
Simplified1.9
Final simplification1.9
herbie shell --seed 2019168 +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)))))))))))