\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 \frac{-3044132996692187}{1.852673427797059126777135760139006525652 \cdot 10^{78}} \lor \neg \left(t \le \frac{8271322624711839}{1.774508604237321510130185077851573570199 \cdot 10^{131}}\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 \left(\sqrt[3]{t} \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)\right)\right)}{\sqrt[3]{t} \cdot \left(\sqrt[3]{t} \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right)\right)}}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b, double c) {
double r326246 = x;
double r326247 = y;
double r326248 = 2.0;
double r326249 = z;
double r326250 = t;
double r326251 = a;
double r326252 = r326250 + r326251;
double r326253 = sqrt(r326252);
double r326254 = r326249 * r326253;
double r326255 = r326254 / r326250;
double r326256 = b;
double r326257 = c;
double r326258 = r326256 - r326257;
double r326259 = 5.0;
double r326260 = 6.0;
double r326261 = r326259 / r326260;
double r326262 = r326251 + r326261;
double r326263 = 3.0;
double r326264 = r326250 * r326263;
double r326265 = r326248 / r326264;
double r326266 = r326262 - r326265;
double r326267 = r326258 * r326266;
double r326268 = r326255 - r326267;
double r326269 = r326248 * r326268;
double r326270 = exp(r326269);
double r326271 = r326247 * r326270;
double r326272 = r326246 + r326271;
double r326273 = r326246 / r326272;
return r326273;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r326274 = t;
double r326275 = -3044132996692187.0;
double r326276 = 1.8526734277970591e+78;
double r326277 = r326275 / r326276;
bool r326278 = r326274 <= r326277;
double r326279 = 8271322624711839.0;
double r326280 = 1.7745086042373215e+131;
double r326281 = r326279 / r326280;
bool r326282 = r326274 <= r326281;
double r326283 = !r326282;
bool r326284 = r326278 || r326283;
double r326285 = x;
double r326286 = y;
double r326287 = 2.0;
double r326288 = z;
double r326289 = cbrt(r326274);
double r326290 = r326289 * r326289;
double r326291 = r326288 / r326290;
double r326292 = a;
double r326293 = r326274 + r326292;
double r326294 = sqrt(r326293);
double r326295 = r326294 / r326289;
double r326296 = r326291 * r326295;
double r326297 = b;
double r326298 = c;
double r326299 = r326297 - r326298;
double r326300 = 5.0;
double r326301 = 6.0;
double r326302 = r326300 / r326301;
double r326303 = r326292 + r326302;
double r326304 = 3.0;
double r326305 = r326274 * r326304;
double r326306 = r326287 / r326305;
double r326307 = r326303 - r326306;
double r326308 = r326299 * r326307;
double r326309 = r326296 - r326308;
double r326310 = r326287 * r326309;
double r326311 = exp(r326310);
double r326312 = r326286 * r326311;
double r326313 = r326285 + r326312;
double r326314 = r326285 / r326313;
double r326315 = r326288 * r326295;
double r326316 = r326292 - r326302;
double r326317 = r326316 * r326305;
double r326318 = r326315 * r326317;
double r326319 = r326292 * r326292;
double r326320 = r326302 * r326302;
double r326321 = r326319 - r326320;
double r326322 = r326321 * r326305;
double r326323 = r326316 * r326287;
double r326324 = r326322 - r326323;
double r326325 = r326299 * r326324;
double r326326 = r326289 * r326325;
double r326327 = r326289 * r326326;
double r326328 = -r326327;
double r326329 = r326318 + r326328;
double r326330 = r326289 * r326317;
double r326331 = r326289 * r326330;
double r326332 = r326329 / r326331;
double r326333 = r326287 * r326332;
double r326334 = exp(r326333);
double r326335 = r326286 * r326334;
double r326336 = r326285 + r326335;
double r326337 = r326285 / r326336;
double r326338 = r326284 ? r326314 : r326337;
return r326338;
}




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.7 |
|---|---|
| Target | 2.8 |
| Herbie | 2.6 |
if t < -1.6431028539724054e-63 or 4.661190486741443e-116 < t Initial program 2.3
rmApplied add-cube-cbrt2.3
Applied times-frac0.5
if -1.6431028539724054e-63 < t < 4.661190486741443e-116Initial program 6.6
rmApplied add-cube-cbrt6.6
Applied times-frac6.8
rmApplied add-log-exp33.0
rmApplied flip-+34.8
Applied frac-sub34.8
Applied associate-*r/34.8
Applied associate-*l/34.9
Applied frac-sub46.1
Simplified32.1
Simplified6.7
Final simplification2.6
herbie shell --seed 2019303
(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)))))))))))