\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 -1.55791072317737 \cdot 10^{-173} \lor \neg \left(t \le 3.5881784849603215 \cdot 10^{-236}\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)}}\\
\mathbf{else}:\\
\;\;\;\;\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)}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r548308 = x;
double r548309 = y;
double r548310 = 2.0;
double r548311 = z;
double r548312 = t;
double r548313 = a;
double r548314 = r548312 + r548313;
double r548315 = sqrt(r548314);
double r548316 = r548311 * r548315;
double r548317 = r548316 / r548312;
double r548318 = b;
double r548319 = c;
double r548320 = r548318 - r548319;
double r548321 = 5.0;
double r548322 = 6.0;
double r548323 = r548321 / r548322;
double r548324 = r548313 + r548323;
double r548325 = 3.0;
double r548326 = r548312 * r548325;
double r548327 = r548310 / r548326;
double r548328 = r548324 - r548327;
double r548329 = r548320 * r548328;
double r548330 = r548317 - r548329;
double r548331 = r548310 * r548330;
double r548332 = exp(r548331);
double r548333 = r548309 * r548332;
double r548334 = r548308 + r548333;
double r548335 = r548308 / r548334;
return r548335;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r548336 = t;
double r548337 = -1.55791072317737e-173;
bool r548338 = r548336 <= r548337;
double r548339 = 3.5881784849603215e-236;
bool r548340 = r548336 <= r548339;
double r548341 = !r548340;
bool r548342 = r548338 || r548341;
double r548343 = x;
double r548344 = y;
double r548345 = 2.0;
double r548346 = z;
double r548347 = cbrt(r548336);
double r548348 = r548347 * r548347;
double r548349 = r548346 / r548348;
double r548350 = a;
double r548351 = r548336 + r548350;
double r548352 = sqrt(r548351);
double r548353 = r548352 / r548347;
double r548354 = r548349 * r548353;
double r548355 = b;
double r548356 = c;
double r548357 = r548355 - r548356;
double r548358 = 5.0;
double r548359 = 6.0;
double r548360 = r548358 / r548359;
double r548361 = r548350 + r548360;
double r548362 = 3.0;
double r548363 = r548336 * r548362;
double r548364 = r548345 / r548363;
double r548365 = r548361 - r548364;
double r548366 = r548357 * r548365;
double r548367 = r548354 - r548366;
double r548368 = r548345 * r548367;
double r548369 = exp(r548368);
double r548370 = r548344 * r548369;
double r548371 = r548343 + r548370;
double r548372 = r548343 / r548371;
double r548373 = r548346 * r548353;
double r548374 = r548350 - r548360;
double r548375 = r548374 * r548363;
double r548376 = r548373 * r548375;
double r548377 = r548350 * r548350;
double r548378 = r548360 * r548360;
double r548379 = r548377 - r548378;
double r548380 = r548379 * r548363;
double r548381 = r548374 * r548345;
double r548382 = r548380 - r548381;
double r548383 = r548357 * r548382;
double r548384 = r548348 * r548383;
double r548385 = r548376 - r548384;
double r548386 = r548348 * r548375;
double r548387 = r548385 / r548386;
double r548388 = r548345 * r548387;
double r548389 = exp(r548388);
double r548390 = r548344 * r548389;
double r548391 = r548343 + r548390;
double r548392 = r548343 / r548391;
double r548393 = r548342 ? r548372 : r548392;
return r548393;
}




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.0 |
|---|---|
| Target | 3.1 |
| Herbie | 2.6 |
if t < -1.55791072317737e-173 or 3.5881784849603215e-236 < t Initial program 3.1
rmApplied add-cube-cbrt3.1
Applied times-frac1.6
if -1.55791072317737e-173 < t < 3.5881784849603215e-236Initial program 8.9
rmApplied add-cube-cbrt8.9
Applied times-frac9.1
rmApplied flip-+12.8
Applied frac-sub12.8
Applied associate-*r/12.8
Applied associate-*l/12.6
Applied frac-sub8.1
Final simplification2.6
herbie shell --seed 2020057
(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)))))))))))