Average Error: 16.9 → 13.4
Time: 11.0s
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 -7.124834457221984082927906141414149452623 \cdot 10^{-28} \lor \neg \left(y \le 4.435895604434966039333651561130958554099 \cdot 10^{91}\right):\\ \;\;\;\;\frac{1}{\frac{\left(a + 1\right) + y \cdot \frac{b}{t}}{x + \frac{y}{\frac{t}{z}}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{1}{\frac{t}{y \cdot b}}}\\ \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 -7.124834457221984082927906141414149452623 \cdot 10^{-28} \lor \neg \left(y \le 4.435895604434966039333651561130958554099 \cdot 10^{91}\right):\\
\;\;\;\;\frac{1}{\frac{\left(a + 1\right) + y \cdot \frac{b}{t}}{x + \frac{y}{\frac{t}{z}}}}\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r510007 = x;
        double r510008 = y;
        double r510009 = z;
        double r510010 = r510008 * r510009;
        double r510011 = t;
        double r510012 = r510010 / r510011;
        double r510013 = r510007 + r510012;
        double r510014 = a;
        double r510015 = 1.0;
        double r510016 = r510014 + r510015;
        double r510017 = b;
        double r510018 = r510008 * r510017;
        double r510019 = r510018 / r510011;
        double r510020 = r510016 + r510019;
        double r510021 = r510013 / r510020;
        return r510021;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r510022 = y;
        double r510023 = -7.124834457221984e-28;
        bool r510024 = r510022 <= r510023;
        double r510025 = 4.435895604434966e+91;
        bool r510026 = r510022 <= r510025;
        double r510027 = !r510026;
        bool r510028 = r510024 || r510027;
        double r510029 = 1.0;
        double r510030 = a;
        double r510031 = 1.0;
        double r510032 = r510030 + r510031;
        double r510033 = b;
        double r510034 = t;
        double r510035 = r510033 / r510034;
        double r510036 = r510022 * r510035;
        double r510037 = r510032 + r510036;
        double r510038 = x;
        double r510039 = z;
        double r510040 = r510034 / r510039;
        double r510041 = r510022 / r510040;
        double r510042 = r510038 + r510041;
        double r510043 = r510037 / r510042;
        double r510044 = r510029 / r510043;
        double r510045 = r510022 * r510039;
        double r510046 = r510045 / r510034;
        double r510047 = r510038 + r510046;
        double r510048 = r510022 * r510033;
        double r510049 = r510034 / r510048;
        double r510050 = r510029 / r510049;
        double r510051 = r510032 + r510050;
        double r510052 = r510047 / r510051;
        double r510053 = r510028 ? r510044 : r510052;
        return r510053;
}

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.9
Target13.1
Herbie13.4
\[\begin{array}{l} \mathbf{if}\;t \lt -1.365908536631008841640163147697088508132 \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.036967103737245906066829435890093573122 \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 < -7.124834457221984e-28 or 4.435895604434966e+91 < y

    1. Initial program 31.6

      \[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity31.6

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

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

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

      \[\leadsto \frac{x + \color{blue}{\frac{y}{\frac{t}{z}}}}{\left(a + 1\right) + y \cdot \frac{b}{t}}\]
    8. Using strategy rm
    9. Applied clear-num23.7

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

    if -7.124834457221984e-28 < y < 4.435895604434966e+91

    1. Initial program 5.2

      \[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
    2. Using strategy rm
    3. Applied clear-num5.2

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -7.124834457221984082927906141414149452623 \cdot 10^{-28} \lor \neg \left(y \le 4.435895604434966039333651561130958554099 \cdot 10^{91}\right):\\ \;\;\;\;\frac{1}{\frac{\left(a + 1\right) + y \cdot \frac{b}{t}}{x + \frac{y}{\frac{t}{z}}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{1}{\frac{t}{y \cdot b}}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019325 
(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))))