\frac{\tan \left(\frac{x}{y \cdot 2}\right)}{\sin \left(\frac{x}{y \cdot 2}\right)}\mathsf{log1p}\left(\mathsf{expm1}\left(\sqrt[3]{\frac{1}{\cos \left(\frac{\frac{x}{y}}{2}\right)} \cdot \left(\frac{1}{\cos \left(\frac{\frac{x}{y}}{2}\right)} \cdot \frac{1}{\cos \left(\frac{\frac{x}{y}}{2}\right)}\right)}\right)\right)double f(double x, double y) {
double r25041226 = x;
double r25041227 = y;
double r25041228 = 2.0;
double r25041229 = r25041227 * r25041228;
double r25041230 = r25041226 / r25041229;
double r25041231 = tan(r25041230);
double r25041232 = sin(r25041230);
double r25041233 = r25041231 / r25041232;
return r25041233;
}
double f(double x, double y) {
double r25041234 = 1.0;
double r25041235 = x;
double r25041236 = y;
double r25041237 = r25041235 / r25041236;
double r25041238 = 2.0;
double r25041239 = r25041237 / r25041238;
double r25041240 = cos(r25041239);
double r25041241 = r25041234 / r25041240;
double r25041242 = r25041241 * r25041241;
double r25041243 = r25041241 * r25041242;
double r25041244 = cbrt(r25041243);
double r25041245 = expm1(r25041244);
double r25041246 = log1p(r25041245);
return r25041246;
}




Bits error versus x




Bits error versus y
Results
| Original | 35.2 |
|---|---|
| Target | 28.5 |
| Herbie | 28.2 |
Initial program 35.2
rmApplied tan-quot35.2
rmApplied log1p-expm1-u35.3
Simplified28.2
rmApplied add-cbrt-cube28.2
Final simplification28.2
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x y)
:name "Diagrams.TwoD.Layout.CirclePacking:approxRadius from diagrams-contrib-1.3.0.5"
:herbie-target
(if (< y -1.2303690911306994e+114) 1.0 (if (< y -9.102852406811914e-222) (/ (sin (/ x (* y 2.0))) (* (sin (/ x (* y 2.0))) (log (exp (cos (/ x (* y 2.0))))))) 1.0))
(/ (tan (/ x (* y 2.0))) (sin (/ x (* y 2.0)))))