\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\frac{1}{\frac{t}{z} \cdot \frac{t}{z}} + \frac{1}{\frac{y}{x} \cdot \frac{y}{x}}double f(double x, double y, double z, double t) {
double r45112861 = x;
double r45112862 = r45112861 * r45112861;
double r45112863 = y;
double r45112864 = r45112863 * r45112863;
double r45112865 = r45112862 / r45112864;
double r45112866 = z;
double r45112867 = r45112866 * r45112866;
double r45112868 = t;
double r45112869 = r45112868 * r45112868;
double r45112870 = r45112867 / r45112869;
double r45112871 = r45112865 + r45112870;
return r45112871;
}
double f(double x, double y, double z, double t) {
double r45112872 = 1.0;
double r45112873 = t;
double r45112874 = z;
double r45112875 = r45112873 / r45112874;
double r45112876 = r45112875 * r45112875;
double r45112877 = r45112872 / r45112876;
double r45112878 = y;
double r45112879 = x;
double r45112880 = r45112878 / r45112879;
double r45112881 = r45112880 * r45112880;
double r45112882 = r45112872 / r45112881;
double r45112883 = r45112877 + r45112882;
return r45112883;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 31.9 |
|---|---|
| Target | 0.4 |
| Herbie | 0.6 |
Initial program 31.9
Simplified0.4
rmApplied clear-num0.4
Applied clear-num0.5
Applied frac-times0.5
Simplified0.5
rmApplied clear-num0.5
Applied clear-num0.6
Applied frac-times0.6
Simplified0.6
Final simplification0.6
herbie shell --seed 2019158
(FPCore (x y z t)
:name "Graphics.Rasterific.Svg.PathConverter:arcToSegments from rasterific-svg-0.2.3.1"
:herbie-target
(+ (pow (/ x y) 2) (pow (/ z t) 2))
(+ (/ (* x x) (* y y)) (/ (* z z) (* t t))))