\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)}}\frac{x}{\mathsf{fma}\left(y, {\left(e^{2}\right)}^{\left(\mathsf{fma}\left(\frac{\frac{2}{t}}{3} - \left(a + \frac{5}{6}\right), b - c, \frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}}\right)\right)}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r288210 = x;
double r288211 = y;
double r288212 = 2.0;
double r288213 = z;
double r288214 = t;
double r288215 = a;
double r288216 = r288214 + r288215;
double r288217 = sqrt(r288216);
double r288218 = r288213 * r288217;
double r288219 = r288218 / r288214;
double r288220 = b;
double r288221 = c;
double r288222 = r288220 - r288221;
double r288223 = 5.0;
double r288224 = 6.0;
double r288225 = r288223 / r288224;
double r288226 = r288215 + r288225;
double r288227 = 3.0;
double r288228 = r288214 * r288227;
double r288229 = r288212 / r288228;
double r288230 = r288226 - r288229;
double r288231 = r288222 * r288230;
double r288232 = r288219 - r288231;
double r288233 = r288212 * r288232;
double r288234 = exp(r288233);
double r288235 = r288211 * r288234;
double r288236 = r288210 + r288235;
double r288237 = r288210 / r288236;
return r288237;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r288238 = x;
double r288239 = y;
double r288240 = 2.0;
double r288241 = exp(r288240);
double r288242 = t;
double r288243 = r288240 / r288242;
double r288244 = 3.0;
double r288245 = r288243 / r288244;
double r288246 = a;
double r288247 = 5.0;
double r288248 = 6.0;
double r288249 = r288247 / r288248;
double r288250 = r288246 + r288249;
double r288251 = r288245 - r288250;
double r288252 = b;
double r288253 = c;
double r288254 = r288252 - r288253;
double r288255 = z;
double r288256 = cbrt(r288242);
double r288257 = r288256 * r288256;
double r288258 = r288255 / r288257;
double r288259 = r288242 + r288246;
double r288260 = sqrt(r288259);
double r288261 = r288260 / r288256;
double r288262 = r288258 * r288261;
double r288263 = fma(r288251, r288254, r288262);
double r288264 = pow(r288241, r288263);
double r288265 = fma(r288239, r288264, r288238);
double r288266 = r288238 / r288265;
return r288266;
}




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.7 |
|---|---|
| Target | 2.9 |
| Herbie | 1.4 |
Initial program 3.7
Simplified2.5
rmApplied add-cube-cbrt2.5
Applied times-frac1.4
Final simplification1.4
herbie shell --seed 2019199 +o rules:numerics
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:herbie-target
(if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2.0 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2.0 (/ (- (* (* z (sqrt (+ t a))) (* (* 3.0 t) (- a (/ 5.0 6.0)))) (* (- (* (+ (/ 5.0 6.0) a) (* 3.0 t)) 2.0) (* (- a (/ 5.0 6.0)) (* (- b c) t)))) (* (* (* t t) 3.0) (- a (/ 5.0 6.0))))))))) (/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))))))))))
(/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))