\frac{\left(re \cdot im\right)}{\left(im \cdot re\right)}\left(\left(im \cdot \left(re + re\right)\right)\right)
double f(double re, double im) {
double r17201 = re;
double r17202 = im;
double r17203 = r17201 * r17202;
double r17204 = r17202 * r17201;
double r17205 = r17203 + r17204;
return r17205;
}
double f(double re, double im) {
double r17206 = im;
double r17207 = re;
double r17208 = r17207 + r17207;
double r17209 = r17206 * r17208;
double r17210 = /*Error: no posit support in C */;
double r17211 = /*Error: no posit support in C */;
return r17211;
}



Bits error versus re



Bits error versus im
Initial program 0.2
rmApplied introduce-quire0.2
Simplified0.1
Final simplification0.1
herbie shell --seed 2019151 +o rules:numerics
(FPCore (re im)
:name "math.square on complex, imaginary part"
(+.p16 (*.p16 re im) (*.p16 im re)))