Average Error: 30.1 → 0.5
Time: 22.8s
Precision: 64
Internal precision: 2432
\[\frac{1 - \cos x}{\sin x}\]
\[1 \cdot \frac{\sin x}{\cos x + 1}\]

Error

Bits error versus x

Target

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

Derivation

  1. Initial program 30.1

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

    \[\leadsto \frac{\color{blue}{\frac{{1}^2 - {\left(\cos x\right)}^2}{1 + \cos x}}}{\sin x}\]
  4. Applied simplify 14.9

    \[\leadsto \frac{\frac{\color{blue}{{\left(\sin x\right)}^2}}{1 + \cos x}}{\sin x}\]
  5. Using strategy rm
  6. Applied *-un-lft-identity 14.9

    \[\leadsto \frac{\frac{{\left(\sin x\right)}^2}{1 + \cos x}}{\color{blue}{1 \cdot \sin x}}\]
  7. Applied *-un-lft-identity 14.9

    \[\leadsto \frac{\frac{{\left(\sin x\right)}^2}{\color{blue}{1 \cdot \left(1 + \cos x\right)}}}{1 \cdot \sin x}\]
  8. Applied *-un-lft-identity 14.9

    \[\leadsto \frac{\frac{{\color{blue}{\left(1 \cdot \sin x\right)}}^2}{1 \cdot \left(1 + \cos x\right)}}{1 \cdot \sin x}\]
  9. Applied square-prod 14.9

    \[\leadsto \frac{\frac{\color{blue}{{1}^2 \cdot {\left(\sin x\right)}^2}}{1 \cdot \left(1 + \cos x\right)}}{1 \cdot \sin x}\]
  10. Applied times-frac 14.9

    \[\leadsto \frac{\color{blue}{\frac{{1}^2}{1} \cdot \frac{{\left(\sin x\right)}^2}{1 + \cos x}}}{1 \cdot \sin x}\]
  11. Applied times-frac 14.9

    \[\leadsto \color{blue}{\frac{\frac{{1}^2}{1}}{1} \cdot \frac{\frac{{\left(\sin x\right)}^2}{1 + \cos x}}{\sin x}}\]
  12. Applied simplify 14.9

    \[\leadsto \color{blue}{1} \cdot \frac{\frac{{\left(\sin x\right)}^2}{1 + \cos x}}{\sin x}\]
  13. Applied simplify 0.5

    \[\leadsto 1 \cdot \color{blue}{\frac{\sin x}{\cos x + 1}}\]
  14. Removed slow pow expressions

Runtime

Time bar (total: 22.8s) Debug log

Please include this information when filing a bug report:

herbie shell --seed '#(2277612311 2645429965 1090895633 2857793080 2144184008 3989768357)'
(FPCore (x)
  :name "tanhf (example 3.4)"
  :herbie-expected 1

  :target
  (tan (/ x 2))

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