Average Error: 0.3 → 0.4
Time: 20.2s
Precision: 64
\[\frac{1 - \tan x \cdot \tan x}{1 + \tan x \cdot \tan x}\]
\[\frac{\frac{1 - \left(\tan x \cdot \tan x\right) \cdot \left(\left(\tan x \cdot \tan x\right) \cdot \left(\tan x \cdot \tan x\right)\right)}{1 + \mathsf{fma}\left(\tan x \cdot \tan x, \tan x \cdot \tan x, \tan x \cdot \tan x\right)}}{\tan x \cdot \tan x + 1}\]
\frac{1 - \tan x \cdot \tan x}{1 + \tan x \cdot \tan x}
\frac{\frac{1 - \left(\tan x \cdot \tan x\right) \cdot \left(\left(\tan x \cdot \tan x\right) \cdot \left(\tan x \cdot \tan x\right)\right)}{1 + \mathsf{fma}\left(\tan x \cdot \tan x, \tan x \cdot \tan x, \tan x \cdot \tan x\right)}}{\tan x \cdot \tan x + 1}
double f(double x) {
        double r643406 = 1.0;
        double r643407 = x;
        double r643408 = tan(r643407);
        double r643409 = r643408 * r643408;
        double r643410 = r643406 - r643409;
        double r643411 = r643406 + r643409;
        double r643412 = r643410 / r643411;
        return r643412;
}

double f(double x) {
        double r643413 = 1.0;
        double r643414 = x;
        double r643415 = tan(r643414);
        double r643416 = r643415 * r643415;
        double r643417 = r643416 * r643416;
        double r643418 = r643416 * r643417;
        double r643419 = r643413 - r643418;
        double r643420 = fma(r643416, r643416, r643416);
        double r643421 = r643413 + r643420;
        double r643422 = r643419 / r643421;
        double r643423 = r643416 + r643413;
        double r643424 = r643422 / r643423;
        return r643424;
}

Error

Bits error versus x

Derivation

  1. Initial program 0.3

    \[\frac{1 - \tan x \cdot \tan x}{1 + \tan x \cdot \tan x}\]
  2. Using strategy rm
  3. Applied flip3--0.4

    \[\leadsto \frac{\color{blue}{\frac{{1}^{3} - {\left(\tan x \cdot \tan x\right)}^{3}}{1 \cdot 1 + \left(\left(\tan x \cdot \tan x\right) \cdot \left(\tan x \cdot \tan x\right) + 1 \cdot \left(\tan x \cdot \tan x\right)\right)}}}{1 + \tan x \cdot \tan x}\]
  4. Simplified0.4

    \[\leadsto \frac{\frac{\color{blue}{1 - \left(\tan x \cdot \tan x\right) \cdot \left(\left(\tan x \cdot \tan x\right) \cdot \left(\tan x \cdot \tan x\right)\right)}}{1 \cdot 1 + \left(\left(\tan x \cdot \tan x\right) \cdot \left(\tan x \cdot \tan x\right) + 1 \cdot \left(\tan x \cdot \tan x\right)\right)}}{1 + \tan x \cdot \tan x}\]
  5. Simplified0.4

    \[\leadsto \frac{\frac{1 - \left(\tan x \cdot \tan x\right) \cdot \left(\left(\tan x \cdot \tan x\right) \cdot \left(\tan x \cdot \tan x\right)\right)}{\color{blue}{\mathsf{fma}\left(\tan x \cdot \tan x, \tan x \cdot \tan x, \tan x \cdot \tan x\right) + 1}}}{1 + \tan x \cdot \tan x}\]
  6. Final simplification0.4

    \[\leadsto \frac{\frac{1 - \left(\tan x \cdot \tan x\right) \cdot \left(\left(\tan x \cdot \tan x\right) \cdot \left(\tan x \cdot \tan x\right)\right)}{1 + \mathsf{fma}\left(\tan x \cdot \tan x, \tan x \cdot \tan x, \tan x \cdot \tan x\right)}}{\tan x \cdot \tan x + 1}\]

Reproduce

herbie shell --seed 2019164 +o rules:numerics
(FPCore (x)
  :name "Trigonometry B"
  (/ (- 1 (* (tan x) (tan x))) (+ 1 (* (tan x) (tan x)))))