\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 -281574713299796459520 \lor \neg \left(t \le 3.422950075620730720749696840768394601184 \cdot 10^{-8}\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) - \log \left(e^{\frac{2}{t \cdot 3}}\right)\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 r389269 = x;
double r389270 = y;
double r389271 = 2.0;
double r389272 = z;
double r389273 = t;
double r389274 = a;
double r389275 = r389273 + r389274;
double r389276 = sqrt(r389275);
double r389277 = r389272 * r389276;
double r389278 = r389277 / r389273;
double r389279 = b;
double r389280 = c;
double r389281 = r389279 - r389280;
double r389282 = 5.0;
double r389283 = 6.0;
double r389284 = r389282 / r389283;
double r389285 = r389274 + r389284;
double r389286 = 3.0;
double r389287 = r389273 * r389286;
double r389288 = r389271 / r389287;
double r389289 = r389285 - r389288;
double r389290 = r389281 * r389289;
double r389291 = r389278 - r389290;
double r389292 = r389271 * r389291;
double r389293 = exp(r389292);
double r389294 = r389270 * r389293;
double r389295 = r389269 + r389294;
double r389296 = r389269 / r389295;
return r389296;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r389297 = t;
double r389298 = -2.8157471329979646e+20;
bool r389299 = r389297 <= r389298;
double r389300 = 3.422950075620731e-08;
bool r389301 = r389297 <= r389300;
double r389302 = !r389301;
bool r389303 = r389299 || r389302;
double r389304 = x;
double r389305 = y;
double r389306 = 2.0;
double r389307 = z;
double r389308 = cbrt(r389297);
double r389309 = r389308 * r389308;
double r389310 = r389307 / r389309;
double r389311 = a;
double r389312 = r389297 + r389311;
double r389313 = sqrt(r389312);
double r389314 = r389313 / r389308;
double r389315 = r389310 * r389314;
double r389316 = b;
double r389317 = c;
double r389318 = r389316 - r389317;
double r389319 = 5.0;
double r389320 = 6.0;
double r389321 = r389319 / r389320;
double r389322 = r389311 + r389321;
double r389323 = 3.0;
double r389324 = r389297 * r389323;
double r389325 = r389306 / r389324;
double r389326 = exp(r389325);
double r389327 = log(r389326);
double r389328 = r389322 - r389327;
double r389329 = r389318 * r389328;
double r389330 = r389315 - r389329;
double r389331 = r389306 * r389330;
double r389332 = exp(r389331);
double r389333 = r389305 * r389332;
double r389334 = r389304 + r389333;
double r389335 = r389304 / r389334;
double r389336 = r389307 * r389314;
double r389337 = r389311 - r389321;
double r389338 = r389337 * r389324;
double r389339 = r389336 * r389338;
double r389340 = r389311 * r389311;
double r389341 = r389321 * r389321;
double r389342 = r389340 - r389341;
double r389343 = r389342 * r389324;
double r389344 = r389337 * r389306;
double r389345 = r389343 - r389344;
double r389346 = r389318 * r389345;
double r389347 = r389309 * r389346;
double r389348 = r389339 - r389347;
double r389349 = r389309 * r389338;
double r389350 = r389348 / r389349;
double r389351 = r389306 * r389350;
double r389352 = exp(r389351);
double r389353 = r389305 * r389352;
double r389354 = r389304 + r389353;
double r389355 = r389304 / r389354;
double r389356 = r389303 ? r389335 : r389355;
return r389356;
}




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.3 |
|---|---|
| Target | 3.2 |
| Herbie | 3.0 |
if t < -2.8157471329979646e+20 or 3.422950075620731e-08 < t Initial program 3.1
rmApplied add-cube-cbrt3.1
Applied times-frac0.1
rmApplied add-log-exp0.3
if -2.8157471329979646e+20 < t < 3.422950075620731e-08Initial program 5.5
rmApplied add-cube-cbrt5.5
Applied times-frac5.7
rmApplied flip-+8.3
Applied frac-sub8.4
Applied associate-*r/8.5
Applied associate-*l/8.3
Applied frac-sub5.8
Final simplification3.0
herbie shell --seed 2019322
(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.1183266448915811e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.83333333333333337 c)) (* a b))))))) (if (< t 5.19658877065154709e-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)))))))))))