
(FPCore (F l) :precision binary64 (- (* PI l) (* (/ 1.0 (* F F)) (tan (* PI l)))))
double code(double F, double l) {
return (((double) M_PI) * l) - ((1.0 / (F * F)) * tan((((double) M_PI) * l)));
}
public static double code(double F, double l) {
return (Math.PI * l) - ((1.0 / (F * F)) * Math.tan((Math.PI * l)));
}
def code(F, l): return (math.pi * l) - ((1.0 / (F * F)) * math.tan((math.pi * l)))
function code(F, l) return Float64(Float64(pi * l) - Float64(Float64(1.0 / Float64(F * F)) * tan(Float64(pi * l)))) end
function tmp = code(F, l) tmp = (pi * l) - ((1.0 / (F * F)) * tan((pi * l))); end
code[F_, l_] := N[(N[(Pi * l), $MachinePrecision] - N[(N[(1.0 / N[(F * F), $MachinePrecision]), $MachinePrecision] * N[Tan[N[(Pi * l), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 6 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (F l) :precision binary64 (- (* PI l) (* (/ 1.0 (* F F)) (tan (* PI l)))))
double code(double F, double l) {
return (((double) M_PI) * l) - ((1.0 / (F * F)) * tan((((double) M_PI) * l)));
}
public static double code(double F, double l) {
return (Math.PI * l) - ((1.0 / (F * F)) * Math.tan((Math.PI * l)));
}
def code(F, l): return (math.pi * l) - ((1.0 / (F * F)) * math.tan((math.pi * l)))
function code(F, l) return Float64(Float64(pi * l) - Float64(Float64(1.0 / Float64(F * F)) * tan(Float64(pi * l)))) end
function tmp = code(F, l) tmp = (pi * l) - ((1.0 / (F * F)) * tan((pi * l))); end
code[F_, l_] := N[(N[(Pi * l), $MachinePrecision] - N[(N[(1.0 / N[(F * F), $MachinePrecision]), $MachinePrecision] * N[Tan[N[(Pi * l), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\pi \cdot \ell - \frac{1}{F \cdot F} \cdot \tan \left(\pi \cdot \ell\right)
\end{array}
(FPCore (F l) :precision binary64 (if (or (<= (* PI l) -5e+18) (not (<= (* PI l) 10000000000.0))) (* PI l) (- (* PI l) (/ (/ (tan (* PI l)) F) F))))
double code(double F, double l) {
double tmp;
if (((((double) M_PI) * l) <= -5e+18) || !((((double) M_PI) * l) <= 10000000000.0)) {
tmp = ((double) M_PI) * l;
} else {
tmp = (((double) M_PI) * l) - ((tan((((double) M_PI) * l)) / F) / F);
}
return tmp;
}
public static double code(double F, double l) {
double tmp;
if (((Math.PI * l) <= -5e+18) || !((Math.PI * l) <= 10000000000.0)) {
tmp = Math.PI * l;
} else {
tmp = (Math.PI * l) - ((Math.tan((Math.PI * l)) / F) / F);
}
return tmp;
}
def code(F, l): tmp = 0 if ((math.pi * l) <= -5e+18) or not ((math.pi * l) <= 10000000000.0): tmp = math.pi * l else: tmp = (math.pi * l) - ((math.tan((math.pi * l)) / F) / F) return tmp
function code(F, l) tmp = 0.0 if ((Float64(pi * l) <= -5e+18) || !(Float64(pi * l) <= 10000000000.0)) tmp = Float64(pi * l); else tmp = Float64(Float64(pi * l) - Float64(Float64(tan(Float64(pi * l)) / F) / F)); end return tmp end
function tmp_2 = code(F, l) tmp = 0.0; if (((pi * l) <= -5e+18) || ~(((pi * l) <= 10000000000.0))) tmp = pi * l; else tmp = (pi * l) - ((tan((pi * l)) / F) / F); end tmp_2 = tmp; end
code[F_, l_] := If[Or[LessEqual[N[(Pi * l), $MachinePrecision], -5e+18], N[Not[LessEqual[N[(Pi * l), $MachinePrecision], 10000000000.0]], $MachinePrecision]], N[(Pi * l), $MachinePrecision], N[(N[(Pi * l), $MachinePrecision] - N[(N[(N[Tan[N[(Pi * l), $MachinePrecision]], $MachinePrecision] / F), $MachinePrecision] / F), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\pi \cdot \ell \leq -5 \cdot 10^{+18} \lor \neg \left(\pi \cdot \ell \leq 10000000000\right):\\
\;\;\;\;\pi \cdot \ell\\
\mathbf{else}:\\
\;\;\;\;\pi \cdot \ell - \frac{\frac{\tan \left(\pi \cdot \ell\right)}{F}}{F}\\
\end{array}
\end{array}
if (*.f64 (PI.f64) l) < -5e18 or 1e10 < (*.f64 (PI.f64) l) Initial program 68.1%
associate-*l/68.1%
*-lft-identity68.1%
Simplified68.1%
Taylor expanded in l around 0 52.5%
unpow252.5%
Simplified52.5%
Taylor expanded in F around inf 99.6%
if -5e18 < (*.f64 (PI.f64) l) < 1e10Initial program 89.3%
associate-*l/89.5%
*-un-lft-identity89.5%
associate-/r*99.5%
Applied egg-rr99.5%
Final simplification99.6%
(FPCore (F l) :precision binary64 (if (or (<= (* PI l) -5000000.0) (not (<= (* PI l) 10000000000.0))) (* PI l) (* PI (- l (/ (/ l F) F)))))
double code(double F, double l) {
double tmp;
if (((((double) M_PI) * l) <= -5000000.0) || !((((double) M_PI) * l) <= 10000000000.0)) {
tmp = ((double) M_PI) * l;
} else {
tmp = ((double) M_PI) * (l - ((l / F) / F));
}
return tmp;
}
public static double code(double F, double l) {
double tmp;
if (((Math.PI * l) <= -5000000.0) || !((Math.PI * l) <= 10000000000.0)) {
tmp = Math.PI * l;
} else {
tmp = Math.PI * (l - ((l / F) / F));
}
return tmp;
}
def code(F, l): tmp = 0 if ((math.pi * l) <= -5000000.0) or not ((math.pi * l) <= 10000000000.0): tmp = math.pi * l else: tmp = math.pi * (l - ((l / F) / F)) return tmp
function code(F, l) tmp = 0.0 if ((Float64(pi * l) <= -5000000.0) || !(Float64(pi * l) <= 10000000000.0)) tmp = Float64(pi * l); else tmp = Float64(pi * Float64(l - Float64(Float64(l / F) / F))); end return tmp end
function tmp_2 = code(F, l) tmp = 0.0; if (((pi * l) <= -5000000.0) || ~(((pi * l) <= 10000000000.0))) tmp = pi * l; else tmp = pi * (l - ((l / F) / F)); end tmp_2 = tmp; end
code[F_, l_] := If[Or[LessEqual[N[(Pi * l), $MachinePrecision], -5000000.0], N[Not[LessEqual[N[(Pi * l), $MachinePrecision], 10000000000.0]], $MachinePrecision]], N[(Pi * l), $MachinePrecision], N[(Pi * N[(l - N[(N[(l / F), $MachinePrecision] / F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;\pi \cdot \ell \leq -5000000 \lor \neg \left(\pi \cdot \ell \leq 10000000000\right):\\
\;\;\;\;\pi \cdot \ell\\
\mathbf{else}:\\
\;\;\;\;\pi \cdot \left(\ell - \frac{\frac{\ell}{F}}{F}\right)\\
\end{array}
\end{array}
if (*.f64 (PI.f64) l) < -5e6 or 1e10 < (*.f64 (PI.f64) l) Initial program 69.1%
associate-*l/69.1%
*-lft-identity69.1%
Simplified69.1%
Taylor expanded in l around 0 52.4%
unpow252.4%
Simplified52.4%
Taylor expanded in F around inf 98.2%
if -5e6 < (*.f64 (PI.f64) l) < 1e10Initial program 88.9%
Taylor expanded in l around 0 88.8%
associate-/l*88.8%
associate-/r/88.9%
unpow288.9%
Simplified88.9%
*-commutative88.9%
distribute-lft-out--88.9%
associate-/r*99.2%
Applied egg-rr99.2%
Final simplification98.7%
(FPCore (F l)
:precision binary64
(if (or (<= F 1.35e-275)
(and (not (<= F 3.1e-117))
(or (<= F 2.15e-71) (and (not (<= F 3e-17)) (<= F 8.5e-5)))))
(/ (- l) (/ F (/ PI F)))
(* PI l)))
double code(double F, double l) {
double tmp;
if ((F <= 1.35e-275) || (!(F <= 3.1e-117) && ((F <= 2.15e-71) || (!(F <= 3e-17) && (F <= 8.5e-5))))) {
tmp = -l / (F / (((double) M_PI) / F));
} else {
tmp = ((double) M_PI) * l;
}
return tmp;
}
public static double code(double F, double l) {
double tmp;
if ((F <= 1.35e-275) || (!(F <= 3.1e-117) && ((F <= 2.15e-71) || (!(F <= 3e-17) && (F <= 8.5e-5))))) {
tmp = -l / (F / (Math.PI / F));
} else {
tmp = Math.PI * l;
}
return tmp;
}
def code(F, l): tmp = 0 if (F <= 1.35e-275) or (not (F <= 3.1e-117) and ((F <= 2.15e-71) or (not (F <= 3e-17) and (F <= 8.5e-5)))): tmp = -l / (F / (math.pi / F)) else: tmp = math.pi * l return tmp
function code(F, l) tmp = 0.0 if ((F <= 1.35e-275) || (!(F <= 3.1e-117) && ((F <= 2.15e-71) || (!(F <= 3e-17) && (F <= 8.5e-5))))) tmp = Float64(Float64(-l) / Float64(F / Float64(pi / F))); else tmp = Float64(pi * l); end return tmp end
function tmp_2 = code(F, l) tmp = 0.0; if ((F <= 1.35e-275) || (~((F <= 3.1e-117)) && ((F <= 2.15e-71) || (~((F <= 3e-17)) && (F <= 8.5e-5))))) tmp = -l / (F / (pi / F)); else tmp = pi * l; end tmp_2 = tmp; end
code[F_, l_] := If[Or[LessEqual[F, 1.35e-275], And[N[Not[LessEqual[F, 3.1e-117]], $MachinePrecision], Or[LessEqual[F, 2.15e-71], And[N[Not[LessEqual[F, 3e-17]], $MachinePrecision], LessEqual[F, 8.5e-5]]]]], N[((-l) / N[(F / N[(Pi / F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(Pi * l), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;F \leq 1.35 \cdot 10^{-275} \lor \neg \left(F \leq 3.1 \cdot 10^{-117}\right) \land \left(F \leq 2.15 \cdot 10^{-71} \lor \neg \left(F \leq 3 \cdot 10^{-17}\right) \land F \leq 8.5 \cdot 10^{-5}\right):\\
\;\;\;\;\frac{-\ell}{\frac{F}{\frac{\pi}{F}}}\\
\mathbf{else}:\\
\;\;\;\;\pi \cdot \ell\\
\end{array}
\end{array}
if F < 1.34999999999999997e-275 or 3.10000000000000011e-117 < F < 2.1499999999999998e-71 or 3.00000000000000006e-17 < F < 8.500000000000001e-5Initial program 78.8%
associate-*l/78.8%
*-lft-identity78.8%
Simplified78.8%
Taylor expanded in l around 0 72.0%
unpow272.0%
Simplified72.0%
Taylor expanded in F around 0 29.2%
mul-1-neg29.2%
unpow229.2%
associate-/l*29.3%
associate-/l*29.3%
Simplified29.3%
if 1.34999999999999997e-275 < F < 3.10000000000000011e-117 or 2.1499999999999998e-71 < F < 3.00000000000000006e-17 or 8.500000000000001e-5 < F Initial program 78.3%
associate-*l/78.5%
*-lft-identity78.5%
Simplified78.5%
Taylor expanded in l around 0 66.8%
unpow266.8%
Simplified66.8%
Taylor expanded in F around inf 85.6%
Final simplification53.0%
(FPCore (F l)
:precision binary64
(let* ((t_0 (/ (- l) (/ F (/ PI F)))))
(if (<= F 4e-274)
t_0
(if (<= F 1e-119)
(* PI l)
(if (<= F 5.2e-70)
t_0
(if (or (<= F 3.5e-17) (not (<= F 8.5e-5)))
(* PI l)
(* l (/ (- PI) (* F F)))))))))
double code(double F, double l) {
double t_0 = -l / (F / (((double) M_PI) / F));
double tmp;
if (F <= 4e-274) {
tmp = t_0;
} else if (F <= 1e-119) {
tmp = ((double) M_PI) * l;
} else if (F <= 5.2e-70) {
tmp = t_0;
} else if ((F <= 3.5e-17) || !(F <= 8.5e-5)) {
tmp = ((double) M_PI) * l;
} else {
tmp = l * (-((double) M_PI) / (F * F));
}
return tmp;
}
public static double code(double F, double l) {
double t_0 = -l / (F / (Math.PI / F));
double tmp;
if (F <= 4e-274) {
tmp = t_0;
} else if (F <= 1e-119) {
tmp = Math.PI * l;
} else if (F <= 5.2e-70) {
tmp = t_0;
} else if ((F <= 3.5e-17) || !(F <= 8.5e-5)) {
tmp = Math.PI * l;
} else {
tmp = l * (-Math.PI / (F * F));
}
return tmp;
}
def code(F, l): t_0 = -l / (F / (math.pi / F)) tmp = 0 if F <= 4e-274: tmp = t_0 elif F <= 1e-119: tmp = math.pi * l elif F <= 5.2e-70: tmp = t_0 elif (F <= 3.5e-17) or not (F <= 8.5e-5): tmp = math.pi * l else: tmp = l * (-math.pi / (F * F)) return tmp
function code(F, l) t_0 = Float64(Float64(-l) / Float64(F / Float64(pi / F))) tmp = 0.0 if (F <= 4e-274) tmp = t_0; elseif (F <= 1e-119) tmp = Float64(pi * l); elseif (F <= 5.2e-70) tmp = t_0; elseif ((F <= 3.5e-17) || !(F <= 8.5e-5)) tmp = Float64(pi * l); else tmp = Float64(l * Float64(Float64(-pi) / Float64(F * F))); end return tmp end
function tmp_2 = code(F, l) t_0 = -l / (F / (pi / F)); tmp = 0.0; if (F <= 4e-274) tmp = t_0; elseif (F <= 1e-119) tmp = pi * l; elseif (F <= 5.2e-70) tmp = t_0; elseif ((F <= 3.5e-17) || ~((F <= 8.5e-5))) tmp = pi * l; else tmp = l * (-pi / (F * F)); end tmp_2 = tmp; end
code[F_, l_] := Block[{t$95$0 = N[((-l) / N[(F / N[(Pi / F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[F, 4e-274], t$95$0, If[LessEqual[F, 1e-119], N[(Pi * l), $MachinePrecision], If[LessEqual[F, 5.2e-70], t$95$0, If[Or[LessEqual[F, 3.5e-17], N[Not[LessEqual[F, 8.5e-5]], $MachinePrecision]], N[(Pi * l), $MachinePrecision], N[(l * N[((-Pi) / N[(F * F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{-\ell}{\frac{F}{\frac{\pi}{F}}}\\
\mathbf{if}\;F \leq 4 \cdot 10^{-274}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;F \leq 10^{-119}:\\
\;\;\;\;\pi \cdot \ell\\
\mathbf{elif}\;F \leq 5.2 \cdot 10^{-70}:\\
\;\;\;\;t_0\\
\mathbf{elif}\;F \leq 3.5 \cdot 10^{-17} \lor \neg \left(F \leq 8.5 \cdot 10^{-5}\right):\\
\;\;\;\;\pi \cdot \ell\\
\mathbf{else}:\\
\;\;\;\;\ell \cdot \frac{-\pi}{F \cdot F}\\
\end{array}
\end{array}
if F < 3.99999999999999986e-274 or 1.00000000000000001e-119 < F < 5.20000000000000004e-70Initial program 78.3%
associate-*l/78.3%
*-lft-identity78.3%
Simplified78.3%
Taylor expanded in l around 0 71.3%
unpow271.3%
Simplified71.3%
Taylor expanded in F around 0 27.3%
mul-1-neg27.3%
unpow227.3%
associate-/l*27.4%
associate-/l*27.3%
Simplified27.3%
if 3.99999999999999986e-274 < F < 1.00000000000000001e-119 or 5.20000000000000004e-70 < F < 3.5000000000000002e-17 or 8.500000000000001e-5 < F Initial program 78.3%
associate-*l/78.5%
*-lft-identity78.5%
Simplified78.5%
Taylor expanded in l around 0 66.8%
unpow266.8%
Simplified66.8%
Taylor expanded in F around inf 85.6%
if 3.5000000000000002e-17 < F < 8.500000000000001e-5Initial program 98.8%
associate-*l/98.8%
*-lft-identity98.8%
Simplified98.8%
Taylor expanded in l around 0 99.2%
unpow299.2%
Simplified99.2%
Taylor expanded in F around 0 98.8%
unpow298.8%
associate-*r/98.8%
neg-mul-198.8%
Simplified98.8%
Final simplification53.0%
(FPCore (F l)
:precision binary64
(if (<= F 1.6e-275)
(/ (- l) (/ F (/ PI F)))
(if (<= F 1.14e-120)
(* PI l)
(if (<= F 5e-72)
(/ (- l) (/ (* F F) PI))
(if (or (<= F 2.8e-17) (not (<= F 8.5e-5)))
(* PI l)
(* l (/ (- PI) (* F F))))))))
double code(double F, double l) {
double tmp;
if (F <= 1.6e-275) {
tmp = -l / (F / (((double) M_PI) / F));
} else if (F <= 1.14e-120) {
tmp = ((double) M_PI) * l;
} else if (F <= 5e-72) {
tmp = -l / ((F * F) / ((double) M_PI));
} else if ((F <= 2.8e-17) || !(F <= 8.5e-5)) {
tmp = ((double) M_PI) * l;
} else {
tmp = l * (-((double) M_PI) / (F * F));
}
return tmp;
}
public static double code(double F, double l) {
double tmp;
if (F <= 1.6e-275) {
tmp = -l / (F / (Math.PI / F));
} else if (F <= 1.14e-120) {
tmp = Math.PI * l;
} else if (F <= 5e-72) {
tmp = -l / ((F * F) / Math.PI);
} else if ((F <= 2.8e-17) || !(F <= 8.5e-5)) {
tmp = Math.PI * l;
} else {
tmp = l * (-Math.PI / (F * F));
}
return tmp;
}
def code(F, l): tmp = 0 if F <= 1.6e-275: tmp = -l / (F / (math.pi / F)) elif F <= 1.14e-120: tmp = math.pi * l elif F <= 5e-72: tmp = -l / ((F * F) / math.pi) elif (F <= 2.8e-17) or not (F <= 8.5e-5): tmp = math.pi * l else: tmp = l * (-math.pi / (F * F)) return tmp
function code(F, l) tmp = 0.0 if (F <= 1.6e-275) tmp = Float64(Float64(-l) / Float64(F / Float64(pi / F))); elseif (F <= 1.14e-120) tmp = Float64(pi * l); elseif (F <= 5e-72) tmp = Float64(Float64(-l) / Float64(Float64(F * F) / pi)); elseif ((F <= 2.8e-17) || !(F <= 8.5e-5)) tmp = Float64(pi * l); else tmp = Float64(l * Float64(Float64(-pi) / Float64(F * F))); end return tmp end
function tmp_2 = code(F, l) tmp = 0.0; if (F <= 1.6e-275) tmp = -l / (F / (pi / F)); elseif (F <= 1.14e-120) tmp = pi * l; elseif (F <= 5e-72) tmp = -l / ((F * F) / pi); elseif ((F <= 2.8e-17) || ~((F <= 8.5e-5))) tmp = pi * l; else tmp = l * (-pi / (F * F)); end tmp_2 = tmp; end
code[F_, l_] := If[LessEqual[F, 1.6e-275], N[((-l) / N[(F / N[(Pi / F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[F, 1.14e-120], N[(Pi * l), $MachinePrecision], If[LessEqual[F, 5e-72], N[((-l) / N[(N[(F * F), $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], If[Or[LessEqual[F, 2.8e-17], N[Not[LessEqual[F, 8.5e-5]], $MachinePrecision]], N[(Pi * l), $MachinePrecision], N[(l * N[((-Pi) / N[(F * F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;F \leq 1.6 \cdot 10^{-275}:\\
\;\;\;\;\frac{-\ell}{\frac{F}{\frac{\pi}{F}}}\\
\mathbf{elif}\;F \leq 1.14 \cdot 10^{-120}:\\
\;\;\;\;\pi \cdot \ell\\
\mathbf{elif}\;F \leq 5 \cdot 10^{-72}:\\
\;\;\;\;\frac{-\ell}{\frac{F \cdot F}{\pi}}\\
\mathbf{elif}\;F \leq 2.8 \cdot 10^{-17} \lor \neg \left(F \leq 8.5 \cdot 10^{-5}\right):\\
\;\;\;\;\pi \cdot \ell\\
\mathbf{else}:\\
\;\;\;\;\ell \cdot \frac{-\pi}{F \cdot F}\\
\end{array}
\end{array}
if F < 1.6e-275Initial program 78.8%
associate-*l/78.8%
*-lft-identity78.8%
Simplified78.8%
Taylor expanded in l around 0 71.7%
unpow271.7%
Simplified71.7%
Taylor expanded in F around 0 24.5%
mul-1-neg24.5%
unpow224.5%
associate-/l*24.5%
associate-/l*24.5%
Simplified24.5%
if 1.6e-275 < F < 1.14000000000000003e-120 or 4.9999999999999996e-72 < F < 2.7999999999999999e-17 or 8.500000000000001e-5 < F Initial program 78.3%
associate-*l/78.5%
*-lft-identity78.5%
Simplified78.5%
Taylor expanded in l around 0 66.8%
unpow266.8%
Simplified66.8%
Taylor expanded in F around inf 85.6%
if 1.14000000000000003e-120 < F < 4.9999999999999996e-72Initial program 70.8%
associate-*l/70.4%
*-lft-identity70.4%
Simplified70.4%
Taylor expanded in l around 0 65.9%
unpow265.9%
Simplified65.9%
Taylor expanded in F around 0 65.4%
mul-1-neg65.4%
unpow265.4%
associate-/l*65.9%
distribute-neg-frac65.9%
Simplified65.9%
if 2.7999999999999999e-17 < F < 8.500000000000001e-5Initial program 98.8%
associate-*l/98.8%
*-lft-identity98.8%
Simplified98.8%
Taylor expanded in l around 0 99.2%
unpow299.2%
Simplified99.2%
Taylor expanded in F around 0 98.8%
unpow298.8%
associate-*r/98.8%
neg-mul-198.8%
Simplified98.8%
Final simplification53.0%
(FPCore (F l) :precision binary64 (* PI l))
double code(double F, double l) {
return ((double) M_PI) * l;
}
public static double code(double F, double l) {
return Math.PI * l;
}
def code(F, l): return math.pi * l
function code(F, l) return Float64(pi * l) end
function tmp = code(F, l) tmp = pi * l; end
code[F_, l_] := N[(Pi * l), $MachinePrecision]
\begin{array}{l}
\\
\pi \cdot \ell
\end{array}
Initial program 78.6%
associate-*l/78.7%
*-lft-identity78.7%
Simplified78.7%
Taylor expanded in l around 0 69.8%
unpow269.8%
Simplified69.8%
Taylor expanded in F around inf 74.4%
Final simplification74.4%
herbie shell --seed 2023230
(FPCore (F l)
:name "VandenBroeck and Keller, Equation (6)"
:precision binary64
(- (* PI l) (* (/ 1.0 (* F F)) (tan (* PI l)))))