Average Error: 34.2 → 0.6
Time: 14.2s
Precision: 64
\[\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\]
\[\left|\frac{x}{y}\right| \cdot \left|\frac{x}{y}\right| + \left(\frac{z}{t} \cdot \sqrt[3]{{\left(\frac{t}{z}\right)}^{-2}}\right) \cdot \sqrt[3]{\frac{z}{t}}\]
\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}
\left|\frac{x}{y}\right| \cdot \left|\frac{x}{y}\right| + \left(\frac{z}{t} \cdot \sqrt[3]{{\left(\frac{t}{z}\right)}^{-2}}\right) \cdot \sqrt[3]{\frac{z}{t}}
double f(double x, double y, double z, double t) {
        double r1160748 = x;
        double r1160749 = r1160748 * r1160748;
        double r1160750 = y;
        double r1160751 = r1160750 * r1160750;
        double r1160752 = r1160749 / r1160751;
        double r1160753 = z;
        double r1160754 = r1160753 * r1160753;
        double r1160755 = t;
        double r1160756 = r1160755 * r1160755;
        double r1160757 = r1160754 / r1160756;
        double r1160758 = r1160752 + r1160757;
        return r1160758;
}

double f(double x, double y, double z, double t) {
        double r1160759 = x;
        double r1160760 = y;
        double r1160761 = r1160759 / r1160760;
        double r1160762 = fabs(r1160761);
        double r1160763 = r1160762 * r1160762;
        double r1160764 = z;
        double r1160765 = t;
        double r1160766 = r1160764 / r1160765;
        double r1160767 = r1160765 / r1160764;
        double r1160768 = -2.0;
        double r1160769 = pow(r1160767, r1160768);
        double r1160770 = cbrt(r1160769);
        double r1160771 = r1160766 * r1160770;
        double r1160772 = cbrt(r1160766);
        double r1160773 = r1160771 * r1160772;
        double r1160774 = r1160763 + r1160773;
        return r1160774;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original34.2
Target0.4
Herbie0.6
\[{\left(\frac{x}{y}\right)}^{2} + {\left(\frac{z}{t}\right)}^{2}\]

Derivation

  1. Initial program 34.2

    \[\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\]
  2. Using strategy rm
  3. Applied times-frac19.4

    \[\leadsto \frac{x \cdot x}{y \cdot y} + \color{blue}{\frac{z}{t} \cdot \frac{z}{t}}\]
  4. Using strategy rm
  5. Applied add-sqr-sqrt19.5

    \[\leadsto \color{blue}{\sqrt{\frac{x \cdot x}{y \cdot y}} \cdot \sqrt{\frac{x \cdot x}{y \cdot y}}} + \frac{z}{t} \cdot \frac{z}{t}\]
  6. Simplified19.4

    \[\leadsto \color{blue}{\left|\frac{x}{y}\right|} \cdot \sqrt{\frac{x \cdot x}{y \cdot y}} + \frac{z}{t} \cdot \frac{z}{t}\]
  7. Simplified0.4

    \[\leadsto \left|\frac{x}{y}\right| \cdot \color{blue}{\left|\frac{x}{y}\right|} + \frac{z}{t} \cdot \frac{z}{t}\]
  8. Using strategy rm
  9. Applied add-cube-cbrt0.8

    \[\leadsto \left|\frac{x}{y}\right| \cdot \left|\frac{x}{y}\right| + \frac{z}{t} \cdot \color{blue}{\left(\left(\sqrt[3]{\frac{z}{t}} \cdot \sqrt[3]{\frac{z}{t}}\right) \cdot \sqrt[3]{\frac{z}{t}}\right)}\]
  10. Applied associate-*r*0.8

    \[\leadsto \left|\frac{x}{y}\right| \cdot \left|\frac{x}{y}\right| + \color{blue}{\left(\frac{z}{t} \cdot \left(\sqrt[3]{\frac{z}{t}} \cdot \sqrt[3]{\frac{z}{t}}\right)\right) \cdot \sqrt[3]{\frac{z}{t}}}\]
  11. Using strategy rm
  12. Applied cbrt-unprod0.6

    \[\leadsto \left|\frac{x}{y}\right| \cdot \left|\frac{x}{y}\right| + \left(\frac{z}{t} \cdot \color{blue}{\sqrt[3]{\frac{z}{t} \cdot \frac{z}{t}}}\right) \cdot \sqrt[3]{\frac{z}{t}}\]
  13. Simplified0.6

    \[\leadsto \left|\frac{x}{y}\right| \cdot \left|\frac{x}{y}\right| + \left(\frac{z}{t} \cdot \sqrt[3]{\color{blue}{{\left(\frac{t}{z}\right)}^{-2}}}\right) \cdot \sqrt[3]{\frac{z}{t}}\]
  14. Final simplification0.6

    \[\leadsto \left|\frac{x}{y}\right| \cdot \left|\frac{x}{y}\right| + \left(\frac{z}{t} \cdot \sqrt[3]{{\left(\frac{t}{z}\right)}^{-2}}\right) \cdot \sqrt[3]{\frac{z}{t}}\]

Reproduce

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))))