\frac{e^{a}}{e^{a} + e^{b}}\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{1}{\frac{e^{a} + e^{b}}{e^{a}}}\right)\right)double f(double a, double b) {
double r108168 = a;
double r108169 = exp(r108168);
double r108170 = b;
double r108171 = exp(r108170);
double r108172 = r108169 + r108171;
double r108173 = r108169 / r108172;
return r108173;
}
double f(double a, double b) {
double r108174 = 1.0;
double r108175 = a;
double r108176 = exp(r108175);
double r108177 = b;
double r108178 = exp(r108177);
double r108179 = r108176 + r108178;
double r108180 = r108179 / r108176;
double r108181 = r108174 / r108180;
double r108182 = expm1(r108181);
double r108183 = log1p(r108182);
return r108183;
}




Bits error versus a




Bits error versus b
Results
| Original | 0.7 |
|---|---|
| Target | 0.0 |
| Herbie | 0.7 |
Initial program 0.7
rmApplied log1p-expm1-u0.7
rmApplied clear-num0.7
Final simplification0.7
herbie shell --seed 2019356 +o rules:numerics
(FPCore (a b)
:name "Quotient of sum of exps"
:precision binary64
:herbie-target
(/ 1 (+ 1 (exp (- b a))))
(/ (exp a) (+ (exp a) (exp b))))