Average Error: 15.8 → 0.7
Time: 27.5s
Precision: 64
\[\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)\]
\[\pi \cdot \ell - \frac{\frac{1}{\mathsf{fma}\left(\frac{-1}{3}, F \cdot \log \left(e^{\pi \cdot \ell}\right), \frac{F}{\pi \cdot \ell}\right)}}{F}\]
\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)
\pi \cdot \ell - \frac{\frac{1}{\mathsf{fma}\left(\frac{-1}{3}, F \cdot \log \left(e^{\pi \cdot \ell}\right), \frac{F}{\pi \cdot \ell}\right)}}{F}
double f(double F, double l) {
        double r691398 = atan2(1.0, 0.0);
        double r691399 = l;
        double r691400 = r691398 * r691399;
        double r691401 = 1.0;
        double r691402 = F;
        double r691403 = r691402 * r691402;
        double r691404 = r691401 / r691403;
        double r691405 = tan(r691400);
        double r691406 = r691404 * r691405;
        double r691407 = r691400 - r691406;
        return r691407;
}

double f(double F, double l) {
        double r691408 = atan2(1.0, 0.0);
        double r691409 = l;
        double r691410 = r691408 * r691409;
        double r691411 = 1.0;
        double r691412 = -0.3333333333333333;
        double r691413 = F;
        double r691414 = exp(r691410);
        double r691415 = log(r691414);
        double r691416 = r691413 * r691415;
        double r691417 = r691413 / r691410;
        double r691418 = fma(r691412, r691416, r691417);
        double r691419 = r691411 / r691418;
        double r691420 = r691419 / r691413;
        double r691421 = r691410 - r691420;
        return r691421;
}

Error

Bits error versus F

Bits error versus l

Derivation

  1. Initial program 15.8

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

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

    \[\leadsto \pi \cdot \ell - \frac{\color{blue}{\frac{1}{\frac{F}{\tan \left(\pi \cdot \ell\right)}}}}{F}\]
  5. Taylor expanded around 0 8.1

    \[\leadsto \pi \cdot \ell - \frac{\frac{1}{\color{blue}{\frac{F}{\pi \cdot \ell} - \frac{1}{3} \cdot \left(F \cdot \left(\pi \cdot \ell\right)\right)}}}{F}\]
  6. Simplified8.1

    \[\leadsto \pi \cdot \ell - \frac{\frac{1}{\color{blue}{\mathsf{fma}\left(\frac{-1}{3}, \left(\pi \cdot \ell\right) \cdot F, \frac{F}{\pi \cdot \ell}\right)}}}{F}\]
  7. Using strategy rm
  8. Applied add-log-exp0.7

    \[\leadsto \pi \cdot \ell - \frac{\frac{1}{\mathsf{fma}\left(\frac{-1}{3}, \color{blue}{\log \left(e^{\pi \cdot \ell}\right)} \cdot F, \frac{F}{\pi \cdot \ell}\right)}}{F}\]
  9. Final simplification0.7

    \[\leadsto \pi \cdot \ell - \frac{\frac{1}{\mathsf{fma}\left(\frac{-1}{3}, F \cdot \log \left(e^{\pi \cdot \ell}\right), \frac{F}{\pi \cdot \ell}\right)}}{F}\]

Reproduce

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