\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(\log \left(e^{\mathsf{fma}\left(z \cdot \sqrt{t + a}, \frac{1}{t}, -\left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right) \cdot \left(b - c\right)\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 r341258 = x;
double r341259 = y;
double r341260 = 2.0;
double r341261 = z;
double r341262 = t;
double r341263 = a;
double r341264 = r341262 + r341263;
double r341265 = sqrt(r341264);
double r341266 = r341261 * r341265;
double r341267 = r341266 / r341262;
double r341268 = b;
double r341269 = c;
double r341270 = r341268 - r341269;
double r341271 = 5.0;
double r341272 = 6.0;
double r341273 = r341271 / r341272;
double r341274 = r341263 + r341273;
double r341275 = 3.0;
double r341276 = r341262 * r341275;
double r341277 = r341260 / r341276;
double r341278 = r341274 - r341277;
double r341279 = r341270 * r341278;
double r341280 = r341267 - r341279;
double r341281 = r341260 * r341280;
double r341282 = exp(r341281);
double r341283 = r341259 * r341282;
double r341284 = r341258 + r341283;
double r341285 = r341258 / r341284;
return r341285;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r341286 = x;
double r341287 = y;
double r341288 = 2.0;
double r341289 = z;
double r341290 = t;
double r341291 = a;
double r341292 = r341290 + r341291;
double r341293 = sqrt(r341292);
double r341294 = r341289 * r341293;
double r341295 = 1.0;
double r341296 = r341295 / r341290;
double r341297 = 5.0;
double r341298 = 6.0;
double r341299 = r341297 / r341298;
double r341300 = r341291 + r341299;
double r341301 = 3.0;
double r341302 = r341290 * r341301;
double r341303 = r341288 / r341302;
double r341304 = r341300 - r341303;
double r341305 = b;
double r341306 = c;
double r341307 = r341305 - r341306;
double r341308 = r341304 * r341307;
double r341309 = -r341308;
double r341310 = fma(r341294, r341296, r341309);
double r341311 = exp(r341310);
double r341312 = log(r341311);
double r341313 = -r341307;
double r341314 = r341313 + r341307;
double r341315 = r341304 * r341314;
double r341316 = r341312 + r341315;
double r341317 = r341288 * r341316;
double r341318 = exp(r341317);
double r341319 = r341287 * r341318;
double r341320 = r341286 + r341319;
double r341321 = r341286 / r341320;
return r341321;
}




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.8 |
|---|---|
| Target | 3.1 |
| Herbie | 2.7 |
Initial program 3.8
rmApplied div-inv3.8
Applied prod-diff22.5
Simplified2.7
rmApplied add-log-exp2.7
Final simplification2.7
herbie shell --seed 2020001 +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)))))))))))