Average Error: 30.8 → 0.0
Time: 29.6s
Precision: 64
\[\frac{x - \sin x}{x - \tan x}\]
\[\begin{array}{l} \mathbf{if}\;x \le -0.026698176511519112:\\ \;\;\;\;\frac{x - \sin x}{x - \tan x}\\ \mathbf{elif}\;x \le 0.030284261983213122:\\ \;\;\;\;\mathsf{fma}\left(\frac{9}{40}, \left(x \cdot x\right), \frac{-1}{2}\right) - \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{27}{2800}\\ \mathbf{else}:\\ \;\;\;\;\frac{x - \sin x}{x - \tan x}\\ \end{array}\]
\frac{x - \sin x}{x - \tan x}
\begin{array}{l}
\mathbf{if}\;x \le -0.026698176511519112:\\
\;\;\;\;\frac{x - \sin x}{x - \tan x}\\

\mathbf{elif}\;x \le 0.030284261983213122:\\
\;\;\;\;\mathsf{fma}\left(\frac{9}{40}, \left(x \cdot x\right), \frac{-1}{2}\right) - \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{27}{2800}\\

\mathbf{else}:\\
\;\;\;\;\frac{x - \sin x}{x - \tan x}\\

\end{array}
double f(double x) {
        double r564273 = x;
        double r564274 = sin(r564273);
        double r564275 = r564273 - r564274;
        double r564276 = tan(r564273);
        double r564277 = r564273 - r564276;
        double r564278 = r564275 / r564277;
        return r564278;
}

double f(double x) {
        double r564279 = x;
        double r564280 = -0.026698176511519112;
        bool r564281 = r564279 <= r564280;
        double r564282 = sin(r564279);
        double r564283 = r564279 - r564282;
        double r564284 = tan(r564279);
        double r564285 = r564279 - r564284;
        double r564286 = r564283 / r564285;
        double r564287 = 0.030284261983213122;
        bool r564288 = r564279 <= r564287;
        double r564289 = 0.225;
        double r564290 = r564279 * r564279;
        double r564291 = -0.5;
        double r564292 = fma(r564289, r564290, r564291);
        double r564293 = r564290 * r564290;
        double r564294 = 0.009642857142857142;
        double r564295 = r564293 * r564294;
        double r564296 = r564292 - r564295;
        double r564297 = r564288 ? r564296 : r564286;
        double r564298 = r564281 ? r564286 : r564297;
        return r564298;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -0.026698176511519112 or 0.030284261983213122 < x

    1. Initial program 0.0

      \[\frac{x - \sin x}{x - \tan x}\]

    if -0.026698176511519112 < x < 0.030284261983213122

    1. Initial program 62.6

      \[\frac{x - \sin x}{x - \tan x}\]
    2. Taylor expanded around 0 0.0

      \[\leadsto \color{blue}{\frac{9}{40} \cdot {x}^{2} - \left(\frac{27}{2800} \cdot {x}^{4} + \frac{1}{2}\right)}\]
    3. Simplified0.0

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{9}{40}, \left(x \cdot x\right), \frac{-1}{2}\right) - \frac{27}{2800} \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -0.026698176511519112:\\ \;\;\;\;\frac{x - \sin x}{x - \tan x}\\ \mathbf{elif}\;x \le 0.030284261983213122:\\ \;\;\;\;\mathsf{fma}\left(\frac{9}{40}, \left(x \cdot x\right), \frac{-1}{2}\right) - \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \frac{27}{2800}\\ \mathbf{else}:\\ \;\;\;\;\frac{x - \sin x}{x - \tan x}\\ \end{array}\]

Reproduce

herbie shell --seed 2019133 +o rules:numerics
(FPCore (x)
  :name "sintan (problem 3.4.5)"
  (/ (- x (sin x)) (- x (tan x))))