\left(\left(\left(x.re \cdot x.re\right) - \left(x.im \cdot x.im\right)\right) \cdot x.re\right) - \left(\left(\frac{\left(x.re \cdot x.im\right)}{\left(x.im \cdot x.re\right)}\right) \cdot x.im\right)\left(\left(x.re + x.im\right) \cdot \left(x.re - x.im\right)\right) \cdot x.re - \left(x.re \cdot x.im + x.im \cdot x.re\right) \cdot x.im
double f(double x_re, double x_im) {
double r329464 = x_re;
double r329465 = r329464 * r329464;
double r329466 = x_im;
double r329467 = r329466 * r329466;
double r329468 = r329465 - r329467;
double r329469 = r329468 * r329464;
double r329470 = r329464 * r329466;
double r329471 = r329466 * r329464;
double r329472 = r329470 + r329471;
double r329473 = r329472 * r329466;
double r329474 = r329469 - r329473;
return r329474;
}
double f(double x_re, double x_im) {
double r329475 = x_re;
double r329476 = x_im;
double r329477 = r329475 + r329476;
double r329478 = r329475 - r329476;
double r329479 = r329477 * r329478;
double r329480 = r329479 * r329475;
double r329481 = r329475 * r329476;
double r329482 = r329476 * r329475;
double r329483 = r329481 + r329482;
double r329484 = r329483 * r329476;
double r329485 = r329480 - r329484;
return r329485;
}



Bits error versus x.re



Bits error versus x.im
Initial program 0.4
rmApplied difference-of-squares0.4
Final simplification0.4
herbie shell --seed 2019119
(FPCore (x.re x.im)
:name "math.cube on complex, real part"
(-.p16 (*.p16 (-.p16 (*.p16 x.re x.re) (*.p16 x.im x.im)) x.re) (*.p16 (+.p16 (*.p16 x.re x.im) (*.p16 x.im x.re)) x.im)))