Average Error: 16.4 → 16.9
Time: 12.3s
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{y \cdot b}{t}}\]
\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{y \cdot b}{t}}
double f(double x, double y, double z, double t, double a, double b) {
        double r416359 = x;
        double r416360 = y;
        double r416361 = z;
        double r416362 = r416360 * r416361;
        double r416363 = t;
        double r416364 = r416362 / r416363;
        double r416365 = r416359 + r416364;
        double r416366 = a;
        double r416367 = 1.0;
        double r416368 = r416366 + r416367;
        double r416369 = b;
        double r416370 = r416360 * r416369;
        double r416371 = r416370 / r416363;
        double r416372 = r416368 + r416371;
        double r416373 = r416365 / r416372;
        return r416373;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r416374 = x;
        double r416375 = y;
        double r416376 = t;
        double r416377 = z;
        double r416378 = r416376 / r416377;
        double r416379 = r416375 / r416378;
        double r416380 = r416374 + r416379;
        double r416381 = a;
        double r416382 = 1.0;
        double r416383 = r416381 + r416382;
        double r416384 = b;
        double r416385 = r416375 * r416384;
        double r416386 = r416385 / r416376;
        double r416387 = r416383 + r416386;
        double r416388 = r416380 / r416387;
        return r416388;
}

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.4
Target13.4
Herbie16.9
\[\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 < 6.96560110865768e-39

    1. Initial program 12.8

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

      \[\leadsto \frac{x + \frac{y \cdot z}{t}}{\left(a + 1\right) + \color{blue}{\left(y \cdot b\right) \cdot \frac{1}{t}}}\]
    4. Using strategy rm
    5. Applied div-inv12.8

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

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

    if 6.96560110865768e-39 < y

    1. Initial program 26.2

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

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

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

Reproduce

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