\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 r177374 = 0.5;
double r177375 = re;
double r177376 = cos(r177375);
double r177377 = r177374 * r177376;
double r177378 = 0.0;
double r177379 = im;
double r177380 = r177378 - r177379;
double r177381 = exp(r177380);
double r177382 = exp(r177379);
double r177383 = r177381 - r177382;
double r177384 = r177377 * r177383;
return r177384;
}
double f(double re, double im) {
double r177385 = 0.5;
double r177386 = re;
double r177387 = cos(r177386);
double r177388 = r177385 * r177387;
double r177389 = im;
double r177390 = 3.0;
double r177391 = pow(r177389, r177390);
double r177392 = -0.3333333333333333;
double r177393 = r177391 * r177392;
double r177394 = 0.016666666666666666;
double r177395 = 5.0;
double r177396 = pow(r177389, r177395);
double r177397 = r177394 * r177396;
double r177398 = 2.0;
double r177399 = r177398 * r177389;
double r177400 = r177397 + r177399;
double r177401 = r177393 - r177400;
double r177402 = r177388 * r177401;
return r177402;
}




Bits error versus re




Bits error versus im
Results
| Original | 57.9 |
|---|---|
| Target | 0.3 |
| Herbie | 0.8 |
Initial program 57.9
Taylor expanded around 0 0.8
Simplified0.8
Final simplification0.8
herbie shell --seed 2019322
(FPCore (re im)
:name "math.sin on complex, imaginary part"
:precision binary64
:herbie-target
(if (< (fabs im) 1) (- (* (cos re) (+ (+ im (* (* (* 0.16666666666666666 im) im) im)) (* (* (* (* (* 0.008333333333333333 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))))