\left(0.5 \cdot \sin re\right) \cdot \left(e^{-im} - e^{im}\right)\left({im}^{3} \cdot \frac{-1}{3}\right) \cdot \left(0.5 \cdot \sin re\right) + \left(im \cdot -2 + {im}^{5} \cdot \frac{-1}{60}\right) \cdot \left(0.5 \cdot \sin re\right)double f(double re, double im) {
double r176370 = 0.5;
double r176371 = re;
double r176372 = sin(r176371);
double r176373 = r176370 * r176372;
double r176374 = im;
double r176375 = -r176374;
double r176376 = exp(r176375);
double r176377 = exp(r176374);
double r176378 = r176376 - r176377;
double r176379 = r176373 * r176378;
return r176379;
}
double f(double re, double im) {
double r176380 = im;
double r176381 = 3.0;
double r176382 = pow(r176380, r176381);
double r176383 = -0.3333333333333333;
double r176384 = r176382 * r176383;
double r176385 = 0.5;
double r176386 = re;
double r176387 = sin(r176386);
double r176388 = r176385 * r176387;
double r176389 = r176384 * r176388;
double r176390 = -2.0;
double r176391 = r176380 * r176390;
double r176392 = 5.0;
double r176393 = pow(r176380, r176392);
double r176394 = -0.016666666666666666;
double r176395 = r176393 * r176394;
double r176396 = r176391 + r176395;
double r176397 = r176396 * r176388;
double r176398 = r176389 + r176397;
return r176398;
}




Bits error versus re




Bits error versus im
Results
| Original | 44.0 |
|---|---|
| Target | 0.3 |
| Herbie | 0.7 |
Initial program 44.0
Taylor expanded around 0 0.7
Simplified0.7
rmApplied sub-neg0.7
Applied distribute-lft-in0.7
Simplified0.7
Simplified0.7
Final simplification0.7
herbie shell --seed 2019199
(FPCore (re im)
:name "math.cos on complex, imaginary part"
:herbie-target
(if (< (fabs im) 1.0) (- (* (sin re) (+ (+ im (* (* (* 0.16666666666666666 im) im) im)) (* (* (* (* (* 0.008333333333333333 im) im) im) im) im)))) (* (* 0.5 (sin re)) (- (exp (- im)) (exp im))))
(* (* 0.5 (sin re)) (- (exp (- im)) (exp im))))