\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{2}{t \cdot 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 r414103 = x;
double r414104 = y;
double r414105 = 2.0;
double r414106 = z;
double r414107 = t;
double r414108 = a;
double r414109 = r414107 + r414108;
double r414110 = sqrt(r414109);
double r414111 = r414106 * r414110;
double r414112 = r414111 / r414107;
double r414113 = b;
double r414114 = c;
double r414115 = r414113 - r414114;
double r414116 = 5.0;
double r414117 = 6.0;
double r414118 = r414116 / r414117;
double r414119 = r414108 + r414118;
double r414120 = 3.0;
double r414121 = r414107 * r414120;
double r414122 = r414105 / r414121;
double r414123 = r414119 - r414122;
double r414124 = r414115 * r414123;
double r414125 = r414112 - r414124;
double r414126 = r414105 * r414125;
double r414127 = exp(r414126);
double r414128 = r414104 * r414127;
double r414129 = r414103 + r414128;
double r414130 = r414103 / r414129;
return r414130;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r414131 = x;
double r414132 = y;
double r414133 = 2.0;
double r414134 = exp(r414133);
double r414135 = t;
double r414136 = 3.0;
double r414137 = r414135 * r414136;
double r414138 = r414133 / r414137;
double r414139 = a;
double r414140 = 5.0;
double r414141 = 6.0;
double r414142 = r414140 / r414141;
double r414143 = r414139 + r414142;
double r414144 = r414138 - r414143;
double r414145 = b;
double r414146 = c;
double r414147 = r414145 - r414146;
double r414148 = z;
double r414149 = cbrt(r414135);
double r414150 = r414149 * r414149;
double r414151 = r414148 / r414150;
double r414152 = r414135 + r414139;
double r414153 = sqrt(r414152);
double r414154 = r414153 / r414149;
double r414155 = r414151 * r414154;
double r414156 = fma(r414144, r414147, r414155);
double r414157 = pow(r414134, r414156);
double r414158 = fma(r414132, r414157, r414131);
double r414159 = r414131 / r414158;
return r414159;
}




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.8 |
|---|---|
| Target | 2.8 |
| Herbie | 1.4 |
Initial program 3.8
Simplified2.6
rmApplied add-cube-cbrt2.6
Applied times-frac1.4
Final simplification1.4
herbie shell --seed 2020045 +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)))))))))))