\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}{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)}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r29426139 = x;
double r29426140 = y;
double r29426141 = 2.0;
double r29426142 = z;
double r29426143 = t;
double r29426144 = a;
double r29426145 = r29426143 + r29426144;
double r29426146 = sqrt(r29426145);
double r29426147 = r29426142 * r29426146;
double r29426148 = r29426147 / r29426143;
double r29426149 = b;
double r29426150 = c;
double r29426151 = r29426149 - r29426150;
double r29426152 = 5.0;
double r29426153 = 6.0;
double r29426154 = r29426152 / r29426153;
double r29426155 = r29426144 + r29426154;
double r29426156 = 3.0;
double r29426157 = r29426143 * r29426156;
double r29426158 = r29426141 / r29426157;
double r29426159 = r29426155 - r29426158;
double r29426160 = r29426151 * r29426159;
double r29426161 = r29426148 - r29426160;
double r29426162 = r29426141 * r29426161;
double r29426163 = exp(r29426162);
double r29426164 = r29426140 * r29426163;
double r29426165 = r29426139 + r29426164;
double r29426166 = r29426139 / r29426165;
return r29426166;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r29426167 = x;
double r29426168 = y;
double r29426169 = 2.0;
double r29426170 = z;
double r29426171 = t;
double r29426172 = cbrt(r29426171);
double r29426173 = r29426172 * r29426172;
double r29426174 = r29426170 / r29426173;
double r29426175 = a;
double r29426176 = r29426171 + r29426175;
double r29426177 = sqrt(r29426176);
double r29426178 = r29426177 / r29426172;
double r29426179 = r29426174 * r29426178;
double r29426180 = b;
double r29426181 = c;
double r29426182 = r29426180 - r29426181;
double r29426183 = 5.0;
double r29426184 = 6.0;
double r29426185 = r29426183 / r29426184;
double r29426186 = r29426175 + r29426185;
double r29426187 = 3.0;
double r29426188 = r29426171 * r29426187;
double r29426189 = r29426169 / r29426188;
double r29426190 = r29426186 - r29426189;
double r29426191 = r29426182 * r29426190;
double r29426192 = r29426179 - r29426191;
double r29426193 = r29426169 * r29426192;
double r29426194 = exp(r29426193);
double r29426195 = r29426168 * r29426194;
double r29426196 = r29426167 + r29426195;
double r29426197 = r29426167 / r29426196;
return r29426197;
}




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.9 |
|---|---|
| Target | 2.9 |
| Herbie | 2.6 |
Initial program 3.9
rmApplied add-cube-cbrt3.9
Applied times-frac2.6
Final simplification2.6
herbie shell --seed 2019174
(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)))))))))))