Average Error: 16.6 → 15.7
Time: 11.8s
Precision: 64
\[\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}\]
\[\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \frac{1}{\frac{\frac{t}{y}}{b}}}\]
\frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \frac{y \cdot b}{t}}
\frac{x + \frac{y}{\frac{t}{z}}}{\left(a + 1\right) + \frac{1}{\frac{\frac{t}{y}}{b}}}
double f(double x, double y, double z, double t, double a, double b) {
        double r487207 = x;
        double r487208 = y;
        double r487209 = z;
        double r487210 = r487208 * r487209;
        double r487211 = t;
        double r487212 = r487210 / r487211;
        double r487213 = r487207 + r487212;
        double r487214 = a;
        double r487215 = 1.0;
        double r487216 = r487214 + r487215;
        double r487217 = b;
        double r487218 = r487208 * r487217;
        double r487219 = r487218 / r487211;
        double r487220 = r487216 + r487219;
        double r487221 = r487213 / r487220;
        return r487221;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r487222 = x;
        double r487223 = y;
        double r487224 = t;
        double r487225 = z;
        double r487226 = r487224 / r487225;
        double r487227 = r487223 / r487226;
        double r487228 = r487222 + r487227;
        double r487229 = a;
        double r487230 = 1.0;
        double r487231 = r487229 + r487230;
        double r487232 = 1.0;
        double r487233 = r487224 / r487223;
        double r487234 = b;
        double r487235 = r487233 / r487234;
        double r487236 = r487232 / r487235;
        double r487237 = r487231 + r487236;
        double r487238 = r487228 / r487237;
        return r487238;
}

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.5
Herbie15.7
\[\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 t < -3.472389822925871e-16

    1. Initial program 12.3

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

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

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

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

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

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

    if -3.472389822925871e-16 < t < 2.270696878428664e-35

    1. Initial program 22.5

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

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

    if 2.270696878428664e-35 < 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 clear-num11.5

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

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

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

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

Reproduce

herbie shell --seed 2019303 
(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.0369671037372459e-130) (/ z b) (* 1 (* (+ x (* (/ y t) z)) (/ 1 (+ (+ a 1) (* (/ y t) b)))))))

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