\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 -7.56948342881274854 \cdot 10^{-163} \lor \neg \left(t \le 1.06362421438494749 \cdot 10^{-235}\right):\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\mathsf{fma}\left(z, \frac{\sqrt{t + a}}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\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)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{\left(z \cdot \sqrt{t + a}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - 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)}{t \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 r372189 = x;
double r372190 = y;
double r372191 = 2.0;
double r372192 = z;
double r372193 = t;
double r372194 = a;
double r372195 = r372193 + r372194;
double r372196 = sqrt(r372195);
double r372197 = r372192 * r372196;
double r372198 = r372197 / r372193;
double r372199 = b;
double r372200 = c;
double r372201 = r372199 - r372200;
double r372202 = 5.0;
double r372203 = 6.0;
double r372204 = r372202 / r372203;
double r372205 = r372194 + r372204;
double r372206 = 3.0;
double r372207 = r372193 * r372206;
double r372208 = r372191 / r372207;
double r372209 = r372205 - r372208;
double r372210 = r372201 * r372209;
double r372211 = r372198 - r372210;
double r372212 = r372191 * r372211;
double r372213 = exp(r372212);
double r372214 = r372190 * r372213;
double r372215 = r372189 + r372214;
double r372216 = r372189 / r372215;
return r372216;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r372217 = t;
double r372218 = -7.569483428812749e-163;
bool r372219 = r372217 <= r372218;
double r372220 = 1.0636242143849475e-235;
bool r372221 = r372217 <= r372220;
double r372222 = !r372221;
bool r372223 = r372219 || r372222;
double r372224 = x;
double r372225 = y;
double r372226 = 2.0;
double r372227 = z;
double r372228 = a;
double r372229 = r372217 + r372228;
double r372230 = sqrt(r372229);
double r372231 = r372230 / r372217;
double r372232 = b;
double r372233 = c;
double r372234 = r372232 - r372233;
double r372235 = 5.0;
double r372236 = 6.0;
double r372237 = r372235 / r372236;
double r372238 = r372228 + r372237;
double r372239 = 3.0;
double r372240 = r372217 * r372239;
double r372241 = r372226 / r372240;
double r372242 = r372238 - r372241;
double r372243 = r372234 * r372242;
double r372244 = -r372243;
double r372245 = fma(r372227, r372231, r372244);
double r372246 = -r372234;
double r372247 = r372246 + r372234;
double r372248 = r372242 * r372247;
double r372249 = r372245 + r372248;
double r372250 = r372226 * r372249;
double r372251 = exp(r372250);
double r372252 = r372225 * r372251;
double r372253 = r372224 + r372252;
double r372254 = r372224 / r372253;
double r372255 = r372227 * r372230;
double r372256 = r372228 - r372237;
double r372257 = r372256 * r372240;
double r372258 = r372255 * r372257;
double r372259 = r372228 * r372228;
double r372260 = r372237 * r372237;
double r372261 = r372259 - r372260;
double r372262 = r372261 * r372240;
double r372263 = r372256 * r372226;
double r372264 = r372262 - r372263;
double r372265 = r372234 * r372264;
double r372266 = r372217 * r372265;
double r372267 = r372258 - r372266;
double r372268 = r372217 * r372257;
double r372269 = r372267 / r372268;
double r372270 = r372226 * r372269;
double r372271 = exp(r372270);
double r372272 = r372225 * r372271;
double r372273 = r372224 + r372272;
double r372274 = r372224 / r372273;
double r372275 = r372223 ? r372254 : r372274;
return r372275;
}




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.6 |
|---|---|
| Target | 3.2 |
| Herbie | 2.1 |
if t < -7.569483428812749e-163 or 1.0636242143849475e-235 < t Initial program 2.8
rmApplied *-un-lft-identity2.8
Applied times-frac1.4
Applied prod-diff18.0
Simplified18.0
Simplified0.6
if -7.569483428812749e-163 < t < 1.0636242143849475e-235Initial program 7.5
rmApplied flip-+12.2
Applied frac-sub12.2
Applied associate-*r/12.2
Applied frac-sub9.6
Final simplification2.1
herbie shell --seed 2020036 +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)))))))))))