\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)}}\begin{array}{l}
\mathbf{if}\;t \le -2.097264455817546718684511622823663412103 \cdot 10^{-14}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z}{\sqrt[3]{t} \cdot \log \left(e^{\sqrt[3]{t}}\right)} \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)}}\\
\mathbf{elif}\;t \le 1.207880239692675796069901468393483526346 \cdot 10^{-104}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{\left(z \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot \left(\left(b - c\right) \cdot \left(\left(a \cdot a - \frac{5}{6} \cdot \frac{5}{6}\right) \cdot \left(t \cdot 3\right) - \left(a - \frac{5}{6}\right) \cdot 2\right)\right)}{\left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right)}}}\\
\mathbf{else}:\\
\;\;\;\;\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) - {\left({\left(\frac{2}{t \cdot 3}\right)}^{3}\right)}^{\frac{1}{3}}\right)\right)}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r651310 = x;
double r651311 = y;
double r651312 = 2.0;
double r651313 = z;
double r651314 = t;
double r651315 = a;
double r651316 = r651314 + r651315;
double r651317 = sqrt(r651316);
double r651318 = r651313 * r651317;
double r651319 = r651318 / r651314;
double r651320 = b;
double r651321 = c;
double r651322 = r651320 - r651321;
double r651323 = 5.0;
double r651324 = 6.0;
double r651325 = r651323 / r651324;
double r651326 = r651315 + r651325;
double r651327 = 3.0;
double r651328 = r651314 * r651327;
double r651329 = r651312 / r651328;
double r651330 = r651326 - r651329;
double r651331 = r651322 * r651330;
double r651332 = r651319 - r651331;
double r651333 = r651312 * r651332;
double r651334 = exp(r651333);
double r651335 = r651311 * r651334;
double r651336 = r651310 + r651335;
double r651337 = r651310 / r651336;
return r651337;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r651338 = t;
double r651339 = -2.0972644558175467e-14;
bool r651340 = r651338 <= r651339;
double r651341 = x;
double r651342 = y;
double r651343 = 2.0;
double r651344 = z;
double r651345 = cbrt(r651338);
double r651346 = exp(r651345);
double r651347 = log(r651346);
double r651348 = r651345 * r651347;
double r651349 = r651344 / r651348;
double r651350 = a;
double r651351 = r651338 + r651350;
double r651352 = sqrt(r651351);
double r651353 = r651352 / r651345;
double r651354 = r651349 * r651353;
double r651355 = b;
double r651356 = c;
double r651357 = r651355 - r651356;
double r651358 = 5.0;
double r651359 = 6.0;
double r651360 = r651358 / r651359;
double r651361 = r651350 + r651360;
double r651362 = 3.0;
double r651363 = r651338 * r651362;
double r651364 = r651343 / r651363;
double r651365 = r651361 - r651364;
double r651366 = r651357 * r651365;
double r651367 = r651354 - r651366;
double r651368 = r651343 * r651367;
double r651369 = exp(r651368);
double r651370 = r651342 * r651369;
double r651371 = r651341 + r651370;
double r651372 = r651341 / r651371;
double r651373 = 1.2078802396926758e-104;
bool r651374 = r651338 <= r651373;
double r651375 = r651344 * r651353;
double r651376 = r651350 - r651360;
double r651377 = r651376 * r651363;
double r651378 = r651375 * r651377;
double r651379 = r651345 * r651345;
double r651380 = r651350 * r651350;
double r651381 = r651360 * r651360;
double r651382 = r651380 - r651381;
double r651383 = r651382 * r651363;
double r651384 = r651376 * r651343;
double r651385 = r651383 - r651384;
double r651386 = r651357 * r651385;
double r651387 = r651379 * r651386;
double r651388 = r651378 - r651387;
double r651389 = r651379 * r651377;
double r651390 = r651388 / r651389;
double r651391 = r651343 * r651390;
double r651392 = exp(r651391);
double r651393 = r651342 * r651392;
double r651394 = r651341 + r651393;
double r651395 = r651341 / r651394;
double r651396 = r651344 * r651352;
double r651397 = r651396 / r651338;
double r651398 = 3.0;
double r651399 = pow(r651364, r651398);
double r651400 = 0.3333333333333333;
double r651401 = pow(r651399, r651400);
double r651402 = r651361 - r651401;
double r651403 = r651357 * r651402;
double r651404 = r651397 - r651403;
double r651405 = r651343 * r651404;
double r651406 = exp(r651405);
double r651407 = r651342 * r651406;
double r651408 = r651341 + r651407;
double r651409 = r651341 / r651408;
double r651410 = r651374 ? r651395 : r651409;
double r651411 = r651340 ? r651372 : r651410;
return r651411;
}




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 | 3.9 |
|---|---|
| Target | 3.1 |
| Herbie | 4.1 |
if t < -2.0972644558175467e-14Initial program 4.1
rmApplied add-cube-cbrt4.1
Applied times-frac0.6
rmApplied add-log-exp3.9
if -2.0972644558175467e-14 < t < 1.2078802396926758e-104Initial program 6.5
rmApplied add-cube-cbrt6.5
Applied times-frac6.7
rmApplied flip-+10.0
Applied frac-sub10.1
Applied associate-*r/10.1
Applied associate-*l/9.9
Applied frac-sub7.0
if 1.2078802396926758e-104 < t Initial program 2.3
rmApplied add-cbrt-cube2.3
Applied add-cbrt-cube2.3
Applied cbrt-unprod2.3
Applied add-cbrt-cube2.3
Applied cbrt-undiv2.3
Simplified2.3
rmApplied pow1/32.3
Final simplification4.1
herbie shell --seed 2019353
(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)))))))))))