
(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 10 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}
l_m = (fabs.f64 l)
l_s = (copysign.f64 1 l)
(FPCore (l_s F l_m)
:precision binary64
(let* ((t_0 (* (pow PI 3.0) 0.3333333333333333))
(t_1
(-
(* 0.008333333333333333 (pow PI 5.0))
(fma
-0.5
(* t_0 (pow PI 2.0))
(* (pow PI 5.0) 0.041666666666666664))))
(t_2
(fma
-1.0
(/ (pow F 2.0) (/ (pow PI 3.0) (pow t_0 2.0)))
(/ (pow F 2.0) (/ (pow PI 2.0) t_1)))))
(*
l_s
(if (<= (* F F) 0.0)
(- (* PI l_m) (/ (/ (tan (expm1 (log1p (* PI l_m)))) F) F))
(if (<= (* F F) 1e-73)
(+
(* PI l_m)
(/
-1.0
(fma
-1.0
(* (pow l_m 3.0) t_2)
(fma
-1.0
(*
(pow l_m 5.0)
(fma
-1.0
(/ t_2 (/ PI t_0))
(fma
-1.0
(/ (pow F 2.0) (/ (pow PI 3.0) (* t_0 t_1)))
(/
(pow F 2.0)
(/
(pow PI 2.0)
(-
(* -0.0001984126984126984 (pow PI 7.0))
(fma
-0.5
(* (pow PI 2.0) t_1)
(fma
-0.001388888888888889
(pow PI 7.0)
(* 0.041666666666666664 (* t_0 (pow PI 4.0)))))))))))
(fma
-1.0
(/ (* t_0 (* l_m (pow F 2.0))) (pow PI 2.0))
(/ (/ (pow F 2.0) PI) l_m))))))
(- (* PI l_m) (/ (tan (* PI l_m)) (* F F))))))))l_m = fabs(l);
l_s = copysign(1.0, l);
double code(double l_s, double F, double l_m) {
double t_0 = pow(((double) M_PI), 3.0) * 0.3333333333333333;
double t_1 = (0.008333333333333333 * pow(((double) M_PI), 5.0)) - fma(-0.5, (t_0 * pow(((double) M_PI), 2.0)), (pow(((double) M_PI), 5.0) * 0.041666666666666664));
double t_2 = fma(-1.0, (pow(F, 2.0) / (pow(((double) M_PI), 3.0) / pow(t_0, 2.0))), (pow(F, 2.0) / (pow(((double) M_PI), 2.0) / t_1)));
double tmp;
if ((F * F) <= 0.0) {
tmp = (((double) M_PI) * l_m) - ((tan(expm1(log1p((((double) M_PI) * l_m)))) / F) / F);
} else if ((F * F) <= 1e-73) {
tmp = (((double) M_PI) * l_m) + (-1.0 / fma(-1.0, (pow(l_m, 3.0) * t_2), fma(-1.0, (pow(l_m, 5.0) * fma(-1.0, (t_2 / (((double) M_PI) / t_0)), fma(-1.0, (pow(F, 2.0) / (pow(((double) M_PI), 3.0) / (t_0 * t_1))), (pow(F, 2.0) / (pow(((double) M_PI), 2.0) / ((-0.0001984126984126984 * pow(((double) M_PI), 7.0)) - fma(-0.5, (pow(((double) M_PI), 2.0) * t_1), fma(-0.001388888888888889, pow(((double) M_PI), 7.0), (0.041666666666666664 * (t_0 * pow(((double) M_PI), 4.0))))))))))), fma(-1.0, ((t_0 * (l_m * pow(F, 2.0))) / pow(((double) M_PI), 2.0)), ((pow(F, 2.0) / ((double) M_PI)) / l_m)))));
} else {
tmp = (((double) M_PI) * l_m) - (tan((((double) M_PI) * l_m)) / (F * F));
}
return l_s * tmp;
}
l_m = abs(l) l_s = copysign(1.0, l) function code(l_s, F, l_m) t_0 = Float64((pi ^ 3.0) * 0.3333333333333333) t_1 = Float64(Float64(0.008333333333333333 * (pi ^ 5.0)) - fma(-0.5, Float64(t_0 * (pi ^ 2.0)), Float64((pi ^ 5.0) * 0.041666666666666664))) t_2 = fma(-1.0, Float64((F ^ 2.0) / Float64((pi ^ 3.0) / (t_0 ^ 2.0))), Float64((F ^ 2.0) / Float64((pi ^ 2.0) / t_1))) tmp = 0.0 if (Float64(F * F) <= 0.0) tmp = Float64(Float64(pi * l_m) - Float64(Float64(tan(expm1(log1p(Float64(pi * l_m)))) / F) / F)); elseif (Float64(F * F) <= 1e-73) tmp = Float64(Float64(pi * l_m) + Float64(-1.0 / fma(-1.0, Float64((l_m ^ 3.0) * t_2), fma(-1.0, Float64((l_m ^ 5.0) * fma(-1.0, Float64(t_2 / Float64(pi / t_0)), fma(-1.0, Float64((F ^ 2.0) / Float64((pi ^ 3.0) / Float64(t_0 * t_1))), Float64((F ^ 2.0) / Float64((pi ^ 2.0) / Float64(Float64(-0.0001984126984126984 * (pi ^ 7.0)) - fma(-0.5, Float64((pi ^ 2.0) * t_1), fma(-0.001388888888888889, (pi ^ 7.0), Float64(0.041666666666666664 * Float64(t_0 * (pi ^ 4.0))))))))))), fma(-1.0, Float64(Float64(t_0 * Float64(l_m * (F ^ 2.0))) / (pi ^ 2.0)), Float64(Float64((F ^ 2.0) / pi) / l_m)))))); else tmp = Float64(Float64(pi * l_m) - Float64(tan(Float64(pi * l_m)) / Float64(F * F))); end return Float64(l_s * tmp) end
l_m = N[Abs[l], $MachinePrecision]
l_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[l]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[l$95$s_, F_, l$95$m_] := Block[{t$95$0 = N[(N[Power[Pi, 3.0], $MachinePrecision] * 0.3333333333333333), $MachinePrecision]}, Block[{t$95$1 = N[(N[(0.008333333333333333 * N[Power[Pi, 5.0], $MachinePrecision]), $MachinePrecision] - N[(-0.5 * N[(t$95$0 * N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision] + N[(N[Power[Pi, 5.0], $MachinePrecision] * 0.041666666666666664), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(-1.0 * N[(N[Power[F, 2.0], $MachinePrecision] / N[(N[Power[Pi, 3.0], $MachinePrecision] / N[Power[t$95$0, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Power[F, 2.0], $MachinePrecision] / N[(N[Power[Pi, 2.0], $MachinePrecision] / t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(l$95$s * If[LessEqual[N[(F * F), $MachinePrecision], 0.0], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[(N[Tan[N[(Exp[N[Log[1 + N[(Pi * l$95$m), $MachinePrecision]], $MachinePrecision]] - 1), $MachinePrecision]], $MachinePrecision] / F), $MachinePrecision] / F), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(F * F), $MachinePrecision], 1e-73], N[(N[(Pi * l$95$m), $MachinePrecision] + N[(-1.0 / N[(-1.0 * N[(N[Power[l$95$m, 3.0], $MachinePrecision] * t$95$2), $MachinePrecision] + N[(-1.0 * N[(N[Power[l$95$m, 5.0], $MachinePrecision] * N[(-1.0 * N[(t$95$2 / N[(Pi / t$95$0), $MachinePrecision]), $MachinePrecision] + N[(-1.0 * N[(N[Power[F, 2.0], $MachinePrecision] / N[(N[Power[Pi, 3.0], $MachinePrecision] / N[(t$95$0 * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Power[F, 2.0], $MachinePrecision] / N[(N[Power[Pi, 2.0], $MachinePrecision] / N[(N[(-0.0001984126984126984 * N[Power[Pi, 7.0], $MachinePrecision]), $MachinePrecision] - N[(-0.5 * N[(N[Power[Pi, 2.0], $MachinePrecision] * t$95$1), $MachinePrecision] + N[(-0.001388888888888889 * N[Power[Pi, 7.0], $MachinePrecision] + N[(0.041666666666666664 * N[(t$95$0 * N[Power[Pi, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(-1.0 * N[(N[(t$95$0 * N[(l$95$m * N[Power[F, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision] + N[(N[(N[Power[F, 2.0], $MachinePrecision] / Pi), $MachinePrecision] / l$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[Tan[N[(Pi * l$95$m), $MachinePrecision]], $MachinePrecision] / N[(F * F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]]]]
\begin{array}{l}
l_m = \left|\ell\right|
\\
l_s = \mathsf{copysign}\left(1, \ell\right)
\\
\begin{array}{l}
t_0 := {\pi}^{3} \cdot 0.3333333333333333\\
t_1 := 0.008333333333333333 \cdot {\pi}^{5} - \mathsf{fma}\left(-0.5, t_0 \cdot {\pi}^{2}, {\pi}^{5} \cdot 0.041666666666666664\right)\\
t_2 := \mathsf{fma}\left(-1, \frac{{F}^{2}}{\frac{{\pi}^{3}}{{t_0}^{2}}}, \frac{{F}^{2}}{\frac{{\pi}^{2}}{t_1}}\right)\\
l_s \cdot \begin{array}{l}
\mathbf{if}\;F \cdot F \leq 0:\\
\;\;\;\;\pi \cdot l_m - \frac{\frac{\tan \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\pi \cdot l_m\right)\right)\right)}{F}}{F}\\
\mathbf{elif}\;F \cdot F \leq 10^{-73}:\\
\;\;\;\;\pi \cdot l_m + \frac{-1}{\mathsf{fma}\left(-1, {l_m}^{3} \cdot t_2, \mathsf{fma}\left(-1, {l_m}^{5} \cdot \mathsf{fma}\left(-1, \frac{t_2}{\frac{\pi}{t_0}}, \mathsf{fma}\left(-1, \frac{{F}^{2}}{\frac{{\pi}^{3}}{t_0 \cdot t_1}}, \frac{{F}^{2}}{\frac{{\pi}^{2}}{-0.0001984126984126984 \cdot {\pi}^{7} - \mathsf{fma}\left(-0.5, {\pi}^{2} \cdot t_1, \mathsf{fma}\left(-0.001388888888888889, {\pi}^{7}, 0.041666666666666664 \cdot \left(t_0 \cdot {\pi}^{4}\right)\right)\right)}}\right)\right), \mathsf{fma}\left(-1, \frac{t_0 \cdot \left(l_m \cdot {F}^{2}\right)}{{\pi}^{2}}, \frac{\frac{{F}^{2}}{\pi}}{l_m}\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\pi \cdot l_m - \frac{\tan \left(\pi \cdot l_m\right)}{F \cdot F}\\
\end{array}
\end{array}
\end{array}
if (*.f64 F F) < 0.0Initial program 30.0%
associate-*l/30.0%
*-un-lft-identity30.0%
associate-/r*51.2%
Applied egg-rr51.2%
expm1-log1p-u50.2%
Applied egg-rr50.2%
if 0.0 < (*.f64 F F) < 9.99999999999999997e-74Initial program 69.3%
associate-/r/69.2%
associate-/l*69.2%
clear-num69.3%
add-sqr-sqrt36.0%
sqrt-prod48.4%
sqr-neg48.4%
sqrt-unprod12.3%
add-sqr-sqrt20.3%
associate-/l/20.3%
clear-num20.3%
add-sqr-sqrt12.3%
sqrt-unprod48.3%
sqr-neg48.3%
sqrt-prod36.0%
add-sqr-sqrt69.2%
pow269.2%
Applied egg-rr69.2%
Taylor expanded in l around 0 93.3%
Simplified93.4%
if 9.99999999999999997e-74 < (*.f64 F F) Initial program 99.4%
sqr-neg99.4%
associate-*l/99.4%
*-lft-identity99.4%
sqr-neg99.4%
Simplified99.4%
Final simplification88.1%
l_m = (fabs.f64 l)
l_s = (copysign.f64 1 l)
(FPCore (l_s F l_m)
:precision binary64
(let* ((t_0 (* (pow PI 3.0) 0.3333333333333333))
(t_1
(+
(fma 0.008333333333333333 (pow PI 5.0) (* (* t_0 (pow PI 2.0)) 0.5))
(* (pow PI 5.0) -0.041666666666666664)))
(t_2 (/ (pow F 2.0) (pow PI 2.0)))
(t_3 (fma t_2 t_1 (/ (- (pow F 2.0)) (/ (pow PI 3.0) (pow t_0 2.0))))))
(*
l_s
(if (<= (* F F) 0.0)
(- (* PI l_m) (/ (/ (tan (expm1 (log1p (* PI l_m)))) F) F))
(if (<= (* F F) 1e-73)
(+
(* PI l_m)
(/
-1.0
(fma
(pow l_m 5.0)
(-
(fma
t_2
(-
(* -0.0001984126984126984 (pow PI 7.0))
(fma
t_0
(* 0.041666666666666664 (pow PI 4.0))
(fma
(pow PI 2.0)
(* -0.5 t_1)
(* (pow PI 7.0) -0.001388888888888889))))
(-
(fma
(/ t_3 PI)
t_0
(*
(/ (pow F 2.0) (pow PI 3.0))
(* (pow PI 3.0) (* 0.3333333333333333 t_1)))))))
(fma
-1.0
(fma (pow l_m 3.0) t_3 (* t_2 (* l_m t_0)))
(/ (pow F 2.0) (* PI l_m))))))
(- (* PI l_m) (/ (tan (* PI l_m)) (* F F))))))))l_m = fabs(l);
l_s = copysign(1.0, l);
double code(double l_s, double F, double l_m) {
double t_0 = pow(((double) M_PI), 3.0) * 0.3333333333333333;
double t_1 = fma(0.008333333333333333, pow(((double) M_PI), 5.0), ((t_0 * pow(((double) M_PI), 2.0)) * 0.5)) + (pow(((double) M_PI), 5.0) * -0.041666666666666664);
double t_2 = pow(F, 2.0) / pow(((double) M_PI), 2.0);
double t_3 = fma(t_2, t_1, (-pow(F, 2.0) / (pow(((double) M_PI), 3.0) / pow(t_0, 2.0))));
double tmp;
if ((F * F) <= 0.0) {
tmp = (((double) M_PI) * l_m) - ((tan(expm1(log1p((((double) M_PI) * l_m)))) / F) / F);
} else if ((F * F) <= 1e-73) {
tmp = (((double) M_PI) * l_m) + (-1.0 / fma(pow(l_m, 5.0), -fma(t_2, ((-0.0001984126984126984 * pow(((double) M_PI), 7.0)) - fma(t_0, (0.041666666666666664 * pow(((double) M_PI), 4.0)), fma(pow(((double) M_PI), 2.0), (-0.5 * t_1), (pow(((double) M_PI), 7.0) * -0.001388888888888889)))), -fma((t_3 / ((double) M_PI)), t_0, ((pow(F, 2.0) / pow(((double) M_PI), 3.0)) * (pow(((double) M_PI), 3.0) * (0.3333333333333333 * t_1))))), fma(-1.0, fma(pow(l_m, 3.0), t_3, (t_2 * (l_m * t_0))), (pow(F, 2.0) / (((double) M_PI) * l_m)))));
} else {
tmp = (((double) M_PI) * l_m) - (tan((((double) M_PI) * l_m)) / (F * F));
}
return l_s * tmp;
}
l_m = abs(l) l_s = copysign(1.0, l) function code(l_s, F, l_m) t_0 = Float64((pi ^ 3.0) * 0.3333333333333333) t_1 = Float64(fma(0.008333333333333333, (pi ^ 5.0), Float64(Float64(t_0 * (pi ^ 2.0)) * 0.5)) + Float64((pi ^ 5.0) * -0.041666666666666664)) t_2 = Float64((F ^ 2.0) / (pi ^ 2.0)) t_3 = fma(t_2, t_1, Float64(Float64(-(F ^ 2.0)) / Float64((pi ^ 3.0) / (t_0 ^ 2.0)))) tmp = 0.0 if (Float64(F * F) <= 0.0) tmp = Float64(Float64(pi * l_m) - Float64(Float64(tan(expm1(log1p(Float64(pi * l_m)))) / F) / F)); elseif (Float64(F * F) <= 1e-73) tmp = Float64(Float64(pi * l_m) + Float64(-1.0 / fma((l_m ^ 5.0), Float64(-fma(t_2, Float64(Float64(-0.0001984126984126984 * (pi ^ 7.0)) - fma(t_0, Float64(0.041666666666666664 * (pi ^ 4.0)), fma((pi ^ 2.0), Float64(-0.5 * t_1), Float64((pi ^ 7.0) * -0.001388888888888889)))), Float64(-fma(Float64(t_3 / pi), t_0, Float64(Float64((F ^ 2.0) / (pi ^ 3.0)) * Float64((pi ^ 3.0) * Float64(0.3333333333333333 * t_1))))))), fma(-1.0, fma((l_m ^ 3.0), t_3, Float64(t_2 * Float64(l_m * t_0))), Float64((F ^ 2.0) / Float64(pi * l_m)))))); else tmp = Float64(Float64(pi * l_m) - Float64(tan(Float64(pi * l_m)) / Float64(F * F))); end return Float64(l_s * tmp) end
l_m = N[Abs[l], $MachinePrecision]
l_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[l]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[l$95$s_, F_, l$95$m_] := Block[{t$95$0 = N[(N[Power[Pi, 3.0], $MachinePrecision] * 0.3333333333333333), $MachinePrecision]}, Block[{t$95$1 = N[(N[(0.008333333333333333 * N[Power[Pi, 5.0], $MachinePrecision] + N[(N[(t$95$0 * N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision] + N[(N[Power[Pi, 5.0], $MachinePrecision] * -0.041666666666666664), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[Power[F, 2.0], $MachinePrecision] / N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 * t$95$1 + N[((-N[Power[F, 2.0], $MachinePrecision]) / N[(N[Power[Pi, 3.0], $MachinePrecision] / N[Power[t$95$0, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(l$95$s * If[LessEqual[N[(F * F), $MachinePrecision], 0.0], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[(N[Tan[N[(Exp[N[Log[1 + N[(Pi * l$95$m), $MachinePrecision]], $MachinePrecision]] - 1), $MachinePrecision]], $MachinePrecision] / F), $MachinePrecision] / F), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(F * F), $MachinePrecision], 1e-73], N[(N[(Pi * l$95$m), $MachinePrecision] + N[(-1.0 / N[(N[Power[l$95$m, 5.0], $MachinePrecision] * (-N[(t$95$2 * N[(N[(-0.0001984126984126984 * N[Power[Pi, 7.0], $MachinePrecision]), $MachinePrecision] - N[(t$95$0 * N[(0.041666666666666664 * N[Power[Pi, 4.0], $MachinePrecision]), $MachinePrecision] + N[(N[Power[Pi, 2.0], $MachinePrecision] * N[(-0.5 * t$95$1), $MachinePrecision] + N[(N[Power[Pi, 7.0], $MachinePrecision] * -0.001388888888888889), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + (-N[(N[(t$95$3 / Pi), $MachinePrecision] * t$95$0 + N[(N[(N[Power[F, 2.0], $MachinePrecision] / N[Power[Pi, 3.0], $MachinePrecision]), $MachinePrecision] * N[(N[Power[Pi, 3.0], $MachinePrecision] * N[(0.3333333333333333 * t$95$1), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision])), $MachinePrecision]) + N[(-1.0 * N[(N[Power[l$95$m, 3.0], $MachinePrecision] * t$95$3 + N[(t$95$2 * N[(l$95$m * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Power[F, 2.0], $MachinePrecision] / N[(Pi * l$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[Tan[N[(Pi * l$95$m), $MachinePrecision]], $MachinePrecision] / N[(F * F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]]]]]
\begin{array}{l}
l_m = \left|\ell\right|
\\
l_s = \mathsf{copysign}\left(1, \ell\right)
\\
\begin{array}{l}
t_0 := {\pi}^{3} \cdot 0.3333333333333333\\
t_1 := \mathsf{fma}\left(0.008333333333333333, {\pi}^{5}, \left(t_0 \cdot {\pi}^{2}\right) \cdot 0.5\right) + {\pi}^{5} \cdot -0.041666666666666664\\
t_2 := \frac{{F}^{2}}{{\pi}^{2}}\\
t_3 := \mathsf{fma}\left(t_2, t_1, \frac{-{F}^{2}}{\frac{{\pi}^{3}}{{t_0}^{2}}}\right)\\
l_s \cdot \begin{array}{l}
\mathbf{if}\;F \cdot F \leq 0:\\
\;\;\;\;\pi \cdot l_m - \frac{\frac{\tan \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\pi \cdot l_m\right)\right)\right)}{F}}{F}\\
\mathbf{elif}\;F \cdot F \leq 10^{-73}:\\
\;\;\;\;\pi \cdot l_m + \frac{-1}{\mathsf{fma}\left({l_m}^{5}, -\mathsf{fma}\left(t_2, -0.0001984126984126984 \cdot {\pi}^{7} - \mathsf{fma}\left(t_0, 0.041666666666666664 \cdot {\pi}^{4}, \mathsf{fma}\left({\pi}^{2}, -0.5 \cdot t_1, {\pi}^{7} \cdot -0.001388888888888889\right)\right), -\mathsf{fma}\left(\frac{t_3}{\pi}, t_0, \frac{{F}^{2}}{{\pi}^{3}} \cdot \left({\pi}^{3} \cdot \left(0.3333333333333333 \cdot t_1\right)\right)\right)\right), \mathsf{fma}\left(-1, \mathsf{fma}\left({l_m}^{3}, t_3, t_2 \cdot \left(l_m \cdot t_0\right)\right), \frac{{F}^{2}}{\pi \cdot l_m}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\pi \cdot l_m - \frac{\tan \left(\pi \cdot l_m\right)}{F \cdot F}\\
\end{array}
\end{array}
\end{array}
if (*.f64 F F) < 0.0Initial program 30.0%
associate-*l/30.0%
*-un-lft-identity30.0%
associate-/r*51.2%
Applied egg-rr51.2%
expm1-log1p-u50.2%
Applied egg-rr50.2%
if 0.0 < (*.f64 F F) < 9.99999999999999997e-74Initial program 69.3%
associate-/r/69.2%
associate-/l*69.2%
clear-num69.3%
add-sqr-sqrt36.0%
sqrt-prod48.4%
sqr-neg48.4%
sqrt-unprod12.3%
add-sqr-sqrt20.3%
associate-/l/20.3%
clear-num20.3%
add-sqr-sqrt12.3%
sqrt-unprod48.3%
sqr-neg48.3%
sqrt-prod36.0%
add-sqr-sqrt69.2%
pow269.2%
Applied egg-rr69.2%
add-log-exp22.1%
Applied egg-rr22.1%
Taylor expanded in l around 0 93.3%
Simplified93.3%
if 9.99999999999999997e-74 < (*.f64 F F) Initial program 99.4%
sqr-neg99.4%
associate-*l/99.4%
*-lft-identity99.4%
sqr-neg99.4%
Simplified99.4%
Final simplification88.1%
l_m = (fabs.f64 l)
l_s = (copysign.f64 1 l)
(FPCore (l_s F l_m)
:precision binary64
(let* ((t_0 (* 0.008333333333333333 (pow PI 5.0)))
(t_1 (* (pow PI 2.0) -0.5))
(t_2 (/ (pow F 2.0) (pow PI 3.0)))
(t_3 (* (pow PI 3.0) 0.3333333333333333))
(t_4 (fma t_1 t_3 (* (pow PI 5.0) 0.041666666666666664)))
(t_5 (* (pow t_3 2.0) t_2))
(t_6 (/ (pow F 2.0) (pow PI 2.0)))
(t_7 (- t_0 t_4)))
(*
l_s
(if (<= (* F F) 0.0)
(- (* PI l_m) (/ (/ (tan (expm1 (log1p (* PI l_m)))) F) F))
(if (<= (* F F) 1e-73)
(+
(* PI l_m)
(/
-1.0
(+
(+
(-
(/ (pow F 2.0) (* PI l_m))
(* t_6 (* (pow PI 3.0) (* l_m 0.3333333333333333))))
(*
(pow l_m 5.0)
(+
(* t_3 (/ (- (* t_6 t_7) t_5) PI))
(+
(* t_2 (* (pow PI 3.0) (* 0.3333333333333333 t_7)))
(*
t_6
(-
(fma
t_1
t_7
(fma
0.041666666666666664
(* t_3 (pow PI 4.0))
(* (pow PI 7.0) -0.001388888888888889)))
(* -0.0001984126984126984 (pow PI 7.0))))))))
(* (pow l_m 3.0) (+ (* t_6 (- t_4 t_0)) t_5)))))
(- (* PI l_m) (/ (tan (* PI l_m)) (* F F))))))))l_m = fabs(l);
l_s = copysign(1.0, l);
double code(double l_s, double F, double l_m) {
double t_0 = 0.008333333333333333 * pow(((double) M_PI), 5.0);
double t_1 = pow(((double) M_PI), 2.0) * -0.5;
double t_2 = pow(F, 2.0) / pow(((double) M_PI), 3.0);
double t_3 = pow(((double) M_PI), 3.0) * 0.3333333333333333;
double t_4 = fma(t_1, t_3, (pow(((double) M_PI), 5.0) * 0.041666666666666664));
double t_5 = pow(t_3, 2.0) * t_2;
double t_6 = pow(F, 2.0) / pow(((double) M_PI), 2.0);
double t_7 = t_0 - t_4;
double tmp;
if ((F * F) <= 0.0) {
tmp = (((double) M_PI) * l_m) - ((tan(expm1(log1p((((double) M_PI) * l_m)))) / F) / F);
} else if ((F * F) <= 1e-73) {
tmp = (((double) M_PI) * l_m) + (-1.0 / ((((pow(F, 2.0) / (((double) M_PI) * l_m)) - (t_6 * (pow(((double) M_PI), 3.0) * (l_m * 0.3333333333333333)))) + (pow(l_m, 5.0) * ((t_3 * (((t_6 * t_7) - t_5) / ((double) M_PI))) + ((t_2 * (pow(((double) M_PI), 3.0) * (0.3333333333333333 * t_7))) + (t_6 * (fma(t_1, t_7, fma(0.041666666666666664, (t_3 * pow(((double) M_PI), 4.0)), (pow(((double) M_PI), 7.0) * -0.001388888888888889))) - (-0.0001984126984126984 * pow(((double) M_PI), 7.0)))))))) + (pow(l_m, 3.0) * ((t_6 * (t_4 - t_0)) + t_5))));
} else {
tmp = (((double) M_PI) * l_m) - (tan((((double) M_PI) * l_m)) / (F * F));
}
return l_s * tmp;
}
l_m = abs(l) l_s = copysign(1.0, l) function code(l_s, F, l_m) t_0 = Float64(0.008333333333333333 * (pi ^ 5.0)) t_1 = Float64((pi ^ 2.0) * -0.5) t_2 = Float64((F ^ 2.0) / (pi ^ 3.0)) t_3 = Float64((pi ^ 3.0) * 0.3333333333333333) t_4 = fma(t_1, t_3, Float64((pi ^ 5.0) * 0.041666666666666664)) t_5 = Float64((t_3 ^ 2.0) * t_2) t_6 = Float64((F ^ 2.0) / (pi ^ 2.0)) t_7 = Float64(t_0 - t_4) tmp = 0.0 if (Float64(F * F) <= 0.0) tmp = Float64(Float64(pi * l_m) - Float64(Float64(tan(expm1(log1p(Float64(pi * l_m)))) / F) / F)); elseif (Float64(F * F) <= 1e-73) tmp = Float64(Float64(pi * l_m) + Float64(-1.0 / Float64(Float64(Float64(Float64((F ^ 2.0) / Float64(pi * l_m)) - Float64(t_6 * Float64((pi ^ 3.0) * Float64(l_m * 0.3333333333333333)))) + Float64((l_m ^ 5.0) * Float64(Float64(t_3 * Float64(Float64(Float64(t_6 * t_7) - t_5) / pi)) + Float64(Float64(t_2 * Float64((pi ^ 3.0) * Float64(0.3333333333333333 * t_7))) + Float64(t_6 * Float64(fma(t_1, t_7, fma(0.041666666666666664, Float64(t_3 * (pi ^ 4.0)), Float64((pi ^ 7.0) * -0.001388888888888889))) - Float64(-0.0001984126984126984 * (pi ^ 7.0)))))))) + Float64((l_m ^ 3.0) * Float64(Float64(t_6 * Float64(t_4 - t_0)) + t_5))))); else tmp = Float64(Float64(pi * l_m) - Float64(tan(Float64(pi * l_m)) / Float64(F * F))); end return Float64(l_s * tmp) end
l_m = N[Abs[l], $MachinePrecision]
l_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[l]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[l$95$s_, F_, l$95$m_] := Block[{t$95$0 = N[(0.008333333333333333 * N[Power[Pi, 5.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Power[Pi, 2.0], $MachinePrecision] * -0.5), $MachinePrecision]}, Block[{t$95$2 = N[(N[Power[F, 2.0], $MachinePrecision] / N[Power[Pi, 3.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[Power[Pi, 3.0], $MachinePrecision] * 0.3333333333333333), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$1 * t$95$3 + N[(N[Power[Pi, 5.0], $MachinePrecision] * 0.041666666666666664), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(N[Power[t$95$3, 2.0], $MachinePrecision] * t$95$2), $MachinePrecision]}, Block[{t$95$6 = N[(N[Power[F, 2.0], $MachinePrecision] / N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[(t$95$0 - t$95$4), $MachinePrecision]}, N[(l$95$s * If[LessEqual[N[(F * F), $MachinePrecision], 0.0], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[(N[Tan[N[(Exp[N[Log[1 + N[(Pi * l$95$m), $MachinePrecision]], $MachinePrecision]] - 1), $MachinePrecision]], $MachinePrecision] / F), $MachinePrecision] / F), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(F * F), $MachinePrecision], 1e-73], N[(N[(Pi * l$95$m), $MachinePrecision] + N[(-1.0 / N[(N[(N[(N[(N[Power[F, 2.0], $MachinePrecision] / N[(Pi * l$95$m), $MachinePrecision]), $MachinePrecision] - N[(t$95$6 * N[(N[Power[Pi, 3.0], $MachinePrecision] * N[(l$95$m * 0.3333333333333333), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Power[l$95$m, 5.0], $MachinePrecision] * N[(N[(t$95$3 * N[(N[(N[(t$95$6 * t$95$7), $MachinePrecision] - t$95$5), $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$2 * N[(N[Power[Pi, 3.0], $MachinePrecision] * N[(0.3333333333333333 * t$95$7), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(t$95$6 * N[(N[(t$95$1 * t$95$7 + N[(0.041666666666666664 * N[(t$95$3 * N[Power[Pi, 4.0], $MachinePrecision]), $MachinePrecision] + N[(N[Power[Pi, 7.0], $MachinePrecision] * -0.001388888888888889), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(-0.0001984126984126984 * N[Power[Pi, 7.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Power[l$95$m, 3.0], $MachinePrecision] * N[(N[(t$95$6 * N[(t$95$4 - t$95$0), $MachinePrecision]), $MachinePrecision] + t$95$5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[Tan[N[(Pi * l$95$m), $MachinePrecision]], $MachinePrecision] / N[(F * F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
l_m = \left|\ell\right|
\\
l_s = \mathsf{copysign}\left(1, \ell\right)
\\
\begin{array}{l}
t_0 := 0.008333333333333333 \cdot {\pi}^{5}\\
t_1 := {\pi}^{2} \cdot -0.5\\
t_2 := \frac{{F}^{2}}{{\pi}^{3}}\\
t_3 := {\pi}^{3} \cdot 0.3333333333333333\\
t_4 := \mathsf{fma}\left(t_1, t_3, {\pi}^{5} \cdot 0.041666666666666664\right)\\
t_5 := {t_3}^{2} \cdot t_2\\
t_6 := \frac{{F}^{2}}{{\pi}^{2}}\\
t_7 := t_0 - t_4\\
l_s \cdot \begin{array}{l}
\mathbf{if}\;F \cdot F \leq 0:\\
\;\;\;\;\pi \cdot l_m - \frac{\frac{\tan \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\pi \cdot l_m\right)\right)\right)}{F}}{F}\\
\mathbf{elif}\;F \cdot F \leq 10^{-73}:\\
\;\;\;\;\pi \cdot l_m + \frac{-1}{\left(\left(\frac{{F}^{2}}{\pi \cdot l_m} - t_6 \cdot \left({\pi}^{3} \cdot \left(l_m \cdot 0.3333333333333333\right)\right)\right) + {l_m}^{5} \cdot \left(t_3 \cdot \frac{t_6 \cdot t_7 - t_5}{\pi} + \left(t_2 \cdot \left({\pi}^{3} \cdot \left(0.3333333333333333 \cdot t_7\right)\right) + t_6 \cdot \left(\mathsf{fma}\left(t_1, t_7, \mathsf{fma}\left(0.041666666666666664, t_3 \cdot {\pi}^{4}, {\pi}^{7} \cdot -0.001388888888888889\right)\right) - -0.0001984126984126984 \cdot {\pi}^{7}\right)\right)\right)\right) + {l_m}^{3} \cdot \left(t_6 \cdot \left(t_4 - t_0\right) + t_5\right)}\\
\mathbf{else}:\\
\;\;\;\;\pi \cdot l_m - \frac{\tan \left(\pi \cdot l_m\right)}{F \cdot F}\\
\end{array}
\end{array}
\end{array}
if (*.f64 F F) < 0.0Initial program 30.0%
associate-*l/30.0%
*-un-lft-identity30.0%
associate-/r*51.2%
Applied egg-rr51.2%
expm1-log1p-u50.2%
Applied egg-rr50.2%
if 0.0 < (*.f64 F F) < 9.99999999999999997e-74Initial program 69.3%
associate-/r/69.2%
associate-/l*69.2%
clear-num69.3%
add-sqr-sqrt36.0%
sqrt-prod48.4%
sqr-neg48.4%
sqrt-unprod12.3%
add-sqr-sqrt20.3%
associate-/l/20.3%
clear-num20.3%
add-sqr-sqrt12.3%
sqrt-unprod48.3%
sqr-neg48.3%
sqrt-prod36.0%
add-sqr-sqrt69.2%
pow269.2%
Applied egg-rr69.2%
Taylor expanded in l around 0 93.3%
Simplified93.3%
if 9.99999999999999997e-74 < (*.f64 F F) Initial program 99.4%
sqr-neg99.4%
associate-*l/99.4%
*-lft-identity99.4%
sqr-neg99.4%
Simplified99.4%
Final simplification88.1%
l_m = (fabs.f64 l)
l_s = (copysign.f64 1 l)
(FPCore (l_s F l_m)
:precision binary64
(let* ((t_0 (* (pow PI 3.0) 0.3333333333333333))
(t_1 (/ (pow F 2.0) (pow PI 3.0)))
(t_2 (* (pow t_0 2.0) t_1))
(t_3
(-
(* 0.008333333333333333 (pow PI 5.0))
(fma
-0.5
(* t_0 (pow PI 2.0))
(* (pow PI 5.0) 0.041666666666666664))))
(t_4 (/ (pow F 2.0) (pow PI 2.0)))
(t_5 (* t_3 t_4)))
(*
l_s
(if (<= F 5.5e-162)
(- (* PI l_m) (/ (/ (tan (expm1 (log1p (* PI l_m)))) F) F))
(if (<= F 1.48e-36)
(+
(* PI l_m)
(/
-1.0
(+
(+
(- (/ (pow F 2.0) (* PI l_m)) (* t_4 (* l_m t_0)))
(*
(pow l_m 5.0)
(+
(/ (- t_5 t_2) (/ PI t_0))
(+
(* t_1 (* (pow PI 3.0) (* 0.3333333333333333 t_3)))
(*
t_4
(-
(fma
(* (pow PI 2.0) -0.5)
t_3
(fma
0.041666666666666664
(* (pow PI 3.0) (* 0.3333333333333333 (pow PI 4.0)))
(* (pow PI 7.0) -0.001388888888888889)))
(* -0.0001984126984126984 (pow PI 7.0))))))))
(* (pow l_m 3.0) (- t_2 t_5)))))
(- (* PI l_m) (/ (tan (* PI l_m)) (* F F))))))))l_m = fabs(l);
l_s = copysign(1.0, l);
double code(double l_s, double F, double l_m) {
double t_0 = pow(((double) M_PI), 3.0) * 0.3333333333333333;
double t_1 = pow(F, 2.0) / pow(((double) M_PI), 3.0);
double t_2 = pow(t_0, 2.0) * t_1;
double t_3 = (0.008333333333333333 * pow(((double) M_PI), 5.0)) - fma(-0.5, (t_0 * pow(((double) M_PI), 2.0)), (pow(((double) M_PI), 5.0) * 0.041666666666666664));
double t_4 = pow(F, 2.0) / pow(((double) M_PI), 2.0);
double t_5 = t_3 * t_4;
double tmp;
if (F <= 5.5e-162) {
tmp = (((double) M_PI) * l_m) - ((tan(expm1(log1p((((double) M_PI) * l_m)))) / F) / F);
} else if (F <= 1.48e-36) {
tmp = (((double) M_PI) * l_m) + (-1.0 / ((((pow(F, 2.0) / (((double) M_PI) * l_m)) - (t_4 * (l_m * t_0))) + (pow(l_m, 5.0) * (((t_5 - t_2) / (((double) M_PI) / t_0)) + ((t_1 * (pow(((double) M_PI), 3.0) * (0.3333333333333333 * t_3))) + (t_4 * (fma((pow(((double) M_PI), 2.0) * -0.5), t_3, fma(0.041666666666666664, (pow(((double) M_PI), 3.0) * (0.3333333333333333 * pow(((double) M_PI), 4.0))), (pow(((double) M_PI), 7.0) * -0.001388888888888889))) - (-0.0001984126984126984 * pow(((double) M_PI), 7.0)))))))) + (pow(l_m, 3.0) * (t_2 - t_5))));
} else {
tmp = (((double) M_PI) * l_m) - (tan((((double) M_PI) * l_m)) / (F * F));
}
return l_s * tmp;
}
l_m = abs(l) l_s = copysign(1.0, l) function code(l_s, F, l_m) t_0 = Float64((pi ^ 3.0) * 0.3333333333333333) t_1 = Float64((F ^ 2.0) / (pi ^ 3.0)) t_2 = Float64((t_0 ^ 2.0) * t_1) t_3 = Float64(Float64(0.008333333333333333 * (pi ^ 5.0)) - fma(-0.5, Float64(t_0 * (pi ^ 2.0)), Float64((pi ^ 5.0) * 0.041666666666666664))) t_4 = Float64((F ^ 2.0) / (pi ^ 2.0)) t_5 = Float64(t_3 * t_4) tmp = 0.0 if (F <= 5.5e-162) tmp = Float64(Float64(pi * l_m) - Float64(Float64(tan(expm1(log1p(Float64(pi * l_m)))) / F) / F)); elseif (F <= 1.48e-36) tmp = Float64(Float64(pi * l_m) + Float64(-1.0 / Float64(Float64(Float64(Float64((F ^ 2.0) / Float64(pi * l_m)) - Float64(t_4 * Float64(l_m * t_0))) + Float64((l_m ^ 5.0) * Float64(Float64(Float64(t_5 - t_2) / Float64(pi / t_0)) + Float64(Float64(t_1 * Float64((pi ^ 3.0) * Float64(0.3333333333333333 * t_3))) + Float64(t_4 * Float64(fma(Float64((pi ^ 2.0) * -0.5), t_3, fma(0.041666666666666664, Float64((pi ^ 3.0) * Float64(0.3333333333333333 * (pi ^ 4.0))), Float64((pi ^ 7.0) * -0.001388888888888889))) - Float64(-0.0001984126984126984 * (pi ^ 7.0)))))))) + Float64((l_m ^ 3.0) * Float64(t_2 - t_5))))); else tmp = Float64(Float64(pi * l_m) - Float64(tan(Float64(pi * l_m)) / Float64(F * F))); end return Float64(l_s * tmp) end
l_m = N[Abs[l], $MachinePrecision]
l_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[l]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[l$95$s_, F_, l$95$m_] := Block[{t$95$0 = N[(N[Power[Pi, 3.0], $MachinePrecision] * 0.3333333333333333), $MachinePrecision]}, Block[{t$95$1 = N[(N[Power[F, 2.0], $MachinePrecision] / N[Power[Pi, 3.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[Power[t$95$0, 2.0], $MachinePrecision] * t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(N[(0.008333333333333333 * N[Power[Pi, 5.0], $MachinePrecision]), $MachinePrecision] - N[(-0.5 * N[(t$95$0 * N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision] + N[(N[Power[Pi, 5.0], $MachinePrecision] * 0.041666666666666664), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[Power[F, 2.0], $MachinePrecision] / N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$3 * t$95$4), $MachinePrecision]}, N[(l$95$s * If[LessEqual[F, 5.5e-162], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[(N[Tan[N[(Exp[N[Log[1 + N[(Pi * l$95$m), $MachinePrecision]], $MachinePrecision]] - 1), $MachinePrecision]], $MachinePrecision] / F), $MachinePrecision] / F), $MachinePrecision]), $MachinePrecision], If[LessEqual[F, 1.48e-36], N[(N[(Pi * l$95$m), $MachinePrecision] + N[(-1.0 / N[(N[(N[(N[(N[Power[F, 2.0], $MachinePrecision] / N[(Pi * l$95$m), $MachinePrecision]), $MachinePrecision] - N[(t$95$4 * N[(l$95$m * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Power[l$95$m, 5.0], $MachinePrecision] * N[(N[(N[(t$95$5 - t$95$2), $MachinePrecision] / N[(Pi / t$95$0), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$1 * N[(N[Power[Pi, 3.0], $MachinePrecision] * N[(0.3333333333333333 * t$95$3), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(t$95$4 * N[(N[(N[(N[Power[Pi, 2.0], $MachinePrecision] * -0.5), $MachinePrecision] * t$95$3 + N[(0.041666666666666664 * N[(N[Power[Pi, 3.0], $MachinePrecision] * N[(0.3333333333333333 * N[Power[Pi, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Power[Pi, 7.0], $MachinePrecision] * -0.001388888888888889), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(-0.0001984126984126984 * N[Power[Pi, 7.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Power[l$95$m, 3.0], $MachinePrecision] * N[(t$95$2 - t$95$5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[Tan[N[(Pi * l$95$m), $MachinePrecision]], $MachinePrecision] / N[(F * F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]]]]]]]
\begin{array}{l}
l_m = \left|\ell\right|
\\
l_s = \mathsf{copysign}\left(1, \ell\right)
\\
\begin{array}{l}
t_0 := {\pi}^{3} \cdot 0.3333333333333333\\
t_1 := \frac{{F}^{2}}{{\pi}^{3}}\\
t_2 := {t_0}^{2} \cdot t_1\\
t_3 := 0.008333333333333333 \cdot {\pi}^{5} - \mathsf{fma}\left(-0.5, t_0 \cdot {\pi}^{2}, {\pi}^{5} \cdot 0.041666666666666664\right)\\
t_4 := \frac{{F}^{2}}{{\pi}^{2}}\\
t_5 := t_3 \cdot t_4\\
l_s \cdot \begin{array}{l}
\mathbf{if}\;F \leq 5.5 \cdot 10^{-162}:\\
\;\;\;\;\pi \cdot l_m - \frac{\frac{\tan \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\pi \cdot l_m\right)\right)\right)}{F}}{F}\\
\mathbf{elif}\;F \leq 1.48 \cdot 10^{-36}:\\
\;\;\;\;\pi \cdot l_m + \frac{-1}{\left(\left(\frac{{F}^{2}}{\pi \cdot l_m} - t_4 \cdot \left(l_m \cdot t_0\right)\right) + {l_m}^{5} \cdot \left(\frac{t_5 - t_2}{\frac{\pi}{t_0}} + \left(t_1 \cdot \left({\pi}^{3} \cdot \left(0.3333333333333333 \cdot t_3\right)\right) + t_4 \cdot \left(\mathsf{fma}\left({\pi}^{2} \cdot -0.5, t_3, \mathsf{fma}\left(0.041666666666666664, {\pi}^{3} \cdot \left(0.3333333333333333 \cdot {\pi}^{4}\right), {\pi}^{7} \cdot -0.001388888888888889\right)\right) - -0.0001984126984126984 \cdot {\pi}^{7}\right)\right)\right)\right) + {l_m}^{3} \cdot \left(t_2 - t_5\right)}\\
\mathbf{else}:\\
\;\;\;\;\pi \cdot l_m - \frac{\tan \left(\pi \cdot l_m\right)}{F \cdot F}\\
\end{array}
\end{array}
\end{array}
if F < 5.50000000000000006e-162Initial program 69.3%
associate-*l/69.3%
*-un-lft-identity69.3%
associate-/r*76.8%
Applied egg-rr76.8%
expm1-log1p-u64.7%
Applied egg-rr64.7%
if 5.50000000000000006e-162 < F < 1.48e-36Initial program 69.8%
associate-/r/69.7%
associate-/l*69.6%
clear-num69.7%
add-sqr-sqrt69.5%
sqrt-prod69.7%
sqr-neg69.7%
sqrt-unprod0.0%
add-sqr-sqrt15.4%
associate-/l/15.4%
clear-num15.4%
add-sqr-sqrt0.0%
sqrt-unprod69.7%
sqr-neg69.7%
sqrt-prod69.6%
add-sqr-sqrt69.7%
pow269.7%
Applied egg-rr69.7%
add-log-exp16.3%
Applied egg-rr16.3%
Taylor expanded in l around 0 93.0%
Simplified93.0%
if 1.48e-36 < F Initial program 99.3%
sqr-neg99.3%
associate-*l/99.3%
*-lft-identity99.3%
sqr-neg99.3%
Simplified99.3%
Final simplification78.7%
l_m = (fabs.f64 l)
l_s = (copysign.f64 1 l)
(FPCore (l_s F l_m)
:precision binary64
(let* ((t_0 (* (pow PI 3.0) 0.3333333333333333))
(t_1 (/ (pow F 2.0) (pow PI 2.0))))
(*
l_s
(if (<= F 5e-162)
(- (* PI l_m) (/ (/ (tan (expm1 (log1p (* PI l_m)))) F) F))
(if (<= F 7e-37)
(+
(* PI l_m)
(/
-1.0
(+
(-
(/ (pow F 2.0) (* PI l_m))
(* t_1 (* (pow PI 3.0) (* l_m 0.3333333333333333))))
(*
(pow l_m 3.0)
(+
(*
t_1
(-
(fma
(* (pow PI 2.0) -0.5)
t_0
(* (pow PI 5.0) 0.041666666666666664))
(* 0.008333333333333333 (pow PI 5.0))))
(* (pow t_0 2.0) (/ (pow F 2.0) (pow PI 3.0))))))))
(- (* PI l_m) (/ (tan (* PI l_m)) (* F F))))))))l_m = fabs(l);
l_s = copysign(1.0, l);
double code(double l_s, double F, double l_m) {
double t_0 = pow(((double) M_PI), 3.0) * 0.3333333333333333;
double t_1 = pow(F, 2.0) / pow(((double) M_PI), 2.0);
double tmp;
if (F <= 5e-162) {
tmp = (((double) M_PI) * l_m) - ((tan(expm1(log1p((((double) M_PI) * l_m)))) / F) / F);
} else if (F <= 7e-37) {
tmp = (((double) M_PI) * l_m) + (-1.0 / (((pow(F, 2.0) / (((double) M_PI) * l_m)) - (t_1 * (pow(((double) M_PI), 3.0) * (l_m * 0.3333333333333333)))) + (pow(l_m, 3.0) * ((t_1 * (fma((pow(((double) M_PI), 2.0) * -0.5), t_0, (pow(((double) M_PI), 5.0) * 0.041666666666666664)) - (0.008333333333333333 * pow(((double) M_PI), 5.0)))) + (pow(t_0, 2.0) * (pow(F, 2.0) / pow(((double) M_PI), 3.0)))))));
} else {
tmp = (((double) M_PI) * l_m) - (tan((((double) M_PI) * l_m)) / (F * F));
}
return l_s * tmp;
}
l_m = abs(l) l_s = copysign(1.0, l) function code(l_s, F, l_m) t_0 = Float64((pi ^ 3.0) * 0.3333333333333333) t_1 = Float64((F ^ 2.0) / (pi ^ 2.0)) tmp = 0.0 if (F <= 5e-162) tmp = Float64(Float64(pi * l_m) - Float64(Float64(tan(expm1(log1p(Float64(pi * l_m)))) / F) / F)); elseif (F <= 7e-37) tmp = Float64(Float64(pi * l_m) + Float64(-1.0 / Float64(Float64(Float64((F ^ 2.0) / Float64(pi * l_m)) - Float64(t_1 * Float64((pi ^ 3.0) * Float64(l_m * 0.3333333333333333)))) + Float64((l_m ^ 3.0) * Float64(Float64(t_1 * Float64(fma(Float64((pi ^ 2.0) * -0.5), t_0, Float64((pi ^ 5.0) * 0.041666666666666664)) - Float64(0.008333333333333333 * (pi ^ 5.0)))) + Float64((t_0 ^ 2.0) * Float64((F ^ 2.0) / (pi ^ 3.0)))))))); else tmp = Float64(Float64(pi * l_m) - Float64(tan(Float64(pi * l_m)) / Float64(F * F))); end return Float64(l_s * tmp) end
l_m = N[Abs[l], $MachinePrecision]
l_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[l]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[l$95$s_, F_, l$95$m_] := Block[{t$95$0 = N[(N[Power[Pi, 3.0], $MachinePrecision] * 0.3333333333333333), $MachinePrecision]}, Block[{t$95$1 = N[(N[Power[F, 2.0], $MachinePrecision] / N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision]}, N[(l$95$s * If[LessEqual[F, 5e-162], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[(N[Tan[N[(Exp[N[Log[1 + N[(Pi * l$95$m), $MachinePrecision]], $MachinePrecision]] - 1), $MachinePrecision]], $MachinePrecision] / F), $MachinePrecision] / F), $MachinePrecision]), $MachinePrecision], If[LessEqual[F, 7e-37], N[(N[(Pi * l$95$m), $MachinePrecision] + N[(-1.0 / N[(N[(N[(N[Power[F, 2.0], $MachinePrecision] / N[(Pi * l$95$m), $MachinePrecision]), $MachinePrecision] - N[(t$95$1 * N[(N[Power[Pi, 3.0], $MachinePrecision] * N[(l$95$m * 0.3333333333333333), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Power[l$95$m, 3.0], $MachinePrecision] * N[(N[(t$95$1 * N[(N[(N[(N[Power[Pi, 2.0], $MachinePrecision] * -0.5), $MachinePrecision] * t$95$0 + N[(N[Power[Pi, 5.0], $MachinePrecision] * 0.041666666666666664), $MachinePrecision]), $MachinePrecision] - N[(0.008333333333333333 * N[Power[Pi, 5.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(N[Power[t$95$0, 2.0], $MachinePrecision] * N[(N[Power[F, 2.0], $MachinePrecision] / N[Power[Pi, 3.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[Tan[N[(Pi * l$95$m), $MachinePrecision]], $MachinePrecision] / N[(F * F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]]]
\begin{array}{l}
l_m = \left|\ell\right|
\\
l_s = \mathsf{copysign}\left(1, \ell\right)
\\
\begin{array}{l}
t_0 := {\pi}^{3} \cdot 0.3333333333333333\\
t_1 := \frac{{F}^{2}}{{\pi}^{2}}\\
l_s \cdot \begin{array}{l}
\mathbf{if}\;F \leq 5 \cdot 10^{-162}:\\
\;\;\;\;\pi \cdot l_m - \frac{\frac{\tan \left(\mathsf{expm1}\left(\mathsf{log1p}\left(\pi \cdot l_m\right)\right)\right)}{F}}{F}\\
\mathbf{elif}\;F \leq 7 \cdot 10^{-37}:\\
\;\;\;\;\pi \cdot l_m + \frac{-1}{\left(\frac{{F}^{2}}{\pi \cdot l_m} - t_1 \cdot \left({\pi}^{3} \cdot \left(l_m \cdot 0.3333333333333333\right)\right)\right) + {l_m}^{3} \cdot \left(t_1 \cdot \left(\mathsf{fma}\left({\pi}^{2} \cdot -0.5, t_0, {\pi}^{5} \cdot 0.041666666666666664\right) - 0.008333333333333333 \cdot {\pi}^{5}\right) + {t_0}^{2} \cdot \frac{{F}^{2}}{{\pi}^{3}}\right)}\\
\mathbf{else}:\\
\;\;\;\;\pi \cdot l_m - \frac{\tan \left(\pi \cdot l_m\right)}{F \cdot F}\\
\end{array}
\end{array}
\end{array}
if F < 5.00000000000000014e-162Initial program 69.3%
associate-*l/69.3%
*-un-lft-identity69.3%
associate-/r*76.8%
Applied egg-rr76.8%
expm1-log1p-u64.7%
Applied egg-rr64.7%
if 5.00000000000000014e-162 < F < 7.0000000000000003e-37Initial program 69.8%
associate-/r/69.7%
associate-/l*69.6%
clear-num69.7%
add-sqr-sqrt69.5%
sqrt-prod69.7%
sqr-neg69.7%
sqrt-unprod0.0%
add-sqr-sqrt15.4%
associate-/l/15.4%
clear-num15.4%
add-sqr-sqrt0.0%
sqrt-unprod69.7%
sqr-neg69.7%
sqrt-prod69.6%
add-sqr-sqrt69.7%
pow269.7%
Applied egg-rr69.7%
Taylor expanded in l around 0 87.6%
Simplified87.6%
if 7.0000000000000003e-37 < F Initial program 99.3%
sqr-neg99.3%
associate-*l/99.3%
*-lft-identity99.3%
sqr-neg99.3%
Simplified99.3%
Final simplification78.1%
l_m = (fabs.f64 l)
l_s = (copysign.f64 1 l)
(FPCore (l_s F l_m)
:precision binary64
(*
l_s
(if (<= (* PI l_m) 6e-135)
(- (* PI l_m) (/ (/ l_m (/ F PI)) F))
(- (* PI l_m) (/ (tan (* PI l_m)) (* F F))))))l_m = fabs(l);
l_s = copysign(1.0, l);
double code(double l_s, double F, double l_m) {
double tmp;
if ((((double) M_PI) * l_m) <= 6e-135) {
tmp = (((double) M_PI) * l_m) - ((l_m / (F / ((double) M_PI))) / F);
} else {
tmp = (((double) M_PI) * l_m) - (tan((((double) M_PI) * l_m)) / (F * F));
}
return l_s * tmp;
}
l_m = Math.abs(l);
l_s = Math.copySign(1.0, l);
public static double code(double l_s, double F, double l_m) {
double tmp;
if ((Math.PI * l_m) <= 6e-135) {
tmp = (Math.PI * l_m) - ((l_m / (F / Math.PI)) / F);
} else {
tmp = (Math.PI * l_m) - (Math.tan((Math.PI * l_m)) / (F * F));
}
return l_s * tmp;
}
l_m = math.fabs(l) l_s = math.copysign(1.0, l) def code(l_s, F, l_m): tmp = 0 if (math.pi * l_m) <= 6e-135: tmp = (math.pi * l_m) - ((l_m / (F / math.pi)) / F) else: tmp = (math.pi * l_m) - (math.tan((math.pi * l_m)) / (F * F)) return l_s * tmp
l_m = abs(l) l_s = copysign(1.0, l) function code(l_s, F, l_m) tmp = 0.0 if (Float64(pi * l_m) <= 6e-135) tmp = Float64(Float64(pi * l_m) - Float64(Float64(l_m / Float64(F / pi)) / F)); else tmp = Float64(Float64(pi * l_m) - Float64(tan(Float64(pi * l_m)) / Float64(F * F))); end return Float64(l_s * tmp) end
l_m = abs(l); l_s = sign(l) * abs(1.0); function tmp_2 = code(l_s, F, l_m) tmp = 0.0; if ((pi * l_m) <= 6e-135) tmp = (pi * l_m) - ((l_m / (F / pi)) / F); else tmp = (pi * l_m) - (tan((pi * l_m)) / (F * F)); end tmp_2 = l_s * tmp; end
l_m = N[Abs[l], $MachinePrecision]
l_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[l]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[l$95$s_, F_, l$95$m_] := N[(l$95$s * If[LessEqual[N[(Pi * l$95$m), $MachinePrecision], 6e-135], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[(l$95$m / N[(F / Pi), $MachinePrecision]), $MachinePrecision] / F), $MachinePrecision]), $MachinePrecision], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[Tan[N[(Pi * l$95$m), $MachinePrecision]], $MachinePrecision] / N[(F * F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
l_m = \left|\ell\right|
\\
l_s = \mathsf{copysign}\left(1, \ell\right)
\\
l_s \cdot \begin{array}{l}
\mathbf{if}\;\pi \cdot l_m \leq 6 \cdot 10^{-135}:\\
\;\;\;\;\pi \cdot l_m - \frac{\frac{l_m}{\frac{F}{\pi}}}{F}\\
\mathbf{else}:\\
\;\;\;\;\pi \cdot l_m - \frac{\tan \left(\pi \cdot l_m\right)}{F \cdot F}\\
\end{array}
\end{array}
if (*.f64 (PI.f64) l) < 6.00000000000000024e-135Initial program 81.1%
associate-*l/81.2%
*-un-lft-identity81.2%
associate-/r*87.8%
Applied egg-rr87.8%
Taylor expanded in l around 0 81.7%
associate-/l*81.7%
Simplified81.7%
if 6.00000000000000024e-135 < (*.f64 (PI.f64) l) Initial program 74.4%
sqr-neg74.4%
associate-*l/74.4%
*-lft-identity74.4%
sqr-neg74.4%
Simplified74.4%
Final simplification79.1%
l_m = (fabs.f64 l) l_s = (copysign.f64 1 l) (FPCore (l_s F l_m) :precision binary64 (* l_s (- (* PI l_m) (/ (/ (tan (* PI l_m)) F) F))))
l_m = fabs(l);
l_s = copysign(1.0, l);
double code(double l_s, double F, double l_m) {
return l_s * ((((double) M_PI) * l_m) - ((tan((((double) M_PI) * l_m)) / F) / F));
}
l_m = Math.abs(l);
l_s = Math.copySign(1.0, l);
public static double code(double l_s, double F, double l_m) {
return l_s * ((Math.PI * l_m) - ((Math.tan((Math.PI * l_m)) / F) / F));
}
l_m = math.fabs(l) l_s = math.copysign(1.0, l) def code(l_s, F, l_m): return l_s * ((math.pi * l_m) - ((math.tan((math.pi * l_m)) / F) / F))
l_m = abs(l) l_s = copysign(1.0, l) function code(l_s, F, l_m) return Float64(l_s * Float64(Float64(pi * l_m) - Float64(Float64(tan(Float64(pi * l_m)) / F) / F))) end
l_m = abs(l); l_s = sign(l) * abs(1.0); function tmp = code(l_s, F, l_m) tmp = l_s * ((pi * l_m) - ((tan((pi * l_m)) / F) / F)); end
l_m = N[Abs[l], $MachinePrecision]
l_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[l]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[l$95$s_, F_, l$95$m_] := N[(l$95$s * N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[(N[Tan[N[(Pi * l$95$m), $MachinePrecision]], $MachinePrecision] / F), $MachinePrecision] / F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
l_m = \left|\ell\right|
\\
l_s = \mathsf{copysign}\left(1, \ell\right)
\\
l_s \cdot \left(\pi \cdot l_m - \frac{\frac{\tan \left(\pi \cdot l_m\right)}{F}}{F}\right)
\end{array}
Initial program 78.7%
associate-*l/78.8%
*-un-lft-identity78.8%
associate-/r*83.0%
Applied egg-rr83.0%
Final simplification83.0%
l_m = (fabs.f64 l)
l_s = (copysign.f64 1 l)
(FPCore (l_s F l_m)
:precision binary64
(*
l_s
(if (<= l_m 0.5)
(- (* PI l_m) (/ (* l_m (/ PI F)) F))
(- (* PI l_m) (/ (/ (* PI l_m) (- F)) F)))))l_m = fabs(l);
l_s = copysign(1.0, l);
double code(double l_s, double F, double l_m) {
double tmp;
if (l_m <= 0.5) {
tmp = (((double) M_PI) * l_m) - ((l_m * (((double) M_PI) / F)) / F);
} else {
tmp = (((double) M_PI) * l_m) - (((((double) M_PI) * l_m) / -F) / F);
}
return l_s * tmp;
}
l_m = Math.abs(l);
l_s = Math.copySign(1.0, l);
public static double code(double l_s, double F, double l_m) {
double tmp;
if (l_m <= 0.5) {
tmp = (Math.PI * l_m) - ((l_m * (Math.PI / F)) / F);
} else {
tmp = (Math.PI * l_m) - (((Math.PI * l_m) / -F) / F);
}
return l_s * tmp;
}
l_m = math.fabs(l) l_s = math.copysign(1.0, l) def code(l_s, F, l_m): tmp = 0 if l_m <= 0.5: tmp = (math.pi * l_m) - ((l_m * (math.pi / F)) / F) else: tmp = (math.pi * l_m) - (((math.pi * l_m) / -F) / F) return l_s * tmp
l_m = abs(l) l_s = copysign(1.0, l) function code(l_s, F, l_m) tmp = 0.0 if (l_m <= 0.5) tmp = Float64(Float64(pi * l_m) - Float64(Float64(l_m * Float64(pi / F)) / F)); else tmp = Float64(Float64(pi * l_m) - Float64(Float64(Float64(pi * l_m) / Float64(-F)) / F)); end return Float64(l_s * tmp) end
l_m = abs(l); l_s = sign(l) * abs(1.0); function tmp_2 = code(l_s, F, l_m) tmp = 0.0; if (l_m <= 0.5) tmp = (pi * l_m) - ((l_m * (pi / F)) / F); else tmp = (pi * l_m) - (((pi * l_m) / -F) / F); end tmp_2 = l_s * tmp; end
l_m = N[Abs[l], $MachinePrecision]
l_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[l]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[l$95$s_, F_, l$95$m_] := N[(l$95$s * If[LessEqual[l$95$m, 0.5], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[(l$95$m * N[(Pi / F), $MachinePrecision]), $MachinePrecision] / F), $MachinePrecision]), $MachinePrecision], N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[(N[(Pi * l$95$m), $MachinePrecision] / (-F)), $MachinePrecision] / F), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
l_m = \left|\ell\right|
\\
l_s = \mathsf{copysign}\left(1, \ell\right)
\\
l_s \cdot \begin{array}{l}
\mathbf{if}\;l_m \leq 0.5:\\
\;\;\;\;\pi \cdot l_m - \frac{l_m \cdot \frac{\pi}{F}}{F}\\
\mathbf{else}:\\
\;\;\;\;\pi \cdot l_m - \frac{\frac{\pi \cdot l_m}{-F}}{F}\\
\end{array}
\end{array}
if l < 0.5Initial program 83.9%
sqr-neg83.9%
associate-*l/83.9%
*-lft-identity83.9%
sqr-neg83.9%
Simplified83.9%
Taylor expanded in l around 0 78.7%
*-commutative78.7%
times-frac84.3%
Applied egg-rr84.3%
*-commutative84.3%
associate-*l/84.4%
Applied egg-rr84.4%
if 0.5 < l Initial program 62.7%
associate-*l/62.7%
*-un-lft-identity62.7%
associate-/r*62.7%
Applied egg-rr62.7%
frac-2neg62.7%
add-sqr-sqrt33.5%
sqrt-unprod61.5%
sqr-neg61.5%
sqrt-prod27.9%
add-sqr-sqrt61.2%
distribute-neg-frac61.2%
neg-sub061.2%
Applied egg-rr61.2%
neg-sub061.2%
neg-mul-161.2%
metadata-eval61.2%
times-frac61.2%
*-lft-identity61.2%
*-commutative61.2%
mul-1-neg61.2%
Simplified61.2%
Taylor expanded in l around 0 51.1%
Final simplification76.3%
l_m = (fabs.f64 l) l_s = (copysign.f64 1 l) (FPCore (l_s F l_m) :precision binary64 (* l_s (- (* PI l_m) (* (/ PI F) (/ l_m F)))))
l_m = fabs(l);
l_s = copysign(1.0, l);
double code(double l_s, double F, double l_m) {
return l_s * ((((double) M_PI) * l_m) - ((((double) M_PI) / F) * (l_m / F)));
}
l_m = Math.abs(l);
l_s = Math.copySign(1.0, l);
public static double code(double l_s, double F, double l_m) {
return l_s * ((Math.PI * l_m) - ((Math.PI / F) * (l_m / F)));
}
l_m = math.fabs(l) l_s = math.copysign(1.0, l) def code(l_s, F, l_m): return l_s * ((math.pi * l_m) - ((math.pi / F) * (l_m / F)))
l_m = abs(l) l_s = copysign(1.0, l) function code(l_s, F, l_m) return Float64(l_s * Float64(Float64(pi * l_m) - Float64(Float64(pi / F) * Float64(l_m / F)))) end
l_m = abs(l); l_s = sign(l) * abs(1.0); function tmp = code(l_s, F, l_m) tmp = l_s * ((pi * l_m) - ((pi / F) * (l_m / F))); end
l_m = N[Abs[l], $MachinePrecision]
l_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[l]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[l$95$s_, F_, l$95$m_] := N[(l$95$s * N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[(Pi / F), $MachinePrecision] * N[(l$95$m / F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
l_m = \left|\ell\right|
\\
l_s = \mathsf{copysign}\left(1, \ell\right)
\\
l_s \cdot \left(\pi \cdot l_m - \frac{\pi}{F} \cdot \frac{l_m}{F}\right)
\end{array}
Initial program 78.7%
sqr-neg78.7%
associate-*l/78.8%
*-lft-identity78.8%
sqr-neg78.8%
Simplified78.8%
Taylor expanded in l around 0 71.0%
*-commutative71.0%
times-frac75.3%
Applied egg-rr75.3%
Final simplification75.3%
l_m = (fabs.f64 l) l_s = (copysign.f64 1 l) (FPCore (l_s F l_m) :precision binary64 (* l_s (- (* PI l_m) (/ (* l_m (/ PI F)) F))))
l_m = fabs(l);
l_s = copysign(1.0, l);
double code(double l_s, double F, double l_m) {
return l_s * ((((double) M_PI) * l_m) - ((l_m * (((double) M_PI) / F)) / F));
}
l_m = Math.abs(l);
l_s = Math.copySign(1.0, l);
public static double code(double l_s, double F, double l_m) {
return l_s * ((Math.PI * l_m) - ((l_m * (Math.PI / F)) / F));
}
l_m = math.fabs(l) l_s = math.copysign(1.0, l) def code(l_s, F, l_m): return l_s * ((math.pi * l_m) - ((l_m * (math.pi / F)) / F))
l_m = abs(l) l_s = copysign(1.0, l) function code(l_s, F, l_m) return Float64(l_s * Float64(Float64(pi * l_m) - Float64(Float64(l_m * Float64(pi / F)) / F))) end
l_m = abs(l); l_s = sign(l) * abs(1.0); function tmp = code(l_s, F, l_m) tmp = l_s * ((pi * l_m) - ((l_m * (pi / F)) / F)); end
l_m = N[Abs[l], $MachinePrecision]
l_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[l]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[l$95$s_, F_, l$95$m_] := N[(l$95$s * N[(N[(Pi * l$95$m), $MachinePrecision] - N[(N[(l$95$m * N[(Pi / F), $MachinePrecision]), $MachinePrecision] / F), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
l_m = \left|\ell\right|
\\
l_s = \mathsf{copysign}\left(1, \ell\right)
\\
l_s \cdot \left(\pi \cdot l_m - \frac{l_m \cdot \frac{\pi}{F}}{F}\right)
\end{array}
Initial program 78.7%
sqr-neg78.7%
associate-*l/78.8%
*-lft-identity78.8%
sqr-neg78.8%
Simplified78.8%
Taylor expanded in l around 0 71.0%
*-commutative71.0%
times-frac75.3%
Applied egg-rr75.3%
*-commutative75.3%
associate-*l/75.3%
Applied egg-rr75.3%
Final simplification75.3%
herbie shell --seed 2024022
(FPCore (F l)
:name "VandenBroeck and Keller, Equation (6)"
:precision binary64
(- (* PI l) (* (/ 1.0 (* F F)) (tan (* PI l)))))