Average Error: 11.0 → 9.7
Time: 13.6s
Precision: 64
\[\frac{x - y \cdot z}{t - a \cdot z}\]
\[\begin{array}{l} \mathbf{if}\;a \le -588618441067951585614626816:\\ \;\;\;\;\frac{x}{t - z \cdot a} - \frac{\frac{\frac{z}{\sqrt[3]{\frac{t - z \cdot a}{y}}}}{\sqrt[3]{\frac{t - z \cdot a}{y}}}}{\sqrt[3]{\frac{t - z \cdot a}{y}}}\\ \mathbf{elif}\;a \le -1.98739129912160760220606665896447740271 \cdot 10^{-48} \lor \neg \left(a \le 2.204438167997821044006514459092402160216 \cdot 10^{-232}\right) \land a \le 1.39431147208504746337234663751222001764 \cdot 10^{-25}:\\ \;\;\;\;\frac{1}{\frac{t - z \cdot a}{x - y \cdot z}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{t - z \cdot a} - z \cdot \frac{1}{\frac{t}{y} - \frac{z}{\frac{y}{a}}}\\ \end{array}\]
\frac{x - y \cdot z}{t - a \cdot z}
\begin{array}{l}
\mathbf{if}\;a \le -588618441067951585614626816:\\
\;\;\;\;\frac{x}{t - z \cdot a} - \frac{\frac{\frac{z}{\sqrt[3]{\frac{t - z \cdot a}{y}}}}{\sqrt[3]{\frac{t - z \cdot a}{y}}}}{\sqrt[3]{\frac{t - z \cdot a}{y}}}\\

\mathbf{elif}\;a \le -1.98739129912160760220606665896447740271 \cdot 10^{-48} \lor \neg \left(a \le 2.204438167997821044006514459092402160216 \cdot 10^{-232}\right) \land a \le 1.39431147208504746337234663751222001764 \cdot 10^{-25}:\\
\;\;\;\;\frac{1}{\frac{t - z \cdot a}{x - y \cdot z}}\\

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r590642 = x;
        double r590643 = y;
        double r590644 = z;
        double r590645 = r590643 * r590644;
        double r590646 = r590642 - r590645;
        double r590647 = t;
        double r590648 = a;
        double r590649 = r590648 * r590644;
        double r590650 = r590647 - r590649;
        double r590651 = r590646 / r590650;
        return r590651;
}

double f(double x, double y, double z, double t, double a) {
        double r590652 = a;
        double r590653 = -5.886184410679516e+26;
        bool r590654 = r590652 <= r590653;
        double r590655 = x;
        double r590656 = t;
        double r590657 = z;
        double r590658 = r590657 * r590652;
        double r590659 = r590656 - r590658;
        double r590660 = r590655 / r590659;
        double r590661 = y;
        double r590662 = r590659 / r590661;
        double r590663 = cbrt(r590662);
        double r590664 = r590657 / r590663;
        double r590665 = r590664 / r590663;
        double r590666 = r590665 / r590663;
        double r590667 = r590660 - r590666;
        double r590668 = -1.9873912991216076e-48;
        bool r590669 = r590652 <= r590668;
        double r590670 = 2.204438167997821e-232;
        bool r590671 = r590652 <= r590670;
        double r590672 = !r590671;
        double r590673 = 1.3943114720850475e-25;
        bool r590674 = r590652 <= r590673;
        bool r590675 = r590672 && r590674;
        bool r590676 = r590669 || r590675;
        double r590677 = 1.0;
        double r590678 = r590661 * r590657;
        double r590679 = r590655 - r590678;
        double r590680 = r590659 / r590679;
        double r590681 = r590677 / r590680;
        double r590682 = r590656 / r590661;
        double r590683 = r590661 / r590652;
        double r590684 = r590657 / r590683;
        double r590685 = r590682 - r590684;
        double r590686 = r590677 / r590685;
        double r590687 = r590657 * r590686;
        double r590688 = r590660 - r590687;
        double r590689 = r590676 ? r590681 : r590688;
        double r590690 = r590654 ? r590667 : r590689;
        return r590690;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original11.0
Target1.7
Herbie9.7
\[\begin{array}{l} \mathbf{if}\;z \lt -32113435955957344:\\ \;\;\;\;\frac{x}{t - a \cdot z} - \frac{y}{\frac{t}{z} - a}\\ \mathbf{elif}\;z \lt 3.51395223729782958298856956410892592016 \cdot 10^{-86}:\\ \;\;\;\;\left(x - y \cdot z\right) \cdot \frac{1}{t - a \cdot z}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{t - a \cdot z} - \frac{y}{\frac{t}{z} - a}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if a < -5.886184410679516e+26

    1. Initial program 16.5

      \[\frac{x - y \cdot z}{t - a \cdot z}\]
    2. Using strategy rm
    3. Applied div-sub16.5

      \[\leadsto \color{blue}{\frac{x}{t - a \cdot z} - \frac{y \cdot z}{t - a \cdot z}}\]
    4. Simplified15.3

      \[\leadsto \frac{x}{t - a \cdot z} - \color{blue}{z \cdot \frac{y}{t - a \cdot z}}\]
    5. Using strategy rm
    6. Applied clear-num15.4

      \[\leadsto \frac{x}{t - a \cdot z} - z \cdot \color{blue}{\frac{1}{\frac{t - a \cdot z}{y}}}\]
    7. Using strategy rm
    8. Applied un-div-inv15.3

      \[\leadsto \frac{x}{t - a \cdot z} - \color{blue}{\frac{z}{\frac{t - a \cdot z}{y}}}\]
    9. Using strategy rm
    10. Applied add-cube-cbrt15.6

      \[\leadsto \frac{x}{t - a \cdot z} - \frac{z}{\color{blue}{\left(\sqrt[3]{\frac{t - a \cdot z}{y}} \cdot \sqrt[3]{\frac{t - a \cdot z}{y}}\right) \cdot \sqrt[3]{\frac{t - a \cdot z}{y}}}}\]
    11. Applied associate-/r*15.6

      \[\leadsto \frac{x}{t - a \cdot z} - \color{blue}{\frac{\frac{z}{\sqrt[3]{\frac{t - a \cdot z}{y}} \cdot \sqrt[3]{\frac{t - a \cdot z}{y}}}}{\sqrt[3]{\frac{t - a \cdot z}{y}}}}\]
    12. Simplified15.6

      \[\leadsto \frac{x}{t - a \cdot z} - \frac{\color{blue}{\frac{\frac{z}{\sqrt[3]{\frac{t - a \cdot z}{y}}}}{\sqrt[3]{\frac{t - a \cdot z}{y}}}}}{\sqrt[3]{\frac{t - a \cdot z}{y}}}\]

    if -5.886184410679516e+26 < a < -1.9873912991216076e-48 or 2.204438167997821e-232 < a < 1.3943114720850475e-25

    1. Initial program 6.3

      \[\frac{x - y \cdot z}{t - a \cdot z}\]
    2. Using strategy rm
    3. Applied clear-num6.5

      \[\leadsto \color{blue}{\frac{1}{\frac{t - a \cdot z}{x - y \cdot z}}}\]
    4. Simplified6.5

      \[\leadsto \frac{1}{\color{blue}{\frac{t - a \cdot z}{x - z \cdot y}}}\]

    if -1.9873912991216076e-48 < a < 2.204438167997821e-232 or 1.3943114720850475e-25 < a

    1. Initial program 10.3

      \[\frac{x - y \cdot z}{t - a \cdot z}\]
    2. Using strategy rm
    3. Applied div-sub10.3

      \[\leadsto \color{blue}{\frac{x}{t - a \cdot z} - \frac{y \cdot z}{t - a \cdot z}}\]
    4. Simplified9.2

      \[\leadsto \frac{x}{t - a \cdot z} - \color{blue}{z \cdot \frac{y}{t - a \cdot z}}\]
    5. Using strategy rm
    6. Applied clear-num9.3

      \[\leadsto \frac{x}{t - a \cdot z} - z \cdot \color{blue}{\frac{1}{\frac{t - a \cdot z}{y}}}\]
    7. Using strategy rm
    8. Applied div-sub10.5

      \[\leadsto \frac{x}{t - a \cdot z} - z \cdot \frac{1}{\color{blue}{\frac{t}{y} - \frac{a \cdot z}{y}}}\]
    9. Simplified8.4

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \le -588618441067951585614626816:\\ \;\;\;\;\frac{x}{t - z \cdot a} - \frac{\frac{\frac{z}{\sqrt[3]{\frac{t - z \cdot a}{y}}}}{\sqrt[3]{\frac{t - z \cdot a}{y}}}}{\sqrt[3]{\frac{t - z \cdot a}{y}}}\\ \mathbf{elif}\;a \le -1.98739129912160760220606665896447740271 \cdot 10^{-48} \lor \neg \left(a \le 2.204438167997821044006514459092402160216 \cdot 10^{-232}\right) \land a \le 1.39431147208504746337234663751222001764 \cdot 10^{-25}:\\ \;\;\;\;\frac{1}{\frac{t - z \cdot a}{x - y \cdot z}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{t - z \cdot a} - z \cdot \frac{1}{\frac{t}{y} - \frac{z}{\frac{y}{a}}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019174 
(FPCore (x y z t a)
  :name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, A"

  :herbie-target
  (if (< z -32113435955957344.0) (- (/ x (- t (* a z))) (/ y (- (/ t z) a))) (if (< z 3.5139522372978296e-86) (* (- x (* y z)) (/ 1.0 (- t (* a z)))) (- (/ x (- t (* a z))) (/ y (- (/ t z) a)))))

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