\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(x \cdot 0.5\right)}{3}\right)\right) \cdot \frac{\sin \left(0.5 \cdot x\right)}{\sin x}double f(double x) {
double r645110 = 8.0;
double r645111 = 3.0;
double r645112 = r645110 / r645111;
double r645113 = x;
double r645114 = 0.5;
double r645115 = r645113 * r645114;
double r645116 = sin(r645115);
double r645117 = r645112 * r645116;
double r645118 = r645117 * r645116;
double r645119 = sin(r645113);
double r645120 = r645118 / r645119;
return r645120;
}
double f(double x) {
double r645121 = 8.0;
double r645122 = x;
double r645123 = 0.5;
double r645124 = r645122 * r645123;
double r645125 = sin(r645124);
double r645126 = r645121 * r645125;
double r645127 = 3.0;
double r645128 = r645126 / r645127;
double r645129 = expm1(r645128);
double r645130 = log1p(r645129);
double r645131 = r645123 * r645122;
double r645132 = sin(r645131);
double r645133 = sin(r645122);
double r645134 = r645132 / r645133;
double r645135 = r645130 * r645134;
return r645135;
}




Bits error versus x
Results
| Original | 14.9 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 14.9
rmApplied *-un-lft-identity14.9
Applied times-frac0.5
Simplified0.5
Simplified0.5
rmApplied associate-*l/0.3
rmApplied log1p-expm1-u0.4
Final simplification0.4
herbie shell --seed 2020033 +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)))