Average Error: 10.2 → 7.0
Time: 28.1s
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 r428510 = x;
        double r428511 = y;
        double r428512 = z;
        double r428513 = r428511 * r428512;
        double r428514 = r428510 - r428513;
        double r428515 = t;
        double r428516 = a;
        double r428517 = r428516 * r428512;
        double r428518 = r428515 - r428517;
        double r428519 = r428514 / r428518;
        return r428519;
}

double f(double x, double y, double z, double t, double a) {
        double r428520 = z;
        double r428521 = -4.1460174760347416e-38;
        bool r428522 = r428520 <= r428521;
        double r428523 = 1.8396219109769443e+43;
        bool r428524 = r428520 <= r428523;
        double r428525 = !r428524;
        bool r428526 = r428522 || r428525;
        double r428527 = x;
        double r428528 = cbrt(r428527);
        double r428529 = r428528 * r428528;
        double r428530 = t;
        double r428531 = a;
        double r428532 = r428531 * r428520;
        double r428533 = r428530 - r428532;
        double r428534 = r428533 / r428528;
        double r428535 = r428529 / r428534;
        double r428536 = y;
        double r428537 = r428520 / r428533;
        double r428538 = r428536 * r428537;
        double r428539 = r428535 - r428538;
        double r428540 = 1.0;
        double r428541 = r428536 * r428520;
        double r428542 = r428527 - r428541;
        double r428543 = r428533 / r428542;
        double r428544 = r428540 / r428543;
        double r428545 = r428526 ? r428539 : r428544;
        return r428545;
}

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))))