\left(0.5\right) \cdot \left(\sqrt{\left(\left(2.0\right) \cdot \left(\left(\sqrt{\left(\frac{\left(re \cdot re\right)}{\left(im \cdot im\right)}\right)}\right) - re\right)\right)}\right)0.5 \cdot \sqrt{2.0 \cdot \left(\sqrt{re \cdot re + im \cdot im} - re\right)}double f(double re, double im) {
double r723541 = 0.5;
double r723542 = /* ERROR: no posit support in C */;
double r723543 = 2.0;
double r723544 = /* ERROR: no posit support in C */;
double r723545 = re;
double r723546 = r723545 * r723545;
double r723547 = im;
double r723548 = r723547 * r723547;
double r723549 = r723546 + r723548;
double r723550 = sqrt(r723549);
double r723551 = r723550 - r723545;
double r723552 = r723544 * r723551;
double r723553 = sqrt(r723552);
double r723554 = r723542 * r723553;
return r723554;
}
double f(double re, double im) {
double r723555 = 0.5;
double r723556 = 2.0;
double r723557 = re;
double r723558 = r723557 * r723557;
double r723559 = im;
double r723560 = r723559 * r723559;
double r723561 = r723558 + r723560;
double r723562 = sqrt(r723561);
double r723563 = r723562 - r723557;
double r723564 = r723556 * r723563;
double r723565 = sqrt(r723564);
double r723566 = r723555 * r723565;
return r723566;
}



Bits error versus re



Bits error versus im
Initial program 2.0
Final simplification2.0
herbie shell --seed 2019153 +o rules:numerics
(FPCore (re im)
:name "math.sqrt on complex, imaginary part, im greater than 0 branch"
(*.p16 (real->posit16 0.5) (sqrt.p16 (*.p16 (real->posit16 2.0) (-.p16 (sqrt.p16 (+.p16 (*.p16 re re) (*.p16 im im))) re)))))