\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\frac{x}{y} \cdot \frac{x}{y} + \sqrt{\left|\frac{z}{t}\right|} \cdot {\left(\left|\frac{z}{t}\right|\right)}^{\frac{3}{2}}double f(double x, double y, double z, double t) {
double r424825 = x;
double r424826 = r424825 * r424825;
double r424827 = y;
double r424828 = r424827 * r424827;
double r424829 = r424826 / r424828;
double r424830 = z;
double r424831 = r424830 * r424830;
double r424832 = t;
double r424833 = r424832 * r424832;
double r424834 = r424831 / r424833;
double r424835 = r424829 + r424834;
return r424835;
}
double f(double x, double y, double z, double t) {
double r424836 = x;
double r424837 = y;
double r424838 = r424836 / r424837;
double r424839 = r424838 * r424838;
double r424840 = z;
double r424841 = t;
double r424842 = r424840 / r424841;
double r424843 = fabs(r424842);
double r424844 = sqrt(r424843);
double r424845 = 1.5;
double r424846 = pow(r424843, r424845);
double r424847 = r424844 * r424846;
double r424848 = r424839 + r424847;
return r424848;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 34.2 |
|---|---|
| Target | 0.4 |
| Herbie | 0.5 |
Initial program 34.2
rmApplied add-sqr-sqrt34.2
Simplified34.2
Simplified19.4
rmApplied times-frac0.4
rmApplied add-sqr-sqrt0.5
Applied associate-*l*0.5
Simplified0.6
rmApplied pow1/20.6
Applied pow-pow0.5
Simplified0.5
Final simplification0.5
herbie shell --seed 2019303
(FPCore (x y z t)
:name "Graphics.Rasterific.Svg.PathConverter:arcToSegments from rasterific-svg-0.2.3.1"
:precision binary64
:herbie-target
(+ (pow (/ x y) 2) (pow (/ z t) 2))
(+ (/ (* x x) (* y y)) (/ (* z z) (* t t))))