Simplified0.1
\[\leadsto \color{blue}{\varepsilon \cdot \frac{\mathsf{expm1}\left(\varepsilon \cdot \left(a + b\right)\right)}{\mathsf{expm1}\left(\varepsilon \cdot a\right) \cdot \mathsf{expm1}\left(\varepsilon \cdot b\right)}}
\]
Proof
(*.f64 eps (/.f64 (expm1.f64 (*.f64 eps (+.f64 a b))) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))): 0 points increase in error, 0 points decrease in error
(*.f64 eps (/.f64 (expm1.f64 (Rewrite<= *-commutative_binary64 (*.f64 (+.f64 a b) eps))) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))): 0 points increase in error, 0 points decrease in error
(*.f64 eps (/.f64 (Rewrite<= expm1-def_binary64 (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) 1)) (*.f64 (expm1.f64 (*.f64 eps a)) (expm1.f64 (*.f64 eps b))))): 53 points increase in error, 1 points decrease in error
(*.f64 eps (/.f64 (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) 1) (*.f64 (expm1.f64 (Rewrite<= *-commutative_binary64 (*.f64 a eps))) (expm1.f64 (*.f64 eps b))))): 0 points increase in error, 0 points decrease in error
(*.f64 eps (/.f64 (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) 1) (*.f64 (Rewrite<= expm1-def_binary64 (-.f64 (exp.f64 (*.f64 a eps)) 1)) (expm1.f64 (*.f64 eps b))))): 67 points increase in error, 3 points decrease in error
(*.f64 eps (/.f64 (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) 1) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) 1) (expm1.f64 (Rewrite<= *-commutative_binary64 (*.f64 b eps)))))): 0 points increase in error, 0 points decrease in error
(*.f64 eps (/.f64 (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) 1) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) 1) (Rewrite<= expm1-def_binary64 (-.f64 (exp.f64 (*.f64 b eps)) 1))))): 24 points increase in error, 0 points decrease in error
(Rewrite=> associate-*r/_binary64 (/.f64 (*.f64 eps (-.f64 (exp.f64 (*.f64 (+.f64 a b) eps)) 1)) (*.f64 (-.f64 (exp.f64 (*.f64 a eps)) 1) (-.f64 (exp.f64 (*.f64 b eps)) 1)))): 2 points increase in error, 1 points decrease in error
Simplified0.1
\[\leadsto \color{blue}{\frac{\frac{\mathsf{expm1}\left(\left(a + b\right) \cdot \varepsilon\right)}{\mathsf{expm1}\left(a \cdot \varepsilon\right)} \cdot \varepsilon}{\mathsf{expm1}\left(b \cdot \varepsilon\right)}}
\]
Proof
(/.f64 (*.f64 (/.f64 (expm1.f64 (*.f64 (+.f64 a b) eps)) (expm1.f64 (*.f64 a eps))) eps) (expm1.f64 (*.f64 b eps))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 (/.f64 (expm1.f64 (Rewrite<= *-commutative_binary64 (*.f64 eps (+.f64 a b)))) (expm1.f64 (*.f64 a eps))) eps) (expm1.f64 (*.f64 b eps))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 (/.f64 (expm1.f64 (*.f64 eps (Rewrite=> +-commutative_binary64 (+.f64 b a)))) (expm1.f64 (*.f64 a eps))) eps) (expm1.f64 (*.f64 b eps))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 (/.f64 (expm1.f64 (*.f64 eps (+.f64 b (Rewrite<= remove-double-neg_binary64 (neg.f64 (neg.f64 a)))))) (expm1.f64 (*.f64 a eps))) eps) (expm1.f64 (*.f64 b eps))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 (/.f64 (expm1.f64 (*.f64 eps (+.f64 b (neg.f64 (Rewrite<= mul-1-neg_binary64 (*.f64 -1 a)))))) (expm1.f64 (*.f64 a eps))) eps) (expm1.f64 (*.f64 b eps))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 (/.f64 (expm1.f64 (*.f64 eps (Rewrite<= sub-neg_binary64 (-.f64 b (*.f64 -1 a))))) (expm1.f64 (*.f64 a eps))) eps) (expm1.f64 (*.f64 b eps))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 (/.f64 (Rewrite<= expm1-def_binary64 (-.f64 (exp.f64 (*.f64 eps (-.f64 b (*.f64 -1 a)))) 1)) (expm1.f64 (*.f64 a eps))) eps) (expm1.f64 (*.f64 b eps))): 113 points increase in error, 0 points decrease in error
(/.f64 (*.f64 (/.f64 (-.f64 (exp.f64 (*.f64 eps (-.f64 b (*.f64 -1 a)))) 1) (expm1.f64 (Rewrite<= *-commutative_binary64 (*.f64 eps a)))) eps) (expm1.f64 (*.f64 b eps))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 (/.f64 (-.f64 (exp.f64 (*.f64 eps (-.f64 b (*.f64 -1 a)))) 1) (Rewrite<= expm1-def_binary64 (-.f64 (exp.f64 (*.f64 eps a)) 1))) eps) (expm1.f64 (*.f64 b eps))): 125 points increase in error, 4 points decrease in error
(/.f64 (*.f64 (/.f64 (-.f64 (exp.f64 (*.f64 eps (-.f64 b (*.f64 -1 a)))) 1) (-.f64 (exp.f64 (*.f64 eps a)) 1)) eps) (expm1.f64 (Rewrite<= *-commutative_binary64 (*.f64 eps b)))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 (/.f64 (-.f64 (exp.f64 (*.f64 eps (-.f64 b (*.f64 -1 a)))) 1) (-.f64 (exp.f64 (*.f64 eps a)) 1)) eps) (Rewrite<= expm1-def_binary64 (-.f64 (exp.f64 (*.f64 eps b)) 1))): 25 points increase in error, 0 points decrease in error
(Rewrite<= associate-*r/_binary64 (*.f64 (/.f64 (-.f64 (exp.f64 (*.f64 eps (-.f64 b (*.f64 -1 a)))) 1) (-.f64 (exp.f64 (*.f64 eps a)) 1)) (/.f64 eps (-.f64 (exp.f64 (*.f64 eps b)) 1)))): 0 points increase in error, 0 points decrease in error
(Rewrite<= times-frac_binary64 (/.f64 (*.f64 (-.f64 (exp.f64 (*.f64 eps (-.f64 b (*.f64 -1 a)))) 1) eps) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) 1) (-.f64 (exp.f64 (*.f64 eps b)) 1)))): 1 points increase in error, 2 points decrease in error
(/.f64 (Rewrite=> *-commutative_binary64 (*.f64 eps (-.f64 (exp.f64 (*.f64 eps (-.f64 b (*.f64 -1 a)))) 1))) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) 1) (-.f64 (exp.f64 (*.f64 eps b)) 1))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 eps (Rewrite=> expm1-def_binary64 (expm1.f64 (*.f64 eps (-.f64 b (*.f64 -1 a)))))) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) 1) (-.f64 (exp.f64 (*.f64 eps b)) 1))): 0 points increase in error, 1 points decrease in error
(/.f64 (*.f64 eps (expm1.f64 (Rewrite=> *-commutative_binary64 (*.f64 (-.f64 b (*.f64 -1 a)) eps)))) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) 1) (-.f64 (exp.f64 (*.f64 eps b)) 1))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 eps (expm1.f64 (*.f64 (Rewrite=> cancel-sign-sub-inv_binary64 (+.f64 b (*.f64 (neg.f64 -1) a))) eps))) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) 1) (-.f64 (exp.f64 (*.f64 eps b)) 1))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 eps (expm1.f64 (*.f64 (+.f64 b (*.f64 (Rewrite=> metadata-eval 1) a)) eps))) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) 1) (-.f64 (exp.f64 (*.f64 eps b)) 1))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 eps (expm1.f64 (*.f64 (+.f64 b (Rewrite=> *-lft-identity_binary64 a)) eps))) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) 1) (-.f64 (exp.f64 (*.f64 eps b)) 1))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 eps (expm1.f64 (*.f64 (Rewrite<= +-commutative_binary64 (+.f64 a b)) eps))) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) 1) (-.f64 (exp.f64 (*.f64 eps b)) 1))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 eps (expm1.f64 (Rewrite<= *-commutative_binary64 (*.f64 eps (+.f64 a b))))) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) 1) (-.f64 (exp.f64 (*.f64 eps b)) 1))): 0 points increase in error, 0 points decrease in error
(/.f64 (*.f64 eps (Rewrite<= expm1-def_binary64 (-.f64 (exp.f64 (*.f64 eps (+.f64 a b))) 1))) (*.f64 (-.f64 (exp.f64 (*.f64 eps a)) 1) (-.f64 (exp.f64 (*.f64 eps b)) 1))): 1 points increase in error, 0 points decrease in error