Average Error: 16.4 → 16.7
Time: 11.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 r616854 = x;
        double r616855 = y;
        double r616856 = z;
        double r616857 = r616855 * r616856;
        double r616858 = t;
        double r616859 = r616857 / r616858;
        double r616860 = r616854 + r616859;
        double r616861 = a;
        double r616862 = 1.0;
        double r616863 = r616861 + r616862;
        double r616864 = b;
        double r616865 = r616855 * r616864;
        double r616866 = r616865 / r616858;
        double r616867 = r616863 + r616866;
        double r616868 = r616860 / r616867;
        return r616868;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r616869 = x;
        double r616870 = y;
        double r616871 = t;
        double r616872 = z;
        double r616873 = r616871 / r616872;
        double r616874 = r616870 / r616873;
        double r616875 = r616869 + r616874;
        double r616876 = a;
        double r616877 = 1.0;
        double r616878 = r616876 + r616877;
        double r616879 = b;
        double r616880 = r616870 * r616879;
        double r616881 = r616880 / r616871;
        double r616882 = r616878 + r616881;
        double r616883 = r616875 / r616882;
        return r616883;
}

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
Target12.9
Herbie16.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 a < -2.257511494416316e-88

    1. Initial program 17.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-identity17.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-frac18.0

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

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

    if -2.257511494416316e-88 < a < 1.4011460130569624e-277

    1. Initial program 15.1

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

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

    if 1.4011460130569624e-277 < a

    1. Initial program 16.2

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

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

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

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

Reproduce

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