Average Error: 30.2 → 0.9
Time: 7.9s
Precision: 64
\[\frac{1 - \cos x}{\sin x}\]
\[\begin{array}{l} \mathbf{if}\;\frac{1 - \cos x}{\sin x} \le -0.0311367922052378544:\\ \;\;\;\;\sqrt[3]{{\left(\frac{1 - \cos x}{\sin x}\right)}^{3}}\\ \mathbf{elif}\;\frac{1 - \cos x}{\sin x} \le 0.0038090217065521576:\\ \;\;\;\;\frac{1}{24} \cdot {x}^{3} + \left(\frac{1}{240} \cdot {x}^{5} + \frac{1}{2} \cdot x\right)\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{1 - \cos x}{\sin x}} \cdot \sqrt{\frac{1 - \cos x}{\sin x}}\\ \end{array}\]
\frac{1 - \cos x}{\sin x}
\begin{array}{l}
\mathbf{if}\;\frac{1 - \cos x}{\sin x} \le -0.0311367922052378544:\\
\;\;\;\;\sqrt[3]{{\left(\frac{1 - \cos x}{\sin x}\right)}^{3}}\\

\mathbf{elif}\;\frac{1 - \cos x}{\sin x} \le 0.0038090217065521576:\\
\;\;\;\;\frac{1}{24} \cdot {x}^{3} + \left(\frac{1}{240} \cdot {x}^{5} + \frac{1}{2} \cdot x\right)\\

\mathbf{else}:\\
\;\;\;\;\sqrt{\frac{1 - \cos x}{\sin x}} \cdot \sqrt{\frac{1 - \cos x}{\sin x}}\\

\end{array}
double f(double x) {
        double r47524 = 1.0;
        double r47525 = x;
        double r47526 = cos(r47525);
        double r47527 = r47524 - r47526;
        double r47528 = sin(r47525);
        double r47529 = r47527 / r47528;
        return r47529;
}

double f(double x) {
        double r47530 = 1.0;
        double r47531 = x;
        double r47532 = cos(r47531);
        double r47533 = r47530 - r47532;
        double r47534 = sin(r47531);
        double r47535 = r47533 / r47534;
        double r47536 = -0.031136792205237854;
        bool r47537 = r47535 <= r47536;
        double r47538 = 3.0;
        double r47539 = pow(r47535, r47538);
        double r47540 = cbrt(r47539);
        double r47541 = 0.0038090217065521576;
        bool r47542 = r47535 <= r47541;
        double r47543 = 0.041666666666666664;
        double r47544 = pow(r47531, r47538);
        double r47545 = r47543 * r47544;
        double r47546 = 0.004166666666666667;
        double r47547 = 5.0;
        double r47548 = pow(r47531, r47547);
        double r47549 = r47546 * r47548;
        double r47550 = 0.5;
        double r47551 = r47550 * r47531;
        double r47552 = r47549 + r47551;
        double r47553 = r47545 + r47552;
        double r47554 = sqrt(r47535);
        double r47555 = r47554 * r47554;
        double r47556 = r47542 ? r47553 : r47555;
        double r47557 = r47537 ? r47540 : r47556;
        return r47557;
}

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.9
\[\tan \left(\frac{x}{2}\right)\]

Derivation

  1. Split input into 3 regimes
  2. if (/ (- 1.0 (cos x)) (sin x)) < -0.031136792205237854

    1. Initial program 0.8

      \[\frac{1 - \cos x}{\sin x}\]
    2. Using strategy rm
    3. Applied add-log-exp0.8

      \[\leadsto \color{blue}{\log \left(e^{\frac{1 - \cos x}{\sin x}}\right)}\]
    4. Using strategy rm
    5. Applied div-inv0.9

      \[\leadsto \log \left(e^{\color{blue}{\left(1 - \cos x\right) \cdot \frac{1}{\sin x}}}\right)\]
    6. Using strategy rm
    7. Applied add-cbrt-cube1.1

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

      \[\leadsto \sqrt[3]{\color{blue}{{\left(\frac{1 - \cos x}{\sin x}\right)}^{3}}}\]

    if -0.031136792205237854 < (/ (- 1.0 (cos x)) (sin x)) < 0.0038090217065521576

    1. Initial program 59.3

      \[\frac{1 - \cos x}{\sin x}\]
    2. Taylor expanded around 0 0.7

      \[\leadsto \color{blue}{\frac{1}{24} \cdot {x}^{3} + \left(\frac{1}{240} \cdot {x}^{5} + \frac{1}{2} \cdot x\right)}\]

    if 0.0038090217065521576 < (/ (- 1.0 (cos x)) (sin x))

    1. Initial program 0.8

      \[\frac{1 - \cos x}{\sin x}\]
    2. Using strategy rm
    3. Applied add-sqr-sqrt1.0

      \[\leadsto \color{blue}{\sqrt{\frac{1 - \cos x}{\sin x}} \cdot \sqrt{\frac{1 - \cos x}{\sin x}}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification0.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{1 - \cos x}{\sin x} \le -0.0311367922052378544:\\ \;\;\;\;\sqrt[3]{{\left(\frac{1 - \cos x}{\sin x}\right)}^{3}}\\ \mathbf{elif}\;\frac{1 - \cos x}{\sin x} \le 0.0038090217065521576:\\ \;\;\;\;\frac{1}{24} \cdot {x}^{3} + \left(\frac{1}{240} \cdot {x}^{5} + \frac{1}{2} \cdot x\right)\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{1 - \cos x}{\sin x}} \cdot \sqrt{\frac{1 - \cos x}{\sin x}}\\ \end{array}\]

Reproduce

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

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

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