\frac{\left(\frac{8}{3} \cdot \sin \left(x \cdot 0.5\right)\right) \cdot \sin \left(x \cdot 0.5\right)}{\sin x}\frac{\sin \left(0.5 \cdot x\right) \cdot 8}{\frac{\sin x}{\sin \left(0.5 \cdot x\right)} \cdot 3}double f(double x) {
double r358404 = 8.0;
double r358405 = 3.0;
double r358406 = r358404 / r358405;
double r358407 = x;
double r358408 = 0.5;
double r358409 = r358407 * r358408;
double r358410 = sin(r358409);
double r358411 = r358406 * r358410;
double r358412 = r358411 * r358410;
double r358413 = sin(r358407);
double r358414 = r358412 / r358413;
return r358414;
}
double f(double x) {
double r358415 = 0.5;
double r358416 = x;
double r358417 = r358415 * r358416;
double r358418 = sin(r358417);
double r358419 = 8.0;
double r358420 = r358418 * r358419;
double r358421 = sin(r358416);
double r358422 = r358421 / r358418;
double r358423 = 3.0;
double r358424 = r358422 * r358423;
double r358425 = r358420 / r358424;
return r358425;
}




Bits error versus x
Results
| Original | 15.2 |
|---|---|
| Target | 0.3 |
| Herbie | 0.3 |
Initial program 15.2
rmApplied associate-/l*0.5
Simplified0.5
rmApplied associate-*l/0.3
Simplified0.3
rmApplied div-inv0.5
Applied associate-/l*0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2019326 +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)))