\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\left(\sqrt[3]{\frac{x}{y} \cdot \frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y} \cdot \frac{x}{y}}\right) \cdot \sqrt[3]{\frac{x}{y} \cdot \frac{x}{y}} + \frac{z}{t} \cdot \frac{z}{t}double f(double x, double y, double z, double t) {
double r440258 = x;
double r440259 = r440258 * r440258;
double r440260 = y;
double r440261 = r440260 * r440260;
double r440262 = r440259 / r440261;
double r440263 = z;
double r440264 = r440263 * r440263;
double r440265 = t;
double r440266 = r440265 * r440265;
double r440267 = r440264 / r440266;
double r440268 = r440262 + r440267;
return r440268;
}
double f(double x, double y, double z, double t) {
double r440269 = x;
double r440270 = y;
double r440271 = r440269 / r440270;
double r440272 = r440271 * r440271;
double r440273 = cbrt(r440272);
double r440274 = r440273 * r440273;
double r440275 = r440274 * r440273;
double r440276 = z;
double r440277 = t;
double r440278 = r440276 / r440277;
double r440279 = r440278 * r440278;
double r440280 = r440275 + r440279;
return r440280;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 33.8 |
|---|---|
| Target | 0.4 |
| Herbie | 0.8 |
Initial program 33.8
rmApplied times-frac18.9
rmApplied times-frac0.4
rmApplied add-cube-cbrt0.8
Final simplification0.8
herbie shell --seed 2019304
(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))))