Average Error: 16.0 → 12.3
Time: 6.0s
Precision: 64
\[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
\[\begin{array}{l} \mathbf{if}\;t \le -3.67848913934849038 \cdot 10^{36} \lor \neg \left(t \le 6.08643278972120503 \cdot 10^{-18}\right):\\ \;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \frac{y}{\frac{t}{b}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{1 \cdot \left(x + \frac{y \cdot z}{t}\right)}{\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}\;t \le -3.67848913934849038 \cdot 10^{36} \lor \neg \left(t \le 6.08643278972120503 \cdot 10^{-18}\right):\\
\;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \frac{y}{\frac{t}{b}}}\\

\mathbf{else}:\\
\;\;\;\;\frac{1 \cdot \left(x + \frac{y \cdot z}{t}\right)}{\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 r753022 = x;
        double r753023 = y;
        double r753024 = z;
        double r753025 = r753023 * r753024;
        double r753026 = t;
        double r753027 = r753025 / r753026;
        double r753028 = r753022 + r753027;
        double r753029 = a;
        double r753030 = 1.0;
        double r753031 = r753029 + r753030;
        double r753032 = b;
        double r753033 = r753023 * r753032;
        double r753034 = r753033 / r753026;
        double r753035 = r753031 + r753034;
        double r753036 = r753028 / r753035;
        return r753036;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r753037 = t;
        double r753038 = -3.6784891393484904e+36;
        bool r753039 = r753037 <= r753038;
        double r753040 = 6.086432789721205e-18;
        bool r753041 = r753037 <= r753040;
        double r753042 = !r753041;
        bool r753043 = r753039 || r753042;
        double r753044 = x;
        double r753045 = y;
        double r753046 = z;
        double r753047 = r753037 / r753046;
        double r753048 = r753045 / r753047;
        double r753049 = r753044 + r753048;
        double r753050 = a;
        double r753051 = 1.0;
        double r753052 = r753050 + r753051;
        double r753053 = b;
        double r753054 = r753037 / r753053;
        double r753055 = r753045 / r753054;
        double r753056 = r753052 + r753055;
        double r753057 = r753049 / r753056;
        double r753058 = 1.0;
        double r753059 = r753045 * r753046;
        double r753060 = r753059 / r753037;
        double r753061 = r753044 + r753060;
        double r753062 = r753058 * r753061;
        double r753063 = r753045 * r753053;
        double r753064 = r753063 / r753037;
        double r753065 = r753052 + r753064;
        double r753066 = r753062 / r753065;
        double r753067 = r753043 ? r753057 : r753066;
        return r753067;
}

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.0
Target12.9
Herbie12.3
\[\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 t < -3.6784891393484904e+36 or 6.086432789721205e-18 < t

    1. Initial program 11.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*8.1

      \[\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*3.9

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

    if -3.6784891393484904e+36 < t < 6.086432789721205e-18

    1. Initial program 20.4

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

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

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

Reproduce

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