(FPCore (x y z t a b)
:precision binary64
(/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))))
↓
(FPCore (x y z t a b)
:precision binary64
(let* ((t_1 (/ (+ x (/ (* y z) t)) (+ (/ (* y b) t) (+ a 1.0))))
(t_2 (/ y (/ (* t (+ (+ a 1.0) (* y (/ b t)))) z))))
(if (<= t_1 (- INFINITY))
t_2
(if (<= t_1 -2e-308)
t_1
(if (<= t_1 0.0)
(+ (/ (* x (/ t b)) y) (/ z b))
(if (<= t_1 2e+305)
t_1
(if (<= t_1 INFINITY) t_2 (+ (/ z b) (* x (/ (/ t y) b))))))))))
double code(double x, double y, double z, double t, double a, double b) {
return (x + ((y * z) / t)) / ((a + 1.0) + ((y * b) / t));
}
↓
double code(double x, double y, double z, double t, double a, double b) {
double t_1 = (x + ((y * z) / t)) / (((y * b) / t) + (a + 1.0));
double t_2 = y / ((t * ((a + 1.0) + (y * (b / t)))) / z);
double tmp;
if (t_1 <= -((double) INFINITY)) {
tmp = t_2;
} else if (t_1 <= -2e-308) {
tmp = t_1;
} else if (t_1 <= 0.0) {
tmp = ((x * (t / b)) / y) + (z / b);
} else if (t_1 <= 2e+305) {
tmp = t_1;
} else if (t_1 <= ((double) INFINITY)) {
tmp = t_2;
} else {
tmp = (z / b) + (x * ((t / y) / b));
}
return tmp;
}
public static double code(double x, double y, double z, double t, double a, double b) {
return (x + ((y * z) / t)) / ((a + 1.0) + ((y * b) / t));
}
↓
public static double code(double x, double y, double z, double t, double a, double b) {
double t_1 = (x + ((y * z) / t)) / (((y * b) / t) + (a + 1.0));
double t_2 = y / ((t * ((a + 1.0) + (y * (b / t)))) / z);
double tmp;
if (t_1 <= -Double.POSITIVE_INFINITY) {
tmp = t_2;
} else if (t_1 <= -2e-308) {
tmp = t_1;
} else if (t_1 <= 0.0) {
tmp = ((x * (t / b)) / y) + (z / b);
} else if (t_1 <= 2e+305) {
tmp = t_1;
} else if (t_1 <= Double.POSITIVE_INFINITY) {
tmp = t_2;
} else {
tmp = (z / b) + (x * ((t / y) / b));
}
return tmp;
}
def code(x, y, z, t, a, b):
return (x + ((y * z) / t)) / ((a + 1.0) + ((y * b) / t))
if (/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (+.f64 (+.f64 a 1) (/.f64 (*.f64 y b) t))) < -inf.0 or 1.9999999999999999e305 < (/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (+.f64 (+.f64 a 1) (/.f64 (*.f64 y b) t))) < +inf.0
(/.f64 (fma.f64 (/.f64 y t) z x) (+.f64 1 (fma.f64 (/.f64 y t) b a))): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (/.f64 y t) z) x)) (+.f64 1 (fma.f64 (/.f64 y t) b a))): 0 points increase in error, 9 points decrease in error
(/.f64 (+.f64 (Rewrite=> associate-*l/_binary64 (/.f64 (*.f64 y z) t)) x) (+.f64 1 (fma.f64 (/.f64 y t) b a))): 9 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= +-commutative_binary64 (+.f64 x (/.f64 (*.f64 y z) t))) (+.f64 1 (fma.f64 (/.f64 y t) b a))): 0 points increase in error, 7 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (+.f64 1 (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (/.f64 y t) b) a)))): 0 points increase in error, 9 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (+.f64 1 (+.f64 (Rewrite=> associate-*l/_binary64 (/.f64 (*.f64 y b) t)) a))): 9 points increase in error, 0 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (Rewrite<= +-commutative_binary64 (+.f64 (+.f64 (/.f64 (*.f64 y b) t) a) 1))): 0 points increase in error, 9 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (Rewrite<= associate-+r+_binary64 (+.f64 (/.f64 (*.f64 y b) t) (+.f64 a 1)))): 0 points increase in error, 0 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (Rewrite<= +-commutative_binary64 (+.f64 (+.f64 a 1) (/.f64 (*.f64 y b) t)))): 0 points increase in error, 0 points decrease in error
(/.f64 y (/.f64 (*.f64 t (+.f64 (+.f64 1 a) (*.f64 y (/.f64 b t)))) z)): 0 points increase in error, 0 points decrease in error
(/.f64 y (/.f64 (*.f64 t (+.f64 (+.f64 1 a) (Rewrite=> associate-*r/_binary64 (/.f64 (*.f64 y b) t)))) z)): 4 points increase in error, 0 points decrease in error
(/.f64 y (/.f64 (*.f64 t (Rewrite<= +-commutative_binary64 (+.f64 (/.f64 (*.f64 y b) t) (+.f64 1 a)))) z)): 1 points increase in error, 3 points decrease in error
(Rewrite<= associate-/l*_binary64 (/.f64 (*.f64 y z) (*.f64 t (+.f64 (/.f64 (*.f64 y b) t) (+.f64 1 a))))): 0 points increase in error, 4 points decrease in error
if -inf.0 < (/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (+.f64 (+.f64 a 1) (/.f64 (*.f64 y b) t))) < -1.9999999999999998e-308 or -0.0 < (/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (+.f64 (+.f64 a 1) (/.f64 (*.f64 y b) t))) < 1.9999999999999999e305
(/.f64 (fma.f64 (/.f64 y t) z x) (+.f64 1 (fma.f64 (/.f64 y t) b a))): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (/.f64 y t) z) x)) (+.f64 1 (fma.f64 (/.f64 y t) b a))): 0 points increase in error, 9 points decrease in error
(/.f64 (+.f64 (Rewrite=> associate-*l/_binary64 (/.f64 (*.f64 y z) t)) x) (+.f64 1 (fma.f64 (/.f64 y t) b a))): 9 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= +-commutative_binary64 (+.f64 x (/.f64 (*.f64 y z) t))) (+.f64 1 (fma.f64 (/.f64 y t) b a))): 0 points increase in error, 7 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (+.f64 1 (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (/.f64 y t) b) a)))): 0 points increase in error, 9 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (+.f64 1 (+.f64 (Rewrite=> associate-*l/_binary64 (/.f64 (*.f64 y b) t)) a))): 9 points increase in error, 0 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (Rewrite<= +-commutative_binary64 (+.f64 (+.f64 (/.f64 (*.f64 y b) t) a) 1))): 0 points increase in error, 9 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (Rewrite<= associate-+r+_binary64 (+.f64 (/.f64 (*.f64 y b) t) (+.f64 a 1)))): 0 points increase in error, 0 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (Rewrite<= +-commutative_binary64 (+.f64 (+.f64 a 1) (/.f64 (*.f64 y b) t)))): 0 points increase in error, 0 points decrease in error
(/.f64 (fma.f64 (/.f64 y t) z x) (+.f64 1 (fma.f64 (/.f64 y t) b a))): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (/.f64 y t) z) x)) (+.f64 1 (fma.f64 (/.f64 y t) b a))): 0 points increase in error, 9 points decrease in error
(/.f64 (+.f64 (Rewrite=> associate-*l/_binary64 (/.f64 (*.f64 y z) t)) x) (+.f64 1 (fma.f64 (/.f64 y t) b a))): 9 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= +-commutative_binary64 (+.f64 x (/.f64 (*.f64 y z) t))) (+.f64 1 (fma.f64 (/.f64 y t) b a))): 0 points increase in error, 7 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (+.f64 1 (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (/.f64 y t) b) a)))): 0 points increase in error, 9 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (+.f64 1 (+.f64 (Rewrite=> associate-*l/_binary64 (/.f64 (*.f64 y b) t)) a))): 9 points increase in error, 0 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (Rewrite<= +-commutative_binary64 (+.f64 (+.f64 (/.f64 (*.f64 y b) t) a) 1))): 0 points increase in error, 9 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (Rewrite<= associate-+r+_binary64 (+.f64 (/.f64 (*.f64 y b) t) (+.f64 a 1)))): 0 points increase in error, 0 points decrease in error
(/.f64 (+.f64 x (/.f64 (*.f64 y z) t)) (Rewrite<= +-commutative_binary64 (+.f64 (+.f64 a 1) (/.f64 (*.f64 y b) t)))): 0 points increase in error, 0 points decrease in error
herbie shell --seed 2022343
(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.0 (* (+ x (* (/ y t) z)) (/ 1.0 (+ (+ a 1.0) (* (/ y t) b))))) (if (< t 3.036967103737246e-130) (/ z b) (* 1.0 (* (+ x (* (/ y t) z)) (/ 1.0 (+ (+ a 1.0) (* (/ y t) b)))))))
(/ (+ x (/ (* y z) t)) (+ (+ a 1.0) (/ (* y b) t))))