Initial program 0.3
\[\frac{1 - \tan x \cdot \tan x}{1 + \tan x \cdot \tan x}
\]
Simplified0.3
\[\leadsto \color{blue}{\frac{1 - \tan x \cdot \tan x}{\mathsf{fma}\left(\tan x, \tan x, 1\right)}}
\]
Proof
(/.f64 (-.f64 1 (*.f64 (tan.f64 x) (tan.f64 x))) (fma.f64 (tan.f64 x) (tan.f64 x) 1)): 0 points increase in error, 0 points decrease in error
(/.f64 (-.f64 1 (*.f64 (tan.f64 x) (tan.f64 x))) (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (tan.f64 x) (tan.f64 x)) 1))): 2 points increase in error, 9 points decrease in error
(/.f64 (-.f64 1 (*.f64 (tan.f64 x) (tan.f64 x))) (Rewrite<= +-commutative_binary64 (+.f64 1 (*.f64 (tan.f64 x) (tan.f64 x))))): 0 points increase in error, 0 points decrease in error
Applied egg-rr0.4
\[\leadsto \color{blue}{\left(-\left(1 - {\tan x}^{2}\right)\right) \cdot \frac{1}{\left(-{\tan x}^{2}\right) + -1}}
\]
Simplified0.3
\[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\tan x, \tan x, -1\right)}{-1 - {\tan x}^{2}}}
\]
Proof
(/.f64 (fma.f64 (tan.f64 x) (tan.f64 x) -1) (-.f64 -1 (pow.f64 (tan.f64 x) 2))): 0 points increase in error, 0 points decrease in error
(/.f64 (fma.f64 (tan.f64 x) (tan.f64 x) (Rewrite<= metadata-eval (neg.f64 1))) (-.f64 -1 (pow.f64 (tan.f64 x) 2))): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= fma-neg_binary64 (-.f64 (*.f64 (tan.f64 x) (tan.f64 x)) 1)) (-.f64 -1 (pow.f64 (tan.f64 x) 2))): 15 points increase in error, 14 points decrease in error
(/.f64 (-.f64 (Rewrite<= unpow2_binary64 (pow.f64 (tan.f64 x) 2)) 1) (-.f64 -1 (pow.f64 (tan.f64 x) 2))): 0 points increase in error, 0 points decrease in error
(/.f64 (-.f64 (pow.f64 (tan.f64 x) 2) 1) (Rewrite<= unsub-neg_binary64 (+.f64 -1 (neg.f64 (pow.f64 (tan.f64 x) 2))))): 0 points increase in error, 0 points decrease in error
(/.f64 (-.f64 (pow.f64 (tan.f64 x) 2) 1) (Rewrite<= +-commutative_binary64 (+.f64 (neg.f64 (pow.f64 (tan.f64 x) 2)) -1))): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite=> sub-neg_binary64 (+.f64 (pow.f64 (tan.f64 x) 2) (neg.f64 1))) (+.f64 (neg.f64 (pow.f64 (tan.f64 x) 2)) -1)): 0 points increase in error, 0 points decrease in error
(/.f64 (+.f64 (pow.f64 (tan.f64 x) 2) (Rewrite=> metadata-eval -1)) (+.f64 (neg.f64 (pow.f64 (tan.f64 x) 2)) -1)): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite=> +-commutative_binary64 (+.f64 -1 (pow.f64 (tan.f64 x) 2))) (+.f64 (neg.f64 (pow.f64 (tan.f64 x) 2)) -1)): 0 points increase in error, 0 points decrease in error
(/.f64 (+.f64 (Rewrite<= metadata-eval (-.f64 0 1)) (pow.f64 (tan.f64 x) 2)) (+.f64 (neg.f64 (pow.f64 (tan.f64 x) 2)) -1)): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= associate--r-_binary64 (-.f64 0 (-.f64 1 (pow.f64 (tan.f64 x) 2)))) (+.f64 (neg.f64 (pow.f64 (tan.f64 x) 2)) -1)): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= neg-sub0_binary64 (neg.f64 (-.f64 1 (pow.f64 (tan.f64 x) 2)))) (+.f64 (neg.f64 (pow.f64 (tan.f64 x) 2)) -1)): 0 points increase in error, 0 points decrease in error
(/.f64 (Rewrite<= *-rgt-identity_binary64 (*.f64 (neg.f64 (-.f64 1 (pow.f64 (tan.f64 x) 2))) 1)) (+.f64 (neg.f64 (pow.f64 (tan.f64 x) 2)) -1)): 0 points increase in error, 0 points decrease in error
(Rewrite<= associate-*r/_binary64 (*.f64 (neg.f64 (-.f64 1 (pow.f64 (tan.f64 x) 2))) (/.f64 1 (+.f64 (neg.f64 (pow.f64 (tan.f64 x) 2)) -1)))): 19 points increase in error, 7 points decrease in error
Final simplification0.3
\[\leadsto \frac{\mathsf{fma}\left(\tan x, \tan x, -1\right)}{-1 - {\tan x}^{2}}
\]