Average Error: 25.0 → 12.7
Time: 8.6s
Precision: 64
\[x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\]
\[\mathsf{fma}\left(\frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{1}, \frac{\sqrt[3]{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \left(\frac{\sqrt[3]{\sqrt[3]{y - x}}}{\sqrt[3]{a - t}} \cdot \left(z - t\right)\right), x\right)\]
x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}
\mathsf{fma}\left(\frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{1}, \frac{\sqrt[3]{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \left(\frac{\sqrt[3]{\sqrt[3]{y - x}}}{\sqrt[3]{a - t}} \cdot \left(z - t\right)\right), x\right)
double f(double x, double y, double z, double t, double a) {
        double r1169103 = x;
        double r1169104 = y;
        double r1169105 = r1169104 - r1169103;
        double r1169106 = z;
        double r1169107 = t;
        double r1169108 = r1169106 - r1169107;
        double r1169109 = r1169105 * r1169108;
        double r1169110 = a;
        double r1169111 = r1169110 - r1169107;
        double r1169112 = r1169109 / r1169111;
        double r1169113 = r1169103 + r1169112;
        return r1169113;
}

double f(double x, double y, double z, double t, double a) {
        double r1169114 = y;
        double r1169115 = x;
        double r1169116 = r1169114 - r1169115;
        double r1169117 = cbrt(r1169116);
        double r1169118 = r1169117 * r1169117;
        double r1169119 = 1.0;
        double r1169120 = r1169118 / r1169119;
        double r1169121 = cbrt(r1169118);
        double r1169122 = a;
        double r1169123 = t;
        double r1169124 = r1169122 - r1169123;
        double r1169125 = cbrt(r1169124);
        double r1169126 = r1169125 * r1169125;
        double r1169127 = r1169121 / r1169126;
        double r1169128 = cbrt(r1169117);
        double r1169129 = r1169128 / r1169125;
        double r1169130 = z;
        double r1169131 = r1169130 - r1169123;
        double r1169132 = r1169129 * r1169131;
        double r1169133 = r1169127 * r1169132;
        double r1169134 = fma(r1169120, r1169133, r1169115);
        return r1169134;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Target

Original25.0
Target9.3
Herbie12.7
\[\begin{array}{l} \mathbf{if}\;a \lt -1.6153062845442575 \cdot 10^{-142}:\\ \;\;\;\;x + \frac{y - x}{1} \cdot \frac{z - t}{a - t}\\ \mathbf{elif}\;a \lt 3.7744031700831742 \cdot 10^{-182}:\\ \;\;\;\;y - \frac{z}{t} \cdot \left(y - x\right)\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y - x}{1} \cdot \frac{z - t}{a - t}\\ \end{array}\]

Derivation

  1. Initial program 25.0

    \[x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\]
  2. Simplified15.1

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

    \[\leadsto \color{blue}{\frac{y - x}{a - t} \cdot \left(z - t\right) + x}\]
  5. Using strategy rm
  6. Applied *-un-lft-identity15.2

    \[\leadsto \frac{y - x}{\color{blue}{1 \cdot \left(a - t\right)}} \cdot \left(z - t\right) + x\]
  7. Applied add-cube-cbrt15.8

    \[\leadsto \frac{\color{blue}{\left(\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}\right) \cdot \sqrt[3]{y - x}}}{1 \cdot \left(a - t\right)} \cdot \left(z - t\right) + x\]
  8. Applied times-frac15.8

    \[\leadsto \color{blue}{\left(\frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{1} \cdot \frac{\sqrt[3]{y - x}}{a - t}\right)} \cdot \left(z - t\right) + x\]
  9. Applied associate-*l*13.0

    \[\leadsto \color{blue}{\frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{1} \cdot \left(\frac{\sqrt[3]{y - x}}{a - t} \cdot \left(z - t\right)\right)} + x\]
  10. Using strategy rm
  11. Applied add-cube-cbrt13.2

    \[\leadsto \frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{1} \cdot \left(\frac{\sqrt[3]{y - x}}{\color{blue}{\left(\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}\right) \cdot \sqrt[3]{a - t}}} \cdot \left(z - t\right)\right) + x\]
  12. Applied add-cube-cbrt13.2

    \[\leadsto \frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{1} \cdot \left(\frac{\sqrt[3]{\color{blue}{\left(\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}\right) \cdot \sqrt[3]{y - x}}}}{\left(\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}\right) \cdot \sqrt[3]{a - t}} \cdot \left(z - t\right)\right) + x\]
  13. Applied cbrt-prod13.3

    \[\leadsto \frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{1} \cdot \left(\frac{\color{blue}{\sqrt[3]{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}} \cdot \sqrt[3]{\sqrt[3]{y - x}}}}{\left(\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}\right) \cdot \sqrt[3]{a - t}} \cdot \left(z - t\right)\right) + x\]
  14. Applied times-frac13.3

    \[\leadsto \frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{1} \cdot \left(\color{blue}{\left(\frac{\sqrt[3]{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \frac{\sqrt[3]{\sqrt[3]{y - x}}}{\sqrt[3]{a - t}}\right)} \cdot \left(z - t\right)\right) + x\]
  15. Applied associate-*l*12.7

    \[\leadsto \frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{1} \cdot \color{blue}{\left(\frac{\sqrt[3]{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \left(\frac{\sqrt[3]{\sqrt[3]{y - x}}}{\sqrt[3]{a - t}} \cdot \left(z - t\right)\right)\right)} + x\]
  16. Using strategy rm
  17. Applied fma-def12.7

    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}{1}, \frac{\sqrt[3]{\sqrt[3]{y - x} \cdot \sqrt[3]{y - x}}}{\sqrt[3]{a - t} \cdot \sqrt[3]{a - t}} \cdot \left(\frac{\sqrt[3]{\sqrt[3]{y - x}}}{\sqrt[3]{a - t}} \cdot \left(z - t\right)\right), x\right)}\]
  18. Final simplification12.7

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

Reproduce

herbie shell --seed 2020025 +o rules:numerics
(FPCore (x y z t a)
  :name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
  :precision binary64

  :herbie-target
  (if (< a -1.6153062845442575e-142) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t)))) (if (< a 3.774403170083174e-182) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t))))))

  (+ x (/ (* (- y x) (- z t)) (- a t))))