\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 \log \left(e^{\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)}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r434198 = x;
double r434199 = y;
double r434200 = 2.0;
double r434201 = z;
double r434202 = t;
double r434203 = a;
double r434204 = r434202 + r434203;
double r434205 = sqrt(r434204);
double r434206 = r434201 * r434205;
double r434207 = r434206 / r434202;
double r434208 = b;
double r434209 = c;
double r434210 = r434208 - r434209;
double r434211 = 5.0;
double r434212 = 6.0;
double r434213 = r434211 / r434212;
double r434214 = r434203 + r434213;
double r434215 = 3.0;
double r434216 = r434202 * r434215;
double r434217 = r434200 / r434216;
double r434218 = r434214 - r434217;
double r434219 = r434210 * r434218;
double r434220 = r434207 - r434219;
double r434221 = r434200 * r434220;
double r434222 = exp(r434221);
double r434223 = r434199 * r434222;
double r434224 = r434198 + r434223;
double r434225 = r434198 / r434224;
return r434225;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r434226 = x;
double r434227 = y;
double r434228 = 2.0;
double r434229 = z;
double r434230 = t;
double r434231 = a;
double r434232 = r434230 + r434231;
double r434233 = sqrt(r434232);
double r434234 = r434229 * r434233;
double r434235 = r434234 / r434230;
double r434236 = b;
double r434237 = c;
double r434238 = r434236 - r434237;
double r434239 = 5.0;
double r434240 = 6.0;
double r434241 = r434239 / r434240;
double r434242 = r434231 + r434241;
double r434243 = 3.0;
double r434244 = r434230 * r434243;
double r434245 = r434228 / r434244;
double r434246 = r434242 - r434245;
double r434247 = r434238 * r434246;
double r434248 = r434235 - r434247;
double r434249 = exp(r434248);
double r434250 = log(r434249);
double r434251 = r434228 * r434250;
double r434252 = exp(r434251);
double r434253 = r434227 * r434252;
double r434254 = r434226 + r434253;
double r434255 = r434226 / r434254;
return r434255;
}




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.8 |
|---|---|
| Target | 3.1 |
| Herbie | 3.8 |
Initial program 3.8
rmApplied add-log-exp8.0
Applied add-log-exp16.3
Applied diff-log16.3
Simplified3.8
Final simplification3.8
herbie shell --seed 2020001
(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)))))))))))