Average Error: 24.3 → 8.3
Time: 20.2s
Precision: 64
\[x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}\]
\[\begin{array}{l} \mathbf{if}\;a \le -2.384298577098446946206942739732313054781 \cdot 10^{-114} \lor \neg \left(a \le 1.079346633002464646210311802463085357102 \cdot 10^{-104}\right):\\ \;\;\;\;\left(\frac{y - z}{a - z} \cdot \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right)\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{t}} \cdot \sqrt[3]{\sqrt[3]{t}}\right) \cdot \sqrt[3]{\sqrt[3]{t}}\right) + \mathsf{fma}\left(\frac{y - z}{a - z}, -x, x\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{y - z}{a - z} \cdot t + \frac{x \cdot y}{z}\\ \end{array}\]
x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}
\begin{array}{l}
\mathbf{if}\;a \le -2.384298577098446946206942739732313054781 \cdot 10^{-114} \lor \neg \left(a \le 1.079346633002464646210311802463085357102 \cdot 10^{-104}\right):\\
\;\;\;\;\left(\frac{y - z}{a - z} \cdot \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right)\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{t}} \cdot \sqrt[3]{\sqrt[3]{t}}\right) \cdot \sqrt[3]{\sqrt[3]{t}}\right) + \mathsf{fma}\left(\frac{y - z}{a - z}, -x, x\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{y - z}{a - z} \cdot t + \frac{x \cdot y}{z}\\

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r393389 = x;
        double r393390 = y;
        double r393391 = z;
        double r393392 = r393390 - r393391;
        double r393393 = t;
        double r393394 = r393393 - r393389;
        double r393395 = r393392 * r393394;
        double r393396 = a;
        double r393397 = r393396 - r393391;
        double r393398 = r393395 / r393397;
        double r393399 = r393389 + r393398;
        return r393399;
}

double f(double x, double y, double z, double t, double a) {
        double r393400 = a;
        double r393401 = -2.384298577098447e-114;
        bool r393402 = r393400 <= r393401;
        double r393403 = 1.0793466330024646e-104;
        bool r393404 = r393400 <= r393403;
        double r393405 = !r393404;
        bool r393406 = r393402 || r393405;
        double r393407 = y;
        double r393408 = z;
        double r393409 = r393407 - r393408;
        double r393410 = r393400 - r393408;
        double r393411 = r393409 / r393410;
        double r393412 = t;
        double r393413 = cbrt(r393412);
        double r393414 = r393413 * r393413;
        double r393415 = r393411 * r393414;
        double r393416 = cbrt(r393413);
        double r393417 = r393416 * r393416;
        double r393418 = r393417 * r393416;
        double r393419 = r393415 * r393418;
        double r393420 = x;
        double r393421 = -r393420;
        double r393422 = fma(r393411, r393421, r393420);
        double r393423 = r393419 + r393422;
        double r393424 = r393411 * r393412;
        double r393425 = r393420 * r393407;
        double r393426 = r393425 / r393408;
        double r393427 = r393424 + r393426;
        double r393428 = r393406 ? r393423 : r393427;
        return r393428;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Target

Original24.3
Target12.1
Herbie8.3
\[\begin{array}{l} \mathbf{if}\;z \lt -1.253613105609503593846459977496550767343 \cdot 10^{188}:\\ \;\;\;\;t - \frac{y}{z} \cdot \left(t - x\right)\\ \mathbf{elif}\;z \lt 4.446702369113811028051510715777703865332 \cdot 10^{64}:\\ \;\;\;\;x + \frac{y - z}{\frac{a - z}{t - x}}\\ \mathbf{else}:\\ \;\;\;\;t - \frac{y}{z} \cdot \left(t - x\right)\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if a < -2.384298577098447e-114 or 1.0793466330024646e-104 < a

    1. Initial program 22.3

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

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

      \[\leadsto \color{blue}{\frac{y - z}{a - z} \cdot \left(t - x\right) + x}\]
    5. Using strategy rm
    6. Applied sub-neg8.8

      \[\leadsto \frac{y - z}{a - z} \cdot \color{blue}{\left(t + \left(-x\right)\right)} + x\]
    7. Applied distribute-lft-in8.8

      \[\leadsto \color{blue}{\left(\frac{y - z}{a - z} \cdot t + \frac{y - z}{a - z} \cdot \left(-x\right)\right)} + x\]
    8. Applied associate-+l+6.3

      \[\leadsto \color{blue}{\frac{y - z}{a - z} \cdot t + \left(\frac{y - z}{a - z} \cdot \left(-x\right) + x\right)}\]
    9. Simplified6.3

      \[\leadsto \frac{y - z}{a - z} \cdot t + \color{blue}{\mathsf{fma}\left(\frac{y - z}{a - z}, -x, x\right)}\]
    10. Using strategy rm
    11. Applied add-cube-cbrt6.8

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

      \[\leadsto \color{blue}{\left(\frac{y - z}{a - z} \cdot \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right)\right) \cdot \sqrt[3]{t}} + \mathsf{fma}\left(\frac{y - z}{a - z}, -x, x\right)\]
    13. Using strategy rm
    14. Applied add-cube-cbrt7.0

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

    if -2.384298577098447e-114 < a < 1.0793466330024646e-104

    1. Initial program 29.3

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

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

      \[\leadsto \color{blue}{\frac{y - z}{a - z} \cdot \left(t - x\right) + x}\]
    5. Using strategy rm
    6. Applied sub-neg19.3

      \[\leadsto \frac{y - z}{a - z} \cdot \color{blue}{\left(t + \left(-x\right)\right)} + x\]
    7. Applied distribute-lft-in19.3

      \[\leadsto \color{blue}{\left(\frac{y - z}{a - z} \cdot t + \frac{y - z}{a - z} \cdot \left(-x\right)\right)} + x\]
    8. Applied associate-+l+11.4

      \[\leadsto \color{blue}{\frac{y - z}{a - z} \cdot t + \left(\frac{y - z}{a - z} \cdot \left(-x\right) + x\right)}\]
    9. Simplified11.4

      \[\leadsto \frac{y - z}{a - z} \cdot t + \color{blue}{\mathsf{fma}\left(\frac{y - z}{a - z}, -x, x\right)}\]
    10. Taylor expanded around inf 11.4

      \[\leadsto \frac{y - z}{a - z} \cdot t + \color{blue}{\frac{x \cdot y}{z}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification8.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -2.384298577098446946206942739732313054781 \cdot 10^{-114} \lor \neg \left(a \le 1.079346633002464646210311802463085357102 \cdot 10^{-104}\right):\\ \;\;\;\;\left(\frac{y - z}{a - z} \cdot \left(\sqrt[3]{t} \cdot \sqrt[3]{t}\right)\right) \cdot \left(\left(\sqrt[3]{\sqrt[3]{t}} \cdot \sqrt[3]{\sqrt[3]{t}}\right) \cdot \sqrt[3]{\sqrt[3]{t}}\right) + \mathsf{fma}\left(\frac{y - z}{a - z}, -x, x\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{y - z}{a - z} \cdot t + \frac{x \cdot y}{z}\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< z -1.25361310560950359e188) (- t (* (/ y z) (- t x))) (if (< z 4.44670236911381103e64) (+ x (/ (- y z) (/ (- a z) (- t x)))) (- t (* (/ y z) (- t x)))))

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