Average Error: 16.6 → 13.4
Time: 6.8s
Precision: 64
\[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
\[\begin{array}{l} \mathbf{if}\;y \le -1.00157721529175776 \cdot 10^{-36} \lor \neg \left(y \le 8.0593349417547793 \cdot 10^{-133}\right):\\ \;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \frac{y}{\frac{t}{b}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x + \frac{1}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{y}{\frac{\sqrt[3]{t}}{z}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\ \end{array}\]
\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}
\begin{array}{l}
\mathbf{if}\;y \le -1.00157721529175776 \cdot 10^{-36} \lor \neg \left(y \le 8.0593349417547793 \cdot 10^{-133}\right):\\
\;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \frac{y}{\frac{t}{b}}}\\

\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{1}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{y}{\frac{\sqrt[3]{t}}{z}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r673464 = x;
        double r673465 = y;
        double r673466 = z;
        double r673467 = r673465 * r673466;
        double r673468 = t;
        double r673469 = r673467 / r673468;
        double r673470 = r673464 + r673469;
        double r673471 = a;
        double r673472 = 1.0;
        double r673473 = r673471 + r673472;
        double r673474 = b;
        double r673475 = r673465 * r673474;
        double r673476 = r673475 / r673468;
        double r673477 = r673473 + r673476;
        double r673478 = r673470 / r673477;
        return r673478;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r673479 = y;
        double r673480 = -1.0015772152917578e-36;
        bool r673481 = r673479 <= r673480;
        double r673482 = 8.05933494175478e-133;
        bool r673483 = r673479 <= r673482;
        double r673484 = !r673483;
        bool r673485 = r673481 || r673484;
        double r673486 = x;
        double r673487 = t;
        double r673488 = z;
        double r673489 = r673487 / r673488;
        double r673490 = r673479 / r673489;
        double r673491 = r673486 + r673490;
        double r673492 = a;
        double r673493 = 1.0;
        double r673494 = r673492 + r673493;
        double r673495 = b;
        double r673496 = r673487 / r673495;
        double r673497 = r673479 / r673496;
        double r673498 = r673494 + r673497;
        double r673499 = r673491 / r673498;
        double r673500 = 1.0;
        double r673501 = cbrt(r673487);
        double r673502 = r673501 * r673501;
        double r673503 = r673500 / r673502;
        double r673504 = r673501 / r673488;
        double r673505 = r673479 / r673504;
        double r673506 = r673503 * r673505;
        double r673507 = r673486 + r673506;
        double r673508 = r673479 * r673495;
        double r673509 = r673508 / r673487;
        double r673510 = r673494 + r673509;
        double r673511 = r673507 / r673510;
        double r673512 = r673485 ? r673499 : r673511;
        return r673512;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original16.6
Target13.1
Herbie13.4
\[\begin{array}{l} \mathbf{if}\;t \lt -1.3659085366310088 \cdot 10^{-271}:\\ \;\;\;\;1 \cdot \left(\left(x + \frac{y}{t} \cdot z\right) \cdot \frac{1}{\left(a + 1\right) + \frac{y}{t} \cdot b}\right)\\ \mathbf{elif}\;t \lt 3.0369671037372459 \cdot 10^{-130}:\\ \;\;\;\;\frac{z}{b}\\ \mathbf{else}:\\ \;\;\;\;1 \cdot \left(\left(x + \frac{y}{t} \cdot z\right) \cdot \frac{1}{\left(a + 1\right) + \frac{y}{t} \cdot b}\right)\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if y < -1.0015772152917578e-36 or 8.05933494175478e-133 < y

    1. Initial program 25.0

      \[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
    2. Using strategy rm
    3. Applied associate-/l*22.8

      \[\leadsto \frac{x + \color{blue}{\frac{y}{\frac{t}{z}}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
    4. Using strategy rm
    5. Applied associate-/l*19.5

      \[\leadsto \frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \color{blue}{\frac{y}{\frac{t}{b}}}}\]

    if -1.0015772152917578e-36 < y < 8.05933494175478e-133

    1. Initial program 2.5

      \[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
    2. Using strategy rm
    3. Applied associate-/l*7.0

      \[\leadsto \frac{x + \color{blue}{\frac{y}{\frac{t}{z}}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity7.0

      \[\leadsto \frac{x + \frac{y}{\frac{t}{\color{blue}{1 \cdot z}}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
    6. Applied add-cube-cbrt7.2

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

      \[\leadsto \frac{x + \frac{y}{\color{blue}{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{1} \cdot \frac{\sqrt[3]{t}}{z}}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
    8. Applied *-un-lft-identity7.2

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

      \[\leadsto \frac{x + \color{blue}{\frac{1}{\frac{\sqrt[3]{t} \cdot \sqrt[3]{t}}{1}} \cdot \frac{y}{\frac{\sqrt[3]{t}}{z}}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
    10. Simplified3.1

      \[\leadsto \frac{x + \color{blue}{\frac{1}{\sqrt[3]{t} \cdot \sqrt[3]{t}}} \cdot \frac{y}{\frac{\sqrt[3]{t}}{z}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification13.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -1.00157721529175776 \cdot 10^{-36} \lor \neg \left(y \le 8.0593349417547793 \cdot 10^{-133}\right):\\ \;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \frac{y}{\frac{t}{b}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x + \frac{1}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{y}{\frac{\sqrt[3]{t}}{z}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< t -1.3659085366310088e-271) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b))))) (if (< t 3.036967103737246e-130) (/ z b) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b)))))))

  (/ (+ x (/ (* y z) t)) (+ (+ a 1) (/ (* y b) t))))