Average Error: 30.2 → 0.5
Time: 19.0s
Precision: 64
\[\frac{1 - \cos x}{\sin x}\]
\[\begin{array}{l} \mathbf{if}\;x \le -0.01783437632320246032935351365722453920171:\\ \;\;\;\;\frac{1}{\frac{\sin x}{1 - \cos x}}\\ \mathbf{elif}\;x \le 0.02134032948837288543031398546645505120978:\\ \;\;\;\;0.04166666666666662965923251249478198587894 \cdot {x}^{3} + \left(0.004166666666666624108117389368999283760786 \cdot {x}^{5} + 0.5 \cdot x\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos x \cdot \frac{{1}^{3} + {\left(\cos x\right)}^{3}}{1 \cdot \left(1 - \cos x\right) + {\left(\cos x\right)}^{2}} + 1 \cdot 1\right) \cdot \sin x}\\ \end{array}\]
\frac{1 - \cos x}{\sin x}
\begin{array}{l}
\mathbf{if}\;x \le -0.01783437632320246032935351365722453920171:\\
\;\;\;\;\frac{1}{\frac{\sin x}{1 - \cos x}}\\

\mathbf{elif}\;x \le 0.02134032948837288543031398546645505120978:\\
\;\;\;\;0.04166666666666662965923251249478198587894 \cdot {x}^{3} + \left(0.004166666666666624108117389368999283760786 \cdot {x}^{5} + 0.5 \cdot x\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos x \cdot \frac{{1}^{3} + {\left(\cos x\right)}^{3}}{1 \cdot \left(1 - \cos x\right) + {\left(\cos x\right)}^{2}} + 1 \cdot 1\right) \cdot \sin x}\\

\end{array}
double f(double x) {
        double r21321 = 1.0;
        double r21322 = x;
        double r21323 = cos(r21322);
        double r21324 = r21321 - r21323;
        double r21325 = sin(r21322);
        double r21326 = r21324 / r21325;
        return r21326;
}

double f(double x) {
        double r21327 = x;
        double r21328 = -0.01783437632320246;
        bool r21329 = r21327 <= r21328;
        double r21330 = 1.0;
        double r21331 = sin(r21327);
        double r21332 = 1.0;
        double r21333 = cos(r21327);
        double r21334 = r21332 - r21333;
        double r21335 = r21331 / r21334;
        double r21336 = r21330 / r21335;
        double r21337 = 0.021340329488372885;
        bool r21338 = r21327 <= r21337;
        double r21339 = 0.04166666666666663;
        double r21340 = 3.0;
        double r21341 = pow(r21327, r21340);
        double r21342 = r21339 * r21341;
        double r21343 = 0.004166666666666624;
        double r21344 = 5.0;
        double r21345 = pow(r21327, r21344);
        double r21346 = r21343 * r21345;
        double r21347 = 0.5;
        double r21348 = r21347 * r21327;
        double r21349 = r21346 + r21348;
        double r21350 = r21342 + r21349;
        double r21351 = pow(r21332, r21340);
        double r21352 = pow(r21333, r21340);
        double r21353 = r21351 - r21352;
        double r21354 = r21351 + r21352;
        double r21355 = r21332 * r21334;
        double r21356 = 2.0;
        double r21357 = pow(r21333, r21356);
        double r21358 = r21355 + r21357;
        double r21359 = r21354 / r21358;
        double r21360 = r21333 * r21359;
        double r21361 = r21332 * r21332;
        double r21362 = r21360 + r21361;
        double r21363 = r21362 * r21331;
        double r21364 = r21353 / r21363;
        double r21365 = r21338 ? r21350 : r21364;
        double r21366 = r21329 ? r21336 : r21365;
        return r21366;
}

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original30.2
Target0.0
Herbie0.5
\[\tan \left(\frac{x}{2}\right)\]

Derivation

  1. Split input into 3 regimes
  2. if x < -0.01783437632320246

    1. Initial program 0.9

      \[\frac{1 - \cos x}{\sin x}\]
    2. Using strategy rm
    3. Applied clear-num1.0

      \[\leadsto \color{blue}{\frac{1}{\frac{\sin x}{1 - \cos x}}}\]

    if -0.01783437632320246 < x < 0.021340329488372885

    1. Initial program 59.8

      \[\frac{1 - \cos x}{\sin x}\]
    2. Using strategy rm
    3. Applied flip3--59.8

      \[\leadsto \frac{\color{blue}{\frac{{1}^{3} - {\left(\cos x\right)}^{3}}{1 \cdot 1 + \left(\cos x \cdot \cos x + 1 \cdot \cos x\right)}}}{\sin x}\]
    4. Applied associate-/l/59.8

      \[\leadsto \color{blue}{\frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\sin x \cdot \left(1 \cdot 1 + \left(\cos x \cdot \cos x + 1 \cdot \cos x\right)\right)}}\]
    5. Simplified59.8

      \[\leadsto \frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\color{blue}{\left(\cos x \cdot \left(\cos x + 1\right) + 1 \cdot 1\right) \cdot \sin x}}\]
    6. Taylor expanded around 0 0.0

      \[\leadsto \color{blue}{0.04166666666666662965923251249478198587894 \cdot {x}^{3} + \left(0.004166666666666624108117389368999283760786 \cdot {x}^{5} + 0.5 \cdot x\right)}\]

    if 0.021340329488372885 < x

    1. Initial program 0.9

      \[\frac{1 - \cos x}{\sin x}\]
    2. Using strategy rm
    3. Applied flip3--1.0

      \[\leadsto \frac{\color{blue}{\frac{{1}^{3} - {\left(\cos x\right)}^{3}}{1 \cdot 1 + \left(\cos x \cdot \cos x + 1 \cdot \cos x\right)}}}{\sin x}\]
    4. Applied associate-/l/1.0

      \[\leadsto \color{blue}{\frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\sin x \cdot \left(1 \cdot 1 + \left(\cos x \cdot \cos x + 1 \cdot \cos x\right)\right)}}\]
    5. Simplified1.0

      \[\leadsto \frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\color{blue}{\left(\cos x \cdot \left(\cos x + 1\right) + 1 \cdot 1\right) \cdot \sin x}}\]
    6. Using strategy rm
    7. Applied flip3-+1.0

      \[\leadsto \frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos x \cdot \color{blue}{\frac{{\left(\cos x\right)}^{3} + {1}^{3}}{\cos x \cdot \cos x + \left(1 \cdot 1 - \cos x \cdot 1\right)}} + 1 \cdot 1\right) \cdot \sin x}\]
    8. Simplified1.0

      \[\leadsto \frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos x \cdot \frac{\color{blue}{{1}^{3} + {\left(\cos x\right)}^{3}}}{\cos x \cdot \cos x + \left(1 \cdot 1 - \cos x \cdot 1\right)} + 1 \cdot 1\right) \cdot \sin x}\]
    9. Simplified1.0

      \[\leadsto \frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos x \cdot \frac{{1}^{3} + {\left(\cos x\right)}^{3}}{\color{blue}{1 \cdot \left(1 - \cos x\right) + {\left(\cos x\right)}^{2}}} + 1 \cdot 1\right) \cdot \sin x}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -0.01783437632320246032935351365722453920171:\\ \;\;\;\;\frac{1}{\frac{\sin x}{1 - \cos x}}\\ \mathbf{elif}\;x \le 0.02134032948837288543031398546645505120978:\\ \;\;\;\;0.04166666666666662965923251249478198587894 \cdot {x}^{3} + \left(0.004166666666666624108117389368999283760786 \cdot {x}^{5} + 0.5 \cdot x\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{{1}^{3} - {\left(\cos x\right)}^{3}}{\left(\cos x \cdot \frac{{1}^{3} + {\left(\cos x\right)}^{3}}{1 \cdot \left(1 - \cos x\right) + {\left(\cos x\right)}^{2}} + 1 \cdot 1\right) \cdot \sin x}\\ \end{array}\]

Reproduce

herbie shell --seed 2019297 
(FPCore (x)
  :name "tanhf (example 3.4)"
  :precision binary64
  :herbie-expected 2

  :herbie-target
  (tan (/ x 2))

  (/ (- 1 (cos x)) (sin x)))