\left(0.5 \cdot \cos re\right) \cdot \left(e^{0.0 - im} - e^{im}\right)\left(0.5 \cdot \cos re\right) \cdot \left({im}^{3} \cdot \frac{-1}{3} - \left(\frac{1}{60} \cdot {im}^{5} + 2 \cdot im\right)\right)double f(double re, double im) {
double r170250 = 0.5;
double r170251 = re;
double r170252 = cos(r170251);
double r170253 = r170250 * r170252;
double r170254 = 0.0;
double r170255 = im;
double r170256 = r170254 - r170255;
double r170257 = exp(r170256);
double r170258 = exp(r170255);
double r170259 = r170257 - r170258;
double r170260 = r170253 * r170259;
return r170260;
}
double f(double re, double im) {
double r170261 = 0.5;
double r170262 = re;
double r170263 = cos(r170262);
double r170264 = r170261 * r170263;
double r170265 = im;
double r170266 = 3.0;
double r170267 = pow(r170265, r170266);
double r170268 = -0.3333333333333333;
double r170269 = r170267 * r170268;
double r170270 = 0.016666666666666666;
double r170271 = 5.0;
double r170272 = pow(r170265, r170271);
double r170273 = r170270 * r170272;
double r170274 = 2.0;
double r170275 = r170274 * r170265;
double r170276 = r170273 + r170275;
double r170277 = r170269 - r170276;
double r170278 = r170264 * r170277;
return r170278;
}




Bits error versus re




Bits error versus im
Results
| Original | 58.0 |
|---|---|
| Target | 0.2 |
| Herbie | 0.8 |
Initial program 58.0
Taylor expanded around 0 0.8
Simplified0.8
Final simplification0.8
herbie shell --seed 2019304
(FPCore (re im)
:name "math.sin on complex, imaginary part"
:precision binary64
:herbie-target
(if (< (fabs im) 1) (- (* (cos re) (+ (+ im (* (* (* 0.166666666666666657 im) im) im)) (* (* (* (* (* 0.00833333333333333322 im) im) im) im) im)))) (* (* 0.5 (cos re)) (- (exp (- 0.0 im)) (exp im))))
(* (* 0.5 (cos re)) (- (exp (- 0.0 im)) (exp im))))