Average Error: 10.2 → 7.0
Time: 27.2s
Precision: 64
\[\frac{x - y \cdot z}{t - a \cdot z}\]
\[\begin{array}{l} \mathbf{if}\;z \le -4.146017476034741648215512685179725914701 \cdot 10^{-38} \lor \neg \left(z \le 1.83962191097694431059745739898348814551 \cdot 10^{43}\right):\\ \;\;\;\;\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\frac{t - a \cdot z}{\sqrt[3]{x}}} - y \cdot \frac{z}{t - a \cdot z}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\frac{t - a \cdot z}{x - y \cdot z}}\\ \end{array}\]
\frac{x - y \cdot z}{t - a \cdot z}
\begin{array}{l}
\mathbf{if}\;z \le -4.146017476034741648215512685179725914701 \cdot 10^{-38} \lor \neg \left(z \le 1.83962191097694431059745739898348814551 \cdot 10^{43}\right):\\
\;\;\;\;\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\frac{t - a \cdot z}{\sqrt[3]{x}}} - y \cdot \frac{z}{t - a \cdot z}\\

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

\end{array}
double f(double x, double y, double z, double t, double a) {
        double r463852 = x;
        double r463853 = y;
        double r463854 = z;
        double r463855 = r463853 * r463854;
        double r463856 = r463852 - r463855;
        double r463857 = t;
        double r463858 = a;
        double r463859 = r463858 * r463854;
        double r463860 = r463857 - r463859;
        double r463861 = r463856 / r463860;
        return r463861;
}

double f(double x, double y, double z, double t, double a) {
        double r463862 = z;
        double r463863 = -4.1460174760347416e-38;
        bool r463864 = r463862 <= r463863;
        double r463865 = 1.8396219109769443e+43;
        bool r463866 = r463862 <= r463865;
        double r463867 = !r463866;
        bool r463868 = r463864 || r463867;
        double r463869 = x;
        double r463870 = cbrt(r463869);
        double r463871 = r463870 * r463870;
        double r463872 = t;
        double r463873 = a;
        double r463874 = r463873 * r463862;
        double r463875 = r463872 - r463874;
        double r463876 = r463875 / r463870;
        double r463877 = r463871 / r463876;
        double r463878 = y;
        double r463879 = r463862 / r463875;
        double r463880 = r463878 * r463879;
        double r463881 = r463877 - r463880;
        double r463882 = 1.0;
        double r463883 = r463878 * r463862;
        double r463884 = r463869 - r463883;
        double r463885 = r463875 / r463884;
        double r463886 = r463882 / r463885;
        double r463887 = r463868 ? r463881 : r463886;
        return r463887;
}

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

Original10.2
Target1.8
Herbie7.0
\[\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 2 regimes
  2. if z < -4.1460174760347416e-38 or 1.8396219109769443e+43 < z

    1. Initial program 20.3

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

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

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

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

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

    if -4.1460174760347416e-38 < z < 1.8396219109769443e+43

    1. Initial program 0.4

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -4.146017476034741648215512685179725914701 \cdot 10^{-38} \lor \neg \left(z \le 1.83962191097694431059745739898348814551 \cdot 10^{43}\right):\\ \;\;\;\;\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{\frac{t - a \cdot z}{\sqrt[3]{x}}} - y \cdot \frac{z}{t - a \cdot z}\\ \mathbf{else}:\\ \;\;\;\;\frac{1}{\frac{t - a \cdot z}{x - y \cdot z}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019325 +o rules:numerics
(FPCore (x y z t a)
  :name "Diagrams.Solve.Tridiagonal:solveTriDiagonal from diagrams-solve-0.1, A"
  :precision binary64

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

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