Average Error: 33.5 → 0.8
Time: 4.5s
Precision: 64
\[\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\]
\[\mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \left(\frac{x}{y} \cdot \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right)\right) \cdot \left(\sqrt[3]{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{1}} \cdot \sqrt[3]{\frac{\sqrt[3]{x}}{y}}\right)\right)\]
\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}
\mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \left(\frac{x}{y} \cdot \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right)\right) \cdot \left(\sqrt[3]{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{1}} \cdot \sqrt[3]{\frac{\sqrt[3]{x}}{y}}\right)\right)
double f(double x, double y, double z, double t) {
        double r576132 = x;
        double r576133 = r576132 * r576132;
        double r576134 = y;
        double r576135 = r576134 * r576134;
        double r576136 = r576133 / r576135;
        double r576137 = z;
        double r576138 = r576137 * r576137;
        double r576139 = t;
        double r576140 = r576139 * r576139;
        double r576141 = r576138 / r576140;
        double r576142 = r576136 + r576141;
        return r576142;
}

double f(double x, double y, double z, double t) {
        double r576143 = z;
        double r576144 = t;
        double r576145 = r576143 / r576144;
        double r576146 = x;
        double r576147 = y;
        double r576148 = r576146 / r576147;
        double r576149 = cbrt(r576148);
        double r576150 = r576149 * r576149;
        double r576151 = r576148 * r576150;
        double r576152 = cbrt(r576146);
        double r576153 = r576152 * r576152;
        double r576154 = 1.0;
        double r576155 = r576153 / r576154;
        double r576156 = cbrt(r576155);
        double r576157 = r576152 / r576147;
        double r576158 = cbrt(r576157);
        double r576159 = r576156 * r576158;
        double r576160 = r576151 * r576159;
        double r576161 = fma(r576145, r576145, r576160);
        return r576161;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

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

Derivation

  1. Initial program 33.5

    \[\frac{x \cdot x}{y \cdot y} + \frac{z \cdot z}{t \cdot t}\]
  2. Simplified18.5

    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{x \cdot x}{y \cdot y}\right)}\]
  3. Using strategy rm
  4. Applied times-frac0.4

    \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \color{blue}{\frac{x}{y} \cdot \frac{x}{y}}\right)\]
  5. Using strategy rm
  6. Applied add-cube-cbrt0.8

    \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \frac{x}{y} \cdot \color{blue}{\left(\left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right) \cdot \sqrt[3]{\frac{x}{y}}\right)}\right)\]
  7. Applied associate-*r*0.8

    \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \color{blue}{\left(\frac{x}{y} \cdot \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right)\right) \cdot \sqrt[3]{\frac{x}{y}}}\right)\]
  8. Using strategy rm
  9. Applied *-un-lft-identity0.8

    \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \left(\frac{x}{y} \cdot \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right)\right) \cdot \sqrt[3]{\frac{x}{\color{blue}{1 \cdot y}}}\right)\]
  10. Applied add-cube-cbrt0.8

    \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \left(\frac{x}{y} \cdot \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right)\right) \cdot \sqrt[3]{\frac{\color{blue}{\left(\sqrt[3]{x} \cdot \sqrt[3]{x}\right) \cdot \sqrt[3]{x}}}{1 \cdot y}}\right)\]
  11. Applied times-frac0.8

    \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \left(\frac{x}{y} \cdot \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right)\right) \cdot \sqrt[3]{\color{blue}{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{1} \cdot \frac{\sqrt[3]{x}}{y}}}\right)\]
  12. Applied cbrt-prod0.8

    \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \left(\frac{x}{y} \cdot \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right)\right) \cdot \color{blue}{\left(\sqrt[3]{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{1}} \cdot \sqrt[3]{\frac{\sqrt[3]{x}}{y}}\right)}\right)\]
  13. Final simplification0.8

    \[\leadsto \mathsf{fma}\left(\frac{z}{t}, \frac{z}{t}, \left(\frac{x}{y} \cdot \left(\sqrt[3]{\frac{x}{y}} \cdot \sqrt[3]{\frac{x}{y}}\right)\right) \cdot \left(\sqrt[3]{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{1}} \cdot \sqrt[3]{\frac{\sqrt[3]{x}}{y}}\right)\right)\]

Reproduce

herbie shell --seed 2019353 +o rules:numerics
(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))))