Average Error: 16.8 → 12.7
Time: 23.6s
Precision: 64
\[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
\[\mathsf{fma}\left(\frac{1}{\frac{F}{\tan \left(\left(\sqrt{\pi} \cdot \ell\right) \cdot \left(\sqrt{\sqrt{\pi}} \cdot \sqrt{\sqrt{\pi}}\right)\right)}}, -\frac{1}{F}, \ell \cdot \pi\right)\]
\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)
\mathsf{fma}\left(\frac{1}{\frac{F}{\tan \left(\left(\sqrt{\pi} \cdot \ell\right) \cdot \left(\sqrt{\sqrt{\pi}} \cdot \sqrt{\sqrt{\pi}}\right)\right)}}, -\frac{1}{F}, \ell \cdot \pi\right)
double f(double F, double l) {
        double r23827 = atan2(1.0, 0.0);
        double r23828 = l;
        double r23829 = r23827 * r23828;
        double r23830 = 1.0;
        double r23831 = F;
        double r23832 = r23831 * r23831;
        double r23833 = r23830 / r23832;
        double r23834 = tan(r23829);
        double r23835 = r23833 * r23834;
        double r23836 = r23829 - r23835;
        return r23836;
}

double f(double F, double l) {
        double r23837 = 1.0;
        double r23838 = F;
        double r23839 = atan2(1.0, 0.0);
        double r23840 = sqrt(r23839);
        double r23841 = l;
        double r23842 = r23840 * r23841;
        double r23843 = sqrt(r23840);
        double r23844 = r23843 * r23843;
        double r23845 = r23842 * r23844;
        double r23846 = tan(r23845);
        double r23847 = r23838 / r23846;
        double r23848 = r23837 / r23847;
        double r23849 = 1.0;
        double r23850 = r23849 / r23838;
        double r23851 = -r23850;
        double r23852 = r23841 * r23839;
        double r23853 = fma(r23848, r23851, r23852);
        return r23853;
}

Error

Bits error versus F

Bits error versus l

Derivation

  1. Initial program 16.8

    \[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
  2. Simplified12.7

    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{\tan \left(\pi \cdot \ell\right)}{F}, \frac{-1}{F}, \pi \cdot \ell\right)}\]
  3. Using strategy rm
  4. Applied clear-num12.7

    \[\leadsto \mathsf{fma}\left(\color{blue}{\frac{1}{\frac{F}{\tan \left(\pi \cdot \ell\right)}}}, \frac{-1}{F}, \pi \cdot \ell\right)\]
  5. Using strategy rm
  6. Applied add-sqr-sqrt12.8

    \[\leadsto \mathsf{fma}\left(\frac{1}{\frac{F}{\tan \left(\color{blue}{\left(\sqrt{\pi} \cdot \sqrt{\pi}\right)} \cdot \ell\right)}}, \frac{-1}{F}, \pi \cdot \ell\right)\]
  7. Applied associate-*l*12.8

    \[\leadsto \mathsf{fma}\left(\frac{1}{\frac{F}{\tan \color{blue}{\left(\sqrt{\pi} \cdot \left(\sqrt{\pi} \cdot \ell\right)\right)}}}, \frac{-1}{F}, \pi \cdot \ell\right)\]
  8. Using strategy rm
  9. Applied add-sqr-sqrt12.8

    \[\leadsto \mathsf{fma}\left(\frac{1}{\frac{F}{\tan \left(\sqrt{\color{blue}{\sqrt{\pi} \cdot \sqrt{\pi}}} \cdot \left(\sqrt{\pi} \cdot \ell\right)\right)}}, \frac{-1}{F}, \pi \cdot \ell\right)\]
  10. Applied sqrt-prod12.7

    \[\leadsto \mathsf{fma}\left(\frac{1}{\frac{F}{\tan \left(\color{blue}{\left(\sqrt{\sqrt{\pi}} \cdot \sqrt{\sqrt{\pi}}\right)} \cdot \left(\sqrt{\pi} \cdot \ell\right)\right)}}, \frac{-1}{F}, \pi \cdot \ell\right)\]
  11. Final simplification12.7

    \[\leadsto \mathsf{fma}\left(\frac{1}{\frac{F}{\tan \left(\left(\sqrt{\pi} \cdot \ell\right) \cdot \left(\sqrt{\sqrt{\pi}} \cdot \sqrt{\sqrt{\pi}}\right)\right)}}, -\frac{1}{F}, \ell \cdot \pi\right)\]

Reproduce

herbie shell --seed 2019174 +o rules:numerics
(FPCore (F l)
  :name "VandenBroeck and Keller, Equation (6)"
  (- (* PI l) (* (/ 1.0 (* F F)) (tan (* PI l)))))