Average Error: 16.1 → 16.1
Time: 8.4s
Precision: 64
\[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
\[\begin{array}{l} \mathbf{if}\;z \le 3.179542260420923888729565121358763298664 \cdot 10^{-214}:\\ \;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\ \mathbf{elif}\;z \le 1.23554449704226627892297768932324670802 \cdot 10^{48}:\\ \;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y}{\frac{t}{b}}}\\ \mathbf{else}:\\ \;\;\;\;\left(x + \frac{y \cdot z}{t}\right) \cdot \frac{1}{\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}\;z \le 3.179542260420923888729565121358763298664 \cdot 10^{-214}:\\
\;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\

\mathbf{elif}\;z \le 1.23554449704226627892297768932324670802 \cdot 10^{48}:\\
\;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y}{\frac{t}{b}}}\\

\mathbf{else}:\\
\;\;\;\;\left(x + \frac{y \cdot z}{t}\right) \cdot \frac{1}{\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 r593091 = x;
        double r593092 = y;
        double r593093 = z;
        double r593094 = r593092 * r593093;
        double r593095 = t;
        double r593096 = r593094 / r593095;
        double r593097 = r593091 + r593096;
        double r593098 = a;
        double r593099 = 1.0;
        double r593100 = r593098 + r593099;
        double r593101 = b;
        double r593102 = r593092 * r593101;
        double r593103 = r593102 / r593095;
        double r593104 = r593100 + r593103;
        double r593105 = r593097 / r593104;
        return r593105;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r593106 = z;
        double r593107 = 3.179542260420924e-214;
        bool r593108 = r593106 <= r593107;
        double r593109 = x;
        double r593110 = y;
        double r593111 = t;
        double r593112 = r593111 / r593106;
        double r593113 = r593110 / r593112;
        double r593114 = r593109 + r593113;
        double r593115 = a;
        double r593116 = 1.0;
        double r593117 = r593115 + r593116;
        double r593118 = b;
        double r593119 = r593110 * r593118;
        double r593120 = r593119 / r593111;
        double r593121 = r593117 + r593120;
        double r593122 = r593114 / r593121;
        double r593123 = 1.2355444970422663e+48;
        bool r593124 = r593106 <= r593123;
        double r593125 = r593110 * r593106;
        double r593126 = r593125 / r593111;
        double r593127 = r593109 + r593126;
        double r593128 = r593111 / r593118;
        double r593129 = r593110 / r593128;
        double r593130 = r593117 + r593129;
        double r593131 = r593127 / r593130;
        double r593132 = 1.0;
        double r593133 = r593132 / r593121;
        double r593134 = r593127 * r593133;
        double r593135 = r593124 ? r593131 : r593134;
        double r593136 = r593108 ? r593122 : r593135;
        return r593136;
}

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.1
Target12.8
Herbie16.1
\[\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 3 regimes
  2. if z < 3.179542260420924e-214

    1. Initial program 15.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*15.5

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

    if 3.179542260420924e-214 < z < 1.2355444970422663e+48

    1. Initial program 11.9

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

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

    if 1.2355444970422663e+48 < z

    1. Initial program 24.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le 3.179542260420923888729565121358763298664 \cdot 10^{-214}:\\ \;\;\;\;\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\ \mathbf{elif}\;z \le 1.23554449704226627892297768932324670802 \cdot 10^{48}:\\ \;\;\;\;\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y}{\frac{t}{b}}}\\ \mathbf{else}:\\ \;\;\;\;\left(x + \frac{y \cdot z}{t}\right) \cdot \frac{1}{\left(a + 1\right) + \frac{y \cdot b}{t}}\\ \end{array}\]

Reproduce

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