\frac{\left(\frac{8}{3} \cdot \sin \left(x \cdot 0.5\right)\right) \cdot \sin \left(x \cdot 0.5\right)}{\sin x}\mathsf{log1p}\left(\mathsf{expm1}\left(\frac{8 \cdot \sin \left(0.5 \cdot x\right)}{3}\right)\right) \cdot \frac{\sin \left(x \cdot 0.5\right)}{\sin x}double f(double x) {
double r488386 = 8.0;
double r488387 = 3.0;
double r488388 = r488386 / r488387;
double r488389 = x;
double r488390 = 0.5;
double r488391 = r488389 * r488390;
double r488392 = sin(r488391);
double r488393 = r488388 * r488392;
double r488394 = r488393 * r488392;
double r488395 = sin(r488389);
double r488396 = r488394 / r488395;
return r488396;
}
double f(double x) {
double r488397 = 8.0;
double r488398 = 0.5;
double r488399 = x;
double r488400 = r488398 * r488399;
double r488401 = sin(r488400);
double r488402 = r488397 * r488401;
double r488403 = 3.0;
double r488404 = r488402 / r488403;
double r488405 = expm1(r488404);
double r488406 = log1p(r488405);
double r488407 = r488399 * r488398;
double r488408 = sin(r488407);
double r488409 = sin(r488399);
double r488410 = r488408 / r488409;
double r488411 = r488406 * r488410;
return r488411;
}




Bits error versus x
Results
| Original | 15.2 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 15.2
rmApplied *-un-lft-identity15.2
Applied times-frac0.5
Simplified0.5
rmApplied associate-*l/0.3
Simplified0.3
rmApplied log1p-expm1-u0.4
Final simplification0.4
herbie shell --seed 2019208 +o rules:numerics
(FPCore (x)
:name "Graphics.Rasterific.Svg.PathConverter:segmentToBezier from rasterific-svg-0.2.3.1, A"
:precision binary64
:herbie-target
(/ (/ (* 8 (sin (* x 0.5))) 3) (/ (sin x) (sin (* x 0.5))))
(/ (* (* (/ 8 3) (sin (* x 0.5))) (sin (* x 0.5))) (sin x)))