
(FPCore (t l k) :precision binary64 (/ 2.0 (* (* (* (/ (pow t 3.0) (* l l)) (sin k)) (tan k)) (+ (+ 1.0 (pow (/ k t) 2.0)) 1.0))))
double code(double t, double l, double k) {
return 2.0 / ((((pow(t, 3.0) / (l * l)) * sin(k)) * tan(k)) * ((1.0 + pow((k / t), 2.0)) + 1.0));
}
real(8) function code(t, l, k)
real(8), intent (in) :: t
real(8), intent (in) :: l
real(8), intent (in) :: k
code = 2.0d0 / (((((t ** 3.0d0) / (l * l)) * sin(k)) * tan(k)) * ((1.0d0 + ((k / t) ** 2.0d0)) + 1.0d0))
end function
public static double code(double t, double l, double k) {
return 2.0 / ((((Math.pow(t, 3.0) / (l * l)) * Math.sin(k)) * Math.tan(k)) * ((1.0 + Math.pow((k / t), 2.0)) + 1.0));
}
def code(t, l, k): return 2.0 / ((((math.pow(t, 3.0) / (l * l)) * math.sin(k)) * math.tan(k)) * ((1.0 + math.pow((k / t), 2.0)) + 1.0))
function code(t, l, k) return Float64(2.0 / Float64(Float64(Float64(Float64((t ^ 3.0) / Float64(l * l)) * sin(k)) * tan(k)) * Float64(Float64(1.0 + (Float64(k / t) ^ 2.0)) + 1.0))) end
function tmp = code(t, l, k) tmp = 2.0 / (((((t ^ 3.0) / (l * l)) * sin(k)) * tan(k)) * ((1.0 + ((k / t) ^ 2.0)) + 1.0)); end
code[t_, l_, k_] := N[(2.0 / N[(N[(N[(N[(N[Power[t, 3.0], $MachinePrecision] / N[(l * l), $MachinePrecision]), $MachinePrecision] * N[Sin[k], $MachinePrecision]), $MachinePrecision] * N[Tan[k], $MachinePrecision]), $MachinePrecision] * N[(N[(1.0 + N[Power[N[(k / t), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{2}{\left(\left(\frac{{t}^{3}}{\ell \cdot \ell} \cdot \sin k\right) \cdot \tan k\right) \cdot \left(\left(1 + {\left(\frac{k}{t}\right)}^{2}\right) + 1\right)}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 13 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (t l k) :precision binary64 (/ 2.0 (* (* (* (/ (pow t 3.0) (* l l)) (sin k)) (tan k)) (+ (+ 1.0 (pow (/ k t) 2.0)) 1.0))))
double code(double t, double l, double k) {
return 2.0 / ((((pow(t, 3.0) / (l * l)) * sin(k)) * tan(k)) * ((1.0 + pow((k / t), 2.0)) + 1.0));
}
real(8) function code(t, l, k)
real(8), intent (in) :: t
real(8), intent (in) :: l
real(8), intent (in) :: k
code = 2.0d0 / (((((t ** 3.0d0) / (l * l)) * sin(k)) * tan(k)) * ((1.0d0 + ((k / t) ** 2.0d0)) + 1.0d0))
end function
public static double code(double t, double l, double k) {
return 2.0 / ((((Math.pow(t, 3.0) / (l * l)) * Math.sin(k)) * Math.tan(k)) * ((1.0 + Math.pow((k / t), 2.0)) + 1.0));
}
def code(t, l, k): return 2.0 / ((((math.pow(t, 3.0) / (l * l)) * math.sin(k)) * math.tan(k)) * ((1.0 + math.pow((k / t), 2.0)) + 1.0))
function code(t, l, k) return Float64(2.0 / Float64(Float64(Float64(Float64((t ^ 3.0) / Float64(l * l)) * sin(k)) * tan(k)) * Float64(Float64(1.0 + (Float64(k / t) ^ 2.0)) + 1.0))) end
function tmp = code(t, l, k) tmp = 2.0 / (((((t ^ 3.0) / (l * l)) * sin(k)) * tan(k)) * ((1.0 + ((k / t) ^ 2.0)) + 1.0)); end
code[t_, l_, k_] := N[(2.0 / N[(N[(N[(N[(N[Power[t, 3.0], $MachinePrecision] / N[(l * l), $MachinePrecision]), $MachinePrecision] * N[Sin[k], $MachinePrecision]), $MachinePrecision] * N[Tan[k], $MachinePrecision]), $MachinePrecision] * N[(N[(1.0 + N[Power[N[(k / t), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{2}{\left(\left(\frac{{t}^{3}}{\ell \cdot \ell} \cdot \sin k\right) \cdot \tan k\right) \cdot \left(\left(1 + {\left(\frac{k}{t}\right)}^{2}\right) + 1\right)}
\end{array}
t\_m = (fabs.f64 t)
t\_s = (copysign.f64 #s(literal 1 binary64) t)
(FPCore (t_s t_m l k)
:precision binary64
(*
t_s
(if (<= t_m 8e-105)
(/ 2.0 (* (* (/ (* k (* t_m k)) (* l l)) (tan k)) (sin k)))
(if (<= t_m 2e+202)
(/
2.0
(*
(/ (pow t_m 1.5) l)
(*
(* (pow t_m 1.5) (/ (sin k) l))
(* (tan k) (fma k (/ k (* t_m t_m)) 2.0)))))
(/
2.0
(*
(* (tan k) (* (sin k) (* t_m (/ (* t_m (/ t_m l)) l))))
(+ (+ (pow (/ k t_m) 2.0) 1.0) 1.0)))))))t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
double tmp;
if (t_m <= 8e-105) {
tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * tan(k)) * sin(k));
} else if (t_m <= 2e+202) {
tmp = 2.0 / ((pow(t_m, 1.5) / l) * ((pow(t_m, 1.5) * (sin(k) / l)) * (tan(k) * fma(k, (k / (t_m * t_m)), 2.0))));
} else {
tmp = 2.0 / ((tan(k) * (sin(k) * (t_m * ((t_m * (t_m / l)) / l)))) * ((pow((k / t_m), 2.0) + 1.0) + 1.0));
}
return t_s * tmp;
}
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) tmp = 0.0 if (t_m <= 8e-105) tmp = Float64(2.0 / Float64(Float64(Float64(Float64(k * Float64(t_m * k)) / Float64(l * l)) * tan(k)) * sin(k))); elseif (t_m <= 2e+202) tmp = Float64(2.0 / Float64(Float64((t_m ^ 1.5) / l) * Float64(Float64((t_m ^ 1.5) * Float64(sin(k) / l)) * Float64(tan(k) * fma(k, Float64(k / Float64(t_m * t_m)), 2.0))))); else tmp = Float64(2.0 / Float64(Float64(tan(k) * Float64(sin(k) * Float64(t_m * Float64(Float64(t_m * Float64(t_m / l)) / l)))) * Float64(Float64((Float64(k / t_m) ^ 2.0) + 1.0) + 1.0))); end return Float64(t_s * tmp) end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * If[LessEqual[t$95$m, 8e-105], N[(2.0 / N[(N[(N[(N[(k * N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] / N[(l * l), $MachinePrecision]), $MachinePrecision] * N[Tan[k], $MachinePrecision]), $MachinePrecision] * N[Sin[k], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$m, 2e+202], N[(2.0 / N[(N[(N[Power[t$95$m, 1.5], $MachinePrecision] / l), $MachinePrecision] * N[(N[(N[Power[t$95$m, 1.5], $MachinePrecision] * N[(N[Sin[k], $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision] * N[(N[Tan[k], $MachinePrecision] * N[(k * N[(k / N[(t$95$m * t$95$m), $MachinePrecision]), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(2.0 / N[(N[(N[Tan[k], $MachinePrecision] * N[(N[Sin[k], $MachinePrecision] * N[(t$95$m * N[(N[(t$95$m * N[(t$95$m / l), $MachinePrecision]), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[Power[N[(k / t$95$m), $MachinePrecision], 2.0], $MachinePrecision] + 1.0), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_m \leq 8 \cdot 10^{-105}:\\
\;\;\;\;\frac{2}{\left(\frac{k \cdot \left(t\_m \cdot k\right)}{\ell \cdot \ell} \cdot \tan k\right) \cdot \sin k}\\
\mathbf{elif}\;t\_m \leq 2 \cdot 10^{+202}:\\
\;\;\;\;\frac{2}{\frac{{t\_m}^{1.5}}{\ell} \cdot \left(\left({t\_m}^{1.5} \cdot \frac{\sin k}{\ell}\right) \cdot \left(\tan k \cdot \mathsf{fma}\left(k, \frac{k}{t\_m \cdot t\_m}, 2\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{\left(\tan k \cdot \left(\sin k \cdot \left(t\_m \cdot \frac{t\_m \cdot \frac{t\_m}{\ell}}{\ell}\right)\right)\right) \cdot \left(\left({\left(\frac{k}{t\_m}\right)}^{2} + 1\right) + 1\right)}\\
\end{array}
\end{array}
if t < 7.99999999999999972e-105Initial program 47.4%
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr35.8%
Taylor expanded in k around 0
associate-*r/N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
associate-*l/N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
+-commutativeN/A
unpow2N/A
associate-/l*N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified68.3%
Taylor expanded in t around 0
/-lowering-/.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6468.9
Simplified68.9%
if 7.99999999999999972e-105 < t < 1.9999999999999998e202Initial program 70.5%
associate-*l/N/A
sqr-powN/A
associate-*l*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
metadata-evalN/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
metadata-evalN/A
sin-lowering-sin.f6488.3
Applied egg-rr88.3%
associate-*l*N/A
associate-*l*N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
pow-lowering-pow.f64N/A
*-lowering-*.f64N/A
associate-/l*N/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
/-lowering-/.f64N/A
sin-lowering-sin.f64N/A
*-lowering-*.f64N/A
tan-lowering-tan.f64N/A
unpow2N/A
times-fracN/A
+-commutativeN/A
Applied egg-rr94.9%
if 1.9999999999999998e202 < t Initial program 67.0%
unpow3N/A
times-fracN/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6477.1
Applied egg-rr77.1%
associate-/l*N/A
associate-/l*N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6490.6
Applied egg-rr90.6%
frac-2negN/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
neg-lowering-neg.f64N/A
neg-lowering-neg.f6490.7
Applied egg-rr90.7%
Final simplification77.0%
t\_m = (fabs.f64 t)
t\_s = (copysign.f64 #s(literal 1 binary64) t)
(FPCore (t_s t_m l k)
:precision binary64
(*
t_s
(if (<= k 7.5e-92)
(* (/ l (* t_m k)) (/ l (* k (* t_m t_m))))
(if (<= k 3.6e+207)
(/
2.0
(*
(sin k)
(*
(tan k)
(* t_m (fma k (/ k (* l l)) (* (/ t_m l) (/ (* t_m 2.0) l)))))))
(/
2.0
(*
(sin k)
(*
(tan k)
(* t_m (fma k (/ (/ k l) l) (/ (* 2.0 (* t_m t_m)) (* l l)))))))))))t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
double tmp;
if (k <= 7.5e-92) {
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)));
} else if (k <= 3.6e+207) {
tmp = 2.0 / (sin(k) * (tan(k) * (t_m * fma(k, (k / (l * l)), ((t_m / l) * ((t_m * 2.0) / l))))));
} else {
tmp = 2.0 / (sin(k) * (tan(k) * (t_m * fma(k, ((k / l) / l), ((2.0 * (t_m * t_m)) / (l * l))))));
}
return t_s * tmp;
}
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) tmp = 0.0 if (k <= 7.5e-92) tmp = Float64(Float64(l / Float64(t_m * k)) * Float64(l / Float64(k * Float64(t_m * t_m)))); elseif (k <= 3.6e+207) tmp = Float64(2.0 / Float64(sin(k) * Float64(tan(k) * Float64(t_m * fma(k, Float64(k / Float64(l * l)), Float64(Float64(t_m / l) * Float64(Float64(t_m * 2.0) / l))))))); else tmp = Float64(2.0 / Float64(sin(k) * Float64(tan(k) * Float64(t_m * fma(k, Float64(Float64(k / l) / l), Float64(Float64(2.0 * Float64(t_m * t_m)) / Float64(l * l))))))); end return Float64(t_s * tmp) end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * If[LessEqual[k, 7.5e-92], N[(N[(l / N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] * N[(l / N[(k * N[(t$95$m * t$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[k, 3.6e+207], N[(2.0 / N[(N[Sin[k], $MachinePrecision] * N[(N[Tan[k], $MachinePrecision] * N[(t$95$m * N[(k * N[(k / N[(l * l), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$m / l), $MachinePrecision] * N[(N[(t$95$m * 2.0), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(2.0 / N[(N[Sin[k], $MachinePrecision] * N[(N[Tan[k], $MachinePrecision] * N[(t$95$m * N[(k * N[(N[(k / l), $MachinePrecision] / l), $MachinePrecision] + N[(N[(2.0 * N[(t$95$m * t$95$m), $MachinePrecision]), $MachinePrecision] / N[(l * l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \begin{array}{l}
\mathbf{if}\;k \leq 7.5 \cdot 10^{-92}:\\
\;\;\;\;\frac{\ell}{t\_m \cdot k} \cdot \frac{\ell}{k \cdot \left(t\_m \cdot t\_m\right)}\\
\mathbf{elif}\;k \leq 3.6 \cdot 10^{+207}:\\
\;\;\;\;\frac{2}{\sin k \cdot \left(\tan k \cdot \left(t\_m \cdot \mathsf{fma}\left(k, \frac{k}{\ell \cdot \ell}, \frac{t\_m}{\ell} \cdot \frac{t\_m \cdot 2}{\ell}\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{\sin k \cdot \left(\tan k \cdot \left(t\_m \cdot \mathsf{fma}\left(k, \frac{\frac{k}{\ell}}{\ell}, \frac{2 \cdot \left(t\_m \cdot t\_m\right)}{\ell \cdot \ell}\right)\right)\right)}\\
\end{array}
\end{array}
if k < 7.5000000000000005e-92Initial program 57.9%
Taylor expanded in k around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6455.2
Simplified55.2%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6467.6
Applied egg-rr67.6%
associate-*l/N/A
associate-*r*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f6472.2
Applied egg-rr72.2%
if 7.5000000000000005e-92 < k < 3.60000000000000014e207Initial program 47.6%
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr39.0%
Taylor expanded in k around 0
associate-*r/N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
associate-*l/N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
+-commutativeN/A
unpow2N/A
associate-/l*N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified67.7%
associate-*r*N/A
times-fracN/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f6483.5
Applied egg-rr83.5%
if 3.60000000000000014e207 < k Initial program 52.3%
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr32.3%
Taylor expanded in k around 0
associate-*r/N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
associate-*l/N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
+-commutativeN/A
unpow2N/A
associate-/l*N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified64.7%
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f6487.7
Applied egg-rr87.7%
Final simplification76.8%
t\_m = (fabs.f64 t)
t\_s = (copysign.f64 #s(literal 1 binary64) t)
(FPCore (t_s t_m l k)
:precision binary64
(*
t_s
(if (<= t_m 5e-117)
(/ 2.0 (* (* (/ (* k (* t_m k)) (* l l)) (tan k)) (sin k)))
(if (<= t_m 8e+105)
(/
2.0
(*
(sin k)
(*
(tan k)
(fma
(* t_m (/ k (* l l)))
k
(/ (* t_m (* t_m (* t_m 2.0))) (* l l))))))
(/
2.0
(* 2.0 (* (tan k) (* (sin k) (* t_m (/ (* t_m (/ t_m l)) l))))))))))t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
double tmp;
if (t_m <= 5e-117) {
tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * tan(k)) * sin(k));
} else if (t_m <= 8e+105) {
tmp = 2.0 / (sin(k) * (tan(k) * fma((t_m * (k / (l * l))), k, ((t_m * (t_m * (t_m * 2.0))) / (l * l)))));
} else {
tmp = 2.0 / (2.0 * (tan(k) * (sin(k) * (t_m * ((t_m * (t_m / l)) / l)))));
}
return t_s * tmp;
}
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) tmp = 0.0 if (t_m <= 5e-117) tmp = Float64(2.0 / Float64(Float64(Float64(Float64(k * Float64(t_m * k)) / Float64(l * l)) * tan(k)) * sin(k))); elseif (t_m <= 8e+105) tmp = Float64(2.0 / Float64(sin(k) * Float64(tan(k) * fma(Float64(t_m * Float64(k / Float64(l * l))), k, Float64(Float64(t_m * Float64(t_m * Float64(t_m * 2.0))) / Float64(l * l)))))); else tmp = Float64(2.0 / Float64(2.0 * Float64(tan(k) * Float64(sin(k) * Float64(t_m * Float64(Float64(t_m * Float64(t_m / l)) / l)))))); end return Float64(t_s * tmp) end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * If[LessEqual[t$95$m, 5e-117], N[(2.0 / N[(N[(N[(N[(k * N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] / N[(l * l), $MachinePrecision]), $MachinePrecision] * N[Tan[k], $MachinePrecision]), $MachinePrecision] * N[Sin[k], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$m, 8e+105], N[(2.0 / N[(N[Sin[k], $MachinePrecision] * N[(N[Tan[k], $MachinePrecision] * N[(N[(t$95$m * N[(k / N[(l * l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * k + N[(N[(t$95$m * N[(t$95$m * N[(t$95$m * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(l * l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(2.0 / N[(2.0 * N[(N[Tan[k], $MachinePrecision] * N[(N[Sin[k], $MachinePrecision] * N[(t$95$m * N[(N[(t$95$m * N[(t$95$m / l), $MachinePrecision]), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_m \leq 5 \cdot 10^{-117}:\\
\;\;\;\;\frac{2}{\left(\frac{k \cdot \left(t\_m \cdot k\right)}{\ell \cdot \ell} \cdot \tan k\right) \cdot \sin k}\\
\mathbf{elif}\;t\_m \leq 8 \cdot 10^{+105}:\\
\;\;\;\;\frac{2}{\sin k \cdot \left(\tan k \cdot \mathsf{fma}\left(t\_m \cdot \frac{k}{\ell \cdot \ell}, k, \frac{t\_m \cdot \left(t\_m \cdot \left(t\_m \cdot 2\right)\right)}{\ell \cdot \ell}\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{2 \cdot \left(\tan k \cdot \left(\sin k \cdot \left(t\_m \cdot \frac{t\_m \cdot \frac{t\_m}{\ell}}{\ell}\right)\right)\right)}\\
\end{array}
\end{array}
if t < 5e-117Initial program 47.3%
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr35.7%
Taylor expanded in k around 0
associate-*r/N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
associate-*l/N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
+-commutativeN/A
unpow2N/A
associate-/l*N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified68.0%
Taylor expanded in t around 0
/-lowering-/.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6468.6
Simplified68.6%
if 5e-117 < t < 7.9999999999999995e105Initial program 71.0%
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr70.7%
Taylor expanded in k around 0
associate-*r/N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
associate-*l/N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
+-commutativeN/A
unpow2N/A
associate-/l*N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified73.4%
distribute-lft-inN/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
accelerator-lowering-fma.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-commutativeN/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6475.5
Applied egg-rr75.5%
if 7.9999999999999995e105 < t Initial program 67.3%
unpow3N/A
times-fracN/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6479.6
Applied egg-rr79.6%
associate-/l*N/A
associate-/l*N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6490.8
Applied egg-rr90.8%
frac-2negN/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
neg-lowering-neg.f64N/A
neg-lowering-neg.f6490.9
Applied egg-rr90.9%
Taylor expanded in k around 0
Simplified86.5%
Final simplification72.7%
t\_m = (fabs.f64 t)
t\_s = (copysign.f64 #s(literal 1 binary64) t)
(FPCore (t_s t_m l k)
:precision binary64
(*
t_s
(if (<= t_m 2.8e-121)
(/ 2.0 (* (* (/ (* k (* t_m k)) (* l l)) (tan k)) (sin k)))
(if (<= t_m 3e+107)
(/
2.0
(*
(sin k)
(*
(tan k)
(* t_m (fma k (/ k (* l l)) (/ (* 2.0 (* t_m t_m)) (* l l)))))))
(/
2.0
(* 2.0 (* (tan k) (* (sin k) (* t_m (/ (* t_m (/ t_m l)) l))))))))))t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
double tmp;
if (t_m <= 2.8e-121) {
tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * tan(k)) * sin(k));
} else if (t_m <= 3e+107) {
tmp = 2.0 / (sin(k) * (tan(k) * (t_m * fma(k, (k / (l * l)), ((2.0 * (t_m * t_m)) / (l * l))))));
} else {
tmp = 2.0 / (2.0 * (tan(k) * (sin(k) * (t_m * ((t_m * (t_m / l)) / l)))));
}
return t_s * tmp;
}
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) tmp = 0.0 if (t_m <= 2.8e-121) tmp = Float64(2.0 / Float64(Float64(Float64(Float64(k * Float64(t_m * k)) / Float64(l * l)) * tan(k)) * sin(k))); elseif (t_m <= 3e+107) tmp = Float64(2.0 / Float64(sin(k) * Float64(tan(k) * Float64(t_m * fma(k, Float64(k / Float64(l * l)), Float64(Float64(2.0 * Float64(t_m * t_m)) / Float64(l * l))))))); else tmp = Float64(2.0 / Float64(2.0 * Float64(tan(k) * Float64(sin(k) * Float64(t_m * Float64(Float64(t_m * Float64(t_m / l)) / l)))))); end return Float64(t_s * tmp) end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * If[LessEqual[t$95$m, 2.8e-121], N[(2.0 / N[(N[(N[(N[(k * N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] / N[(l * l), $MachinePrecision]), $MachinePrecision] * N[Tan[k], $MachinePrecision]), $MachinePrecision] * N[Sin[k], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$m, 3e+107], N[(2.0 / N[(N[Sin[k], $MachinePrecision] * N[(N[Tan[k], $MachinePrecision] * N[(t$95$m * N[(k * N[(k / N[(l * l), $MachinePrecision]), $MachinePrecision] + N[(N[(2.0 * N[(t$95$m * t$95$m), $MachinePrecision]), $MachinePrecision] / N[(l * l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(2.0 / N[(2.0 * N[(N[Tan[k], $MachinePrecision] * N[(N[Sin[k], $MachinePrecision] * N[(t$95$m * N[(N[(t$95$m * N[(t$95$m / l), $MachinePrecision]), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_m \leq 2.8 \cdot 10^{-121}:\\
\;\;\;\;\frac{2}{\left(\frac{k \cdot \left(t\_m \cdot k\right)}{\ell \cdot \ell} \cdot \tan k\right) \cdot \sin k}\\
\mathbf{elif}\;t\_m \leq 3 \cdot 10^{+107}:\\
\;\;\;\;\frac{2}{\sin k \cdot \left(\tan k \cdot \left(t\_m \cdot \mathsf{fma}\left(k, \frac{k}{\ell \cdot \ell}, \frac{2 \cdot \left(t\_m \cdot t\_m\right)}{\ell \cdot \ell}\right)\right)\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{2 \cdot \left(\tan k \cdot \left(\sin k \cdot \left(t\_m \cdot \frac{t\_m \cdot \frac{t\_m}{\ell}}{\ell}\right)\right)\right)}\\
\end{array}
\end{array}
if t < 2.8000000000000001e-121Initial program 47.3%
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr35.7%
Taylor expanded in k around 0
associate-*r/N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
associate-*l/N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
+-commutativeN/A
unpow2N/A
associate-/l*N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified68.0%
Taylor expanded in t around 0
/-lowering-/.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6468.6
Simplified68.6%
if 2.8000000000000001e-121 < t < 3.00000000000000023e107Initial program 71.0%
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr70.7%
Taylor expanded in k around 0
associate-*r/N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
associate-*l/N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
+-commutativeN/A
unpow2N/A
associate-/l*N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified73.4%
if 3.00000000000000023e107 < t Initial program 67.3%
unpow3N/A
times-fracN/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6479.6
Applied egg-rr79.6%
associate-/l*N/A
associate-/l*N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6490.8
Applied egg-rr90.8%
frac-2negN/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
neg-lowering-neg.f64N/A
neg-lowering-neg.f6490.9
Applied egg-rr90.9%
Taylor expanded in k around 0
Simplified86.5%
Final simplification72.3%
t\_m = (fabs.f64 t)
t\_s = (copysign.f64 #s(literal 1 binary64) t)
(FPCore (t_s t_m l k)
:precision binary64
(*
t_s
(if (<= k 3.1e-92)
(* (/ l (* t_m k)) (/ l (* k (* t_m t_m))))
(/
2.0
(*
(sin k)
(*
(tan k)
(* t_m (fma k (/ k (* l l)) (* (/ t_m l) (/ (* t_m 2.0) l))))))))))t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
double tmp;
if (k <= 3.1e-92) {
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)));
} else {
tmp = 2.0 / (sin(k) * (tan(k) * (t_m * fma(k, (k / (l * l)), ((t_m / l) * ((t_m * 2.0) / l))))));
}
return t_s * tmp;
}
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) tmp = 0.0 if (k <= 3.1e-92) tmp = Float64(Float64(l / Float64(t_m * k)) * Float64(l / Float64(k * Float64(t_m * t_m)))); else tmp = Float64(2.0 / Float64(sin(k) * Float64(tan(k) * Float64(t_m * fma(k, Float64(k / Float64(l * l)), Float64(Float64(t_m / l) * Float64(Float64(t_m * 2.0) / l))))))); end return Float64(t_s * tmp) end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * If[LessEqual[k, 3.1e-92], N[(N[(l / N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] * N[(l / N[(k * N[(t$95$m * t$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(2.0 / N[(N[Sin[k], $MachinePrecision] * N[(N[Tan[k], $MachinePrecision] * N[(t$95$m * N[(k * N[(k / N[(l * l), $MachinePrecision]), $MachinePrecision] + N[(N[(t$95$m / l), $MachinePrecision] * N[(N[(t$95$m * 2.0), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \begin{array}{l}
\mathbf{if}\;k \leq 3.1 \cdot 10^{-92}:\\
\;\;\;\;\frac{\ell}{t\_m \cdot k} \cdot \frac{\ell}{k \cdot \left(t\_m \cdot t\_m\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{\sin k \cdot \left(\tan k \cdot \left(t\_m \cdot \mathsf{fma}\left(k, \frac{k}{\ell \cdot \ell}, \frac{t\_m}{\ell} \cdot \frac{t\_m \cdot 2}{\ell}\right)\right)\right)}\\
\end{array}
\end{array}
if k < 3.1000000000000001e-92Initial program 57.9%
Taylor expanded in k around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6455.2
Simplified55.2%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6467.6
Applied egg-rr67.6%
associate-*l/N/A
associate-*r*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f6472.2
Applied egg-rr72.2%
if 3.1000000000000001e-92 < k Initial program 48.9%
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr37.3%
Taylor expanded in k around 0
associate-*r/N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
associate-*l/N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
+-commutativeN/A
unpow2N/A
associate-/l*N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified66.9%
associate-*r*N/A
times-fracN/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f6480.8
Applied egg-rr80.8%
Final simplification75.4%
t\_m = (fabs.f64 t)
t\_s = (copysign.f64 #s(literal 1 binary64) t)
(FPCore (t_s t_m l k)
:precision binary64
(*
t_s
(if (<= t_m 7e-45)
(/ 2.0 (* (* (/ (* k (* t_m k)) (* l l)) (tan k)) (sin k)))
(if (<= t_m 5.7e+135)
(* (/ l (* t_m k)) (/ l (* k (* t_m t_m))))
(/
2.0
(* 2.0 (* (tan k) (* (sin k) (* t_m (/ (* t_m (/ t_m l)) l))))))))))t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
double tmp;
if (t_m <= 7e-45) {
tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * tan(k)) * sin(k));
} else if (t_m <= 5.7e+135) {
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)));
} else {
tmp = 2.0 / (2.0 * (tan(k) * (sin(k) * (t_m * ((t_m * (t_m / l)) / l)))));
}
return t_s * tmp;
}
t\_m = abs(t)
t\_s = copysign(1.0d0, t)
real(8) function code(t_s, t_m, l, k)
real(8), intent (in) :: t_s
real(8), intent (in) :: t_m
real(8), intent (in) :: l
real(8), intent (in) :: k
real(8) :: tmp
if (t_m <= 7d-45) then
tmp = 2.0d0 / ((((k * (t_m * k)) / (l * l)) * tan(k)) * sin(k))
else if (t_m <= 5.7d+135) then
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)))
else
tmp = 2.0d0 / (2.0d0 * (tan(k) * (sin(k) * (t_m * ((t_m * (t_m / l)) / l)))))
end if
code = t_s * tmp
end function
t\_m = Math.abs(t);
t\_s = Math.copySign(1.0, t);
public static double code(double t_s, double t_m, double l, double k) {
double tmp;
if (t_m <= 7e-45) {
tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * Math.tan(k)) * Math.sin(k));
} else if (t_m <= 5.7e+135) {
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)));
} else {
tmp = 2.0 / (2.0 * (Math.tan(k) * (Math.sin(k) * (t_m * ((t_m * (t_m / l)) / l)))));
}
return t_s * tmp;
}
t\_m = math.fabs(t) t\_s = math.copysign(1.0, t) def code(t_s, t_m, l, k): tmp = 0 if t_m <= 7e-45: tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * math.tan(k)) * math.sin(k)) elif t_m <= 5.7e+135: tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m))) else: tmp = 2.0 / (2.0 * (math.tan(k) * (math.sin(k) * (t_m * ((t_m * (t_m / l)) / l))))) return t_s * tmp
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) tmp = 0.0 if (t_m <= 7e-45) tmp = Float64(2.0 / Float64(Float64(Float64(Float64(k * Float64(t_m * k)) / Float64(l * l)) * tan(k)) * sin(k))); elseif (t_m <= 5.7e+135) tmp = Float64(Float64(l / Float64(t_m * k)) * Float64(l / Float64(k * Float64(t_m * t_m)))); else tmp = Float64(2.0 / Float64(2.0 * Float64(tan(k) * Float64(sin(k) * Float64(t_m * Float64(Float64(t_m * Float64(t_m / l)) / l)))))); end return Float64(t_s * tmp) end
t\_m = abs(t); t\_s = sign(t) * abs(1.0); function tmp_2 = code(t_s, t_m, l, k) tmp = 0.0; if (t_m <= 7e-45) tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * tan(k)) * sin(k)); elseif (t_m <= 5.7e+135) tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m))); else tmp = 2.0 / (2.0 * (tan(k) * (sin(k) * (t_m * ((t_m * (t_m / l)) / l))))); end tmp_2 = t_s * tmp; end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * If[LessEqual[t$95$m, 7e-45], N[(2.0 / N[(N[(N[(N[(k * N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] / N[(l * l), $MachinePrecision]), $MachinePrecision] * N[Tan[k], $MachinePrecision]), $MachinePrecision] * N[Sin[k], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$m, 5.7e+135], N[(N[(l / N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] * N[(l / N[(k * N[(t$95$m * t$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(2.0 / N[(2.0 * N[(N[Tan[k], $MachinePrecision] * N[(N[Sin[k], $MachinePrecision] * N[(t$95$m * N[(N[(t$95$m * N[(t$95$m / l), $MachinePrecision]), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_m \leq 7 \cdot 10^{-45}:\\
\;\;\;\;\frac{2}{\left(\frac{k \cdot \left(t\_m \cdot k\right)}{\ell \cdot \ell} \cdot \tan k\right) \cdot \sin k}\\
\mathbf{elif}\;t\_m \leq 5.7 \cdot 10^{+135}:\\
\;\;\;\;\frac{\ell}{t\_m \cdot k} \cdot \frac{\ell}{k \cdot \left(t\_m \cdot t\_m\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{2 \cdot \left(\tan k \cdot \left(\sin k \cdot \left(t\_m \cdot \frac{t\_m \cdot \frac{t\_m}{\ell}}{\ell}\right)\right)\right)}\\
\end{array}
\end{array}
if t < 7e-45Initial program 49.5%
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr38.7%
Taylor expanded in k around 0
associate-*r/N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
associate-*l/N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
+-commutativeN/A
unpow2N/A
associate-/l*N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified69.0%
Taylor expanded in t around 0
/-lowering-/.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6469.0
Simplified69.0%
if 7e-45 < t < 5.7000000000000002e135Initial program 71.8%
Taylor expanded in k around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6465.6
Simplified65.6%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6474.8
Applied egg-rr74.8%
associate-*l/N/A
associate-*r*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f6477.6
Applied egg-rr77.6%
if 5.7000000000000002e135 < t Initial program 64.6%
unpow3N/A
times-fracN/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6476.2
Applied egg-rr76.2%
associate-/l*N/A
associate-/l*N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6489.3
Applied egg-rr89.3%
frac-2negN/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
neg-lowering-neg.f64N/A
neg-lowering-neg.f6489.4
Applied egg-rr89.4%
Taylor expanded in k around 0
Simplified84.3%
Final simplification72.3%
t\_m = (fabs.f64 t)
t\_s = (copysign.f64 #s(literal 1 binary64) t)
(FPCore (t_s t_m l k)
:precision binary64
(*
t_s
(if (<= t_m 5.4e-45)
(/ 2.0 (* (* (/ (* k (* t_m k)) (* l l)) (tan k)) (sin k)))
(if (<= t_m 1.6e+135)
(* (/ l (* t_m k)) (/ l (* k (* t_m t_m))))
(/
2.0
(* 2.0 (* (tan k) (* (sin k) (* t_m (* (/ t_m l) (/ t_m l)))))))))))t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
double tmp;
if (t_m <= 5.4e-45) {
tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * tan(k)) * sin(k));
} else if (t_m <= 1.6e+135) {
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)));
} else {
tmp = 2.0 / (2.0 * (tan(k) * (sin(k) * (t_m * ((t_m / l) * (t_m / l))))));
}
return t_s * tmp;
}
t\_m = abs(t)
t\_s = copysign(1.0d0, t)
real(8) function code(t_s, t_m, l, k)
real(8), intent (in) :: t_s
real(8), intent (in) :: t_m
real(8), intent (in) :: l
real(8), intent (in) :: k
real(8) :: tmp
if (t_m <= 5.4d-45) then
tmp = 2.0d0 / ((((k * (t_m * k)) / (l * l)) * tan(k)) * sin(k))
else if (t_m <= 1.6d+135) then
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)))
else
tmp = 2.0d0 / (2.0d0 * (tan(k) * (sin(k) * (t_m * ((t_m / l) * (t_m / l))))))
end if
code = t_s * tmp
end function
t\_m = Math.abs(t);
t\_s = Math.copySign(1.0, t);
public static double code(double t_s, double t_m, double l, double k) {
double tmp;
if (t_m <= 5.4e-45) {
tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * Math.tan(k)) * Math.sin(k));
} else if (t_m <= 1.6e+135) {
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)));
} else {
tmp = 2.0 / (2.0 * (Math.tan(k) * (Math.sin(k) * (t_m * ((t_m / l) * (t_m / l))))));
}
return t_s * tmp;
}
t\_m = math.fabs(t) t\_s = math.copysign(1.0, t) def code(t_s, t_m, l, k): tmp = 0 if t_m <= 5.4e-45: tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * math.tan(k)) * math.sin(k)) elif t_m <= 1.6e+135: tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m))) else: tmp = 2.0 / (2.0 * (math.tan(k) * (math.sin(k) * (t_m * ((t_m / l) * (t_m / l)))))) return t_s * tmp
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) tmp = 0.0 if (t_m <= 5.4e-45) tmp = Float64(2.0 / Float64(Float64(Float64(Float64(k * Float64(t_m * k)) / Float64(l * l)) * tan(k)) * sin(k))); elseif (t_m <= 1.6e+135) tmp = Float64(Float64(l / Float64(t_m * k)) * Float64(l / Float64(k * Float64(t_m * t_m)))); else tmp = Float64(2.0 / Float64(2.0 * Float64(tan(k) * Float64(sin(k) * Float64(t_m * Float64(Float64(t_m / l) * Float64(t_m / l))))))); end return Float64(t_s * tmp) end
t\_m = abs(t); t\_s = sign(t) * abs(1.0); function tmp_2 = code(t_s, t_m, l, k) tmp = 0.0; if (t_m <= 5.4e-45) tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * tan(k)) * sin(k)); elseif (t_m <= 1.6e+135) tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m))); else tmp = 2.0 / (2.0 * (tan(k) * (sin(k) * (t_m * ((t_m / l) * (t_m / l)))))); end tmp_2 = t_s * tmp; end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * If[LessEqual[t$95$m, 5.4e-45], N[(2.0 / N[(N[(N[(N[(k * N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] / N[(l * l), $MachinePrecision]), $MachinePrecision] * N[Tan[k], $MachinePrecision]), $MachinePrecision] * N[Sin[k], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$m, 1.6e+135], N[(N[(l / N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] * N[(l / N[(k * N[(t$95$m * t$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(2.0 / N[(2.0 * N[(N[Tan[k], $MachinePrecision] * N[(N[Sin[k], $MachinePrecision] * N[(t$95$m * N[(N[(t$95$m / l), $MachinePrecision] * N[(t$95$m / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_m \leq 5.4 \cdot 10^{-45}:\\
\;\;\;\;\frac{2}{\left(\frac{k \cdot \left(t\_m \cdot k\right)}{\ell \cdot \ell} \cdot \tan k\right) \cdot \sin k}\\
\mathbf{elif}\;t\_m \leq 1.6 \cdot 10^{+135}:\\
\;\;\;\;\frac{\ell}{t\_m \cdot k} \cdot \frac{\ell}{k \cdot \left(t\_m \cdot t\_m\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{2 \cdot \left(\tan k \cdot \left(\sin k \cdot \left(t\_m \cdot \left(\frac{t\_m}{\ell} \cdot \frac{t\_m}{\ell}\right)\right)\right)\right)}\\
\end{array}
\end{array}
if t < 5.3999999999999997e-45Initial program 49.5%
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr38.7%
Taylor expanded in k around 0
associate-*r/N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
associate-*l/N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
+-commutativeN/A
unpow2N/A
associate-/l*N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified69.0%
Taylor expanded in t around 0
/-lowering-/.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6469.0
Simplified69.0%
if 5.3999999999999997e-45 < t < 1.59999999999999987e135Initial program 71.8%
Taylor expanded in k around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6465.6
Simplified65.6%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6474.8
Applied egg-rr74.8%
associate-*l/N/A
associate-*r*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f6477.6
Applied egg-rr77.6%
if 1.59999999999999987e135 < t Initial program 64.6%
unpow3N/A
times-fracN/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f6476.2
Applied egg-rr76.2%
associate-/l*N/A
associate-/l*N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
/-lowering-/.f6489.3
Applied egg-rr89.3%
Taylor expanded in k around 0
Simplified84.2%
Final simplification72.3%
t\_m = (fabs.f64 t)
t\_s = (copysign.f64 #s(literal 1 binary64) t)
(FPCore (t_s t_m l k)
:precision binary64
(*
t_s
(if (<= k 1.75e-25)
(* (/ l (* t_m k)) (/ l (* k (* t_m t_m))))
(/ 2.0 (* (* (/ (* k (* t_m k)) (* l l)) (tan k)) (sin k))))))t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
double tmp;
if (k <= 1.75e-25) {
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)));
} else {
tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * tan(k)) * sin(k));
}
return t_s * tmp;
}
t\_m = abs(t)
t\_s = copysign(1.0d0, t)
real(8) function code(t_s, t_m, l, k)
real(8), intent (in) :: t_s
real(8), intent (in) :: t_m
real(8), intent (in) :: l
real(8), intent (in) :: k
real(8) :: tmp
if (k <= 1.75d-25) then
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)))
else
tmp = 2.0d0 / ((((k * (t_m * k)) / (l * l)) * tan(k)) * sin(k))
end if
code = t_s * tmp
end function
t\_m = Math.abs(t);
t\_s = Math.copySign(1.0, t);
public static double code(double t_s, double t_m, double l, double k) {
double tmp;
if (k <= 1.75e-25) {
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)));
} else {
tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * Math.tan(k)) * Math.sin(k));
}
return t_s * tmp;
}
t\_m = math.fabs(t) t\_s = math.copysign(1.0, t) def code(t_s, t_m, l, k): tmp = 0 if k <= 1.75e-25: tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m))) else: tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * math.tan(k)) * math.sin(k)) return t_s * tmp
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) tmp = 0.0 if (k <= 1.75e-25) tmp = Float64(Float64(l / Float64(t_m * k)) * Float64(l / Float64(k * Float64(t_m * t_m)))); else tmp = Float64(2.0 / Float64(Float64(Float64(Float64(k * Float64(t_m * k)) / Float64(l * l)) * tan(k)) * sin(k))); end return Float64(t_s * tmp) end
t\_m = abs(t); t\_s = sign(t) * abs(1.0); function tmp_2 = code(t_s, t_m, l, k) tmp = 0.0; if (k <= 1.75e-25) tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m))); else tmp = 2.0 / ((((k * (t_m * k)) / (l * l)) * tan(k)) * sin(k)); end tmp_2 = t_s * tmp; end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * If[LessEqual[k, 1.75e-25], N[(N[(l / N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] * N[(l / N[(k * N[(t$95$m * t$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(2.0 / N[(N[(N[(N[(k * N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] / N[(l * l), $MachinePrecision]), $MachinePrecision] * N[Tan[k], $MachinePrecision]), $MachinePrecision] * N[Sin[k], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \begin{array}{l}
\mathbf{if}\;k \leq 1.75 \cdot 10^{-25}:\\
\;\;\;\;\frac{\ell}{t\_m \cdot k} \cdot \frac{\ell}{k \cdot \left(t\_m \cdot t\_m\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{\left(\frac{k \cdot \left(t\_m \cdot k\right)}{\ell \cdot \ell} \cdot \tan k\right) \cdot \sin k}\\
\end{array}
\end{array}
if k < 1.7500000000000001e-25Initial program 57.2%
Taylor expanded in k around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6454.8
Simplified54.8%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6467.7
Applied egg-rr67.7%
associate-*l/N/A
associate-*r*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f6472.3
Applied egg-rr72.3%
if 1.7500000000000001e-25 < k Initial program 48.4%
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr34.1%
Taylor expanded in k around 0
associate-*r/N/A
unpow3N/A
unpow2N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
associate-*l/N/A
distribute-rgt-inN/A
*-lowering-*.f64N/A
+-commutativeN/A
unpow2N/A
associate-/l*N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
Simplified68.2%
Taylor expanded in t around 0
/-lowering-/.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6471.9
Simplified71.9%
Final simplification72.2%
t\_m = (fabs.f64 t)
t\_s = (copysign.f64 #s(literal 1 binary64) t)
(FPCore (t_s t_m l k)
:precision binary64
(*
t_s
(if (<= k 2.6e-25)
(* (/ l (* t_m k)) (/ l (* k (* t_m t_m))))
(/ 2.0 (* (sin k) (* (tan k) (* (* k k) (/ t_m (* l l)))))))))t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
double tmp;
if (k <= 2.6e-25) {
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)));
} else {
tmp = 2.0 / (sin(k) * (tan(k) * ((k * k) * (t_m / (l * l)))));
}
return t_s * tmp;
}
t\_m = abs(t)
t\_s = copysign(1.0d0, t)
real(8) function code(t_s, t_m, l, k)
real(8), intent (in) :: t_s
real(8), intent (in) :: t_m
real(8), intent (in) :: l
real(8), intent (in) :: k
real(8) :: tmp
if (k <= 2.6d-25) then
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)))
else
tmp = 2.0d0 / (sin(k) * (tan(k) * ((k * k) * (t_m / (l * l)))))
end if
code = t_s * tmp
end function
t\_m = Math.abs(t);
t\_s = Math.copySign(1.0, t);
public static double code(double t_s, double t_m, double l, double k) {
double tmp;
if (k <= 2.6e-25) {
tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m)));
} else {
tmp = 2.0 / (Math.sin(k) * (Math.tan(k) * ((k * k) * (t_m / (l * l)))));
}
return t_s * tmp;
}
t\_m = math.fabs(t) t\_s = math.copysign(1.0, t) def code(t_s, t_m, l, k): tmp = 0 if k <= 2.6e-25: tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m))) else: tmp = 2.0 / (math.sin(k) * (math.tan(k) * ((k * k) * (t_m / (l * l))))) return t_s * tmp
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) tmp = 0.0 if (k <= 2.6e-25) tmp = Float64(Float64(l / Float64(t_m * k)) * Float64(l / Float64(k * Float64(t_m * t_m)))); else tmp = Float64(2.0 / Float64(sin(k) * Float64(tan(k) * Float64(Float64(k * k) * Float64(t_m / Float64(l * l)))))); end return Float64(t_s * tmp) end
t\_m = abs(t); t\_s = sign(t) * abs(1.0); function tmp_2 = code(t_s, t_m, l, k) tmp = 0.0; if (k <= 2.6e-25) tmp = (l / (t_m * k)) * (l / (k * (t_m * t_m))); else tmp = 2.0 / (sin(k) * (tan(k) * ((k * k) * (t_m / (l * l))))); end tmp_2 = t_s * tmp; end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * If[LessEqual[k, 2.6e-25], N[(N[(l / N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] * N[(l / N[(k * N[(t$95$m * t$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(2.0 / N[(N[Sin[k], $MachinePrecision] * N[(N[Tan[k], $MachinePrecision] * N[(N[(k * k), $MachinePrecision] * N[(t$95$m / N[(l * l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \begin{array}{l}
\mathbf{if}\;k \leq 2.6 \cdot 10^{-25}:\\
\;\;\;\;\frac{\ell}{t\_m \cdot k} \cdot \frac{\ell}{k \cdot \left(t\_m \cdot t\_m\right)}\\
\mathbf{else}:\\
\;\;\;\;\frac{2}{\sin k \cdot \left(\tan k \cdot \left(\left(k \cdot k\right) \cdot \frac{t\_m}{\ell \cdot \ell}\right)\right)}\\
\end{array}
\end{array}
if k < 2.6e-25Initial program 57.2%
Taylor expanded in k around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6454.8
Simplified54.8%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6467.7
Applied egg-rr67.7%
associate-*l/N/A
associate-*r*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f6472.3
Applied egg-rr72.3%
if 2.6e-25 < k Initial program 48.4%
*-commutativeN/A
associate-*l*N/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr34.1%
Taylor expanded in k around inf
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
associate-*r/N/A
*-commutativeN/A
associate-/l*N/A
accelerator-lowering-fma.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6450.0
Simplified50.0%
Taylor expanded in t around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6467.5
Simplified67.5%
Final simplification70.9%
t\_m = (fabs.f64 t) t\_s = (copysign.f64 #s(literal 1 binary64) t) (FPCore (t_s t_m l k) :precision binary64 (* t_s (* (/ l (* t_m k)) (/ l (* k (* t_m t_m))))))
t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
return t_s * ((l / (t_m * k)) * (l / (k * (t_m * t_m))));
}
t\_m = abs(t)
t\_s = copysign(1.0d0, t)
real(8) function code(t_s, t_m, l, k)
real(8), intent (in) :: t_s
real(8), intent (in) :: t_m
real(8), intent (in) :: l
real(8), intent (in) :: k
code = t_s * ((l / (t_m * k)) * (l / (k * (t_m * t_m))))
end function
t\_m = Math.abs(t);
t\_s = Math.copySign(1.0, t);
public static double code(double t_s, double t_m, double l, double k) {
return t_s * ((l / (t_m * k)) * (l / (k * (t_m * t_m))));
}
t\_m = math.fabs(t) t\_s = math.copysign(1.0, t) def code(t_s, t_m, l, k): return t_s * ((l / (t_m * k)) * (l / (k * (t_m * t_m))))
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) return Float64(t_s * Float64(Float64(l / Float64(t_m * k)) * Float64(l / Float64(k * Float64(t_m * t_m))))) end
t\_m = abs(t); t\_s = sign(t) * abs(1.0); function tmp = code(t_s, t_m, l, k) tmp = t_s * ((l / (t_m * k)) * (l / (k * (t_m * t_m)))); end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * N[(N[(l / N[(t$95$m * k), $MachinePrecision]), $MachinePrecision] * N[(l / N[(k * N[(t$95$m * t$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \left(\frac{\ell}{t\_m \cdot k} \cdot \frac{\ell}{k \cdot \left(t\_m \cdot t\_m\right)}\right)
\end{array}
Initial program 54.6%
Taylor expanded in k around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6452.2
Simplified52.2%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6461.9
Applied egg-rr61.9%
associate-*l/N/A
associate-*r*N/A
times-fracN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f6465.1
Applied egg-rr65.1%
Final simplification65.1%
t\_m = (fabs.f64 t) t\_s = (copysign.f64 #s(literal 1 binary64) t) (FPCore (t_s t_m l k) :precision binary64 (* t_s (* l (/ l (* k (* t_m (* t_m (* t_m k))))))))
t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
return t_s * (l * (l / (k * (t_m * (t_m * (t_m * k))))));
}
t\_m = abs(t)
t\_s = copysign(1.0d0, t)
real(8) function code(t_s, t_m, l, k)
real(8), intent (in) :: t_s
real(8), intent (in) :: t_m
real(8), intent (in) :: l
real(8), intent (in) :: k
code = t_s * (l * (l / (k * (t_m * (t_m * (t_m * k))))))
end function
t\_m = Math.abs(t);
t\_s = Math.copySign(1.0, t);
public static double code(double t_s, double t_m, double l, double k) {
return t_s * (l * (l / (k * (t_m * (t_m * (t_m * k))))));
}
t\_m = math.fabs(t) t\_s = math.copysign(1.0, t) def code(t_s, t_m, l, k): return t_s * (l * (l / (k * (t_m * (t_m * (t_m * k))))))
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) return Float64(t_s * Float64(l * Float64(l / Float64(k * Float64(t_m * Float64(t_m * Float64(t_m * k))))))) end
t\_m = abs(t); t\_s = sign(t) * abs(1.0); function tmp = code(t_s, t_m, l, k) tmp = t_s * (l * (l / (k * (t_m * (t_m * (t_m * k)))))); end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * N[(l * N[(l / N[(k * N[(t$95$m * N[(t$95$m * N[(t$95$m * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \left(\ell \cdot \frac{\ell}{k \cdot \left(t\_m \cdot \left(t\_m \cdot \left(t\_m \cdot k\right)\right)\right)}\right)
\end{array}
Initial program 54.6%
Taylor expanded in k around 0
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6452.2
Simplified52.2%
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6461.9
Applied egg-rr61.9%
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f6462.7
Applied egg-rr62.7%
Final simplification62.7%
t\_m = (fabs.f64 t) t\_s = (copysign.f64 #s(literal 1 binary64) t) (FPCore (t_s t_m l k) :precision binary64 (* t_s (* l (/ l (* (* t_m (* t_m t_m)) -6.0)))))
t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
return t_s * (l * (l / ((t_m * (t_m * t_m)) * -6.0)));
}
t\_m = abs(t)
t\_s = copysign(1.0d0, t)
real(8) function code(t_s, t_m, l, k)
real(8), intent (in) :: t_s
real(8), intent (in) :: t_m
real(8), intent (in) :: l
real(8), intent (in) :: k
code = t_s * (l * (l / ((t_m * (t_m * t_m)) * (-6.0d0))))
end function
t\_m = Math.abs(t);
t\_s = Math.copySign(1.0, t);
public static double code(double t_s, double t_m, double l, double k) {
return t_s * (l * (l / ((t_m * (t_m * t_m)) * -6.0)));
}
t\_m = math.fabs(t) t\_s = math.copysign(1.0, t) def code(t_s, t_m, l, k): return t_s * (l * (l / ((t_m * (t_m * t_m)) * -6.0)))
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) return Float64(t_s * Float64(l * Float64(l / Float64(Float64(t_m * Float64(t_m * t_m)) * -6.0)))) end
t\_m = abs(t); t\_s = sign(t) * abs(1.0); function tmp = code(t_s, t_m, l, k) tmp = t_s * (l * (l / ((t_m * (t_m * t_m)) * -6.0))); end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * N[(l * N[(l / N[(N[(t$95$m * N[(t$95$m * t$95$m), $MachinePrecision]), $MachinePrecision] * -6.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \left(\ell \cdot \frac{\ell}{\left(t\_m \cdot \left(t\_m \cdot t\_m\right)\right) \cdot -6}\right)
\end{array}
Initial program 54.6%
Taylor expanded in t around inf
associate-/l*N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
cos-lowering-cos.f64N/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
sin-lowering-sin.f6450.4
Simplified50.4%
Taylor expanded in k around 0
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6426.2
Simplified26.2%
Taylor expanded in k around inf
/-lowering-/.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6428.6
Simplified28.6%
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
div-invN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
metadata-eval29.8
Applied egg-rr29.8%
Final simplification29.8%
t\_m = (fabs.f64 t) t\_s = (copysign.f64 #s(literal 1 binary64) t) (FPCore (t_s t_m l k) :precision binary64 (* t_s (* (* l l) (/ -0.16666666666666666 (* t_m (* t_m t_m))))))
t\_m = fabs(t);
t\_s = copysign(1.0, t);
double code(double t_s, double t_m, double l, double k) {
return t_s * ((l * l) * (-0.16666666666666666 / (t_m * (t_m * t_m))));
}
t\_m = abs(t)
t\_s = copysign(1.0d0, t)
real(8) function code(t_s, t_m, l, k)
real(8), intent (in) :: t_s
real(8), intent (in) :: t_m
real(8), intent (in) :: l
real(8), intent (in) :: k
code = t_s * ((l * l) * ((-0.16666666666666666d0) / (t_m * (t_m * t_m))))
end function
t\_m = Math.abs(t);
t\_s = Math.copySign(1.0, t);
public static double code(double t_s, double t_m, double l, double k) {
return t_s * ((l * l) * (-0.16666666666666666 / (t_m * (t_m * t_m))));
}
t\_m = math.fabs(t) t\_s = math.copysign(1.0, t) def code(t_s, t_m, l, k): return t_s * ((l * l) * (-0.16666666666666666 / (t_m * (t_m * t_m))))
t\_m = abs(t) t\_s = copysign(1.0, t) function code(t_s, t_m, l, k) return Float64(t_s * Float64(Float64(l * l) * Float64(-0.16666666666666666 / Float64(t_m * Float64(t_m * t_m))))) end
t\_m = abs(t); t\_s = sign(t) * abs(1.0); function tmp = code(t_s, t_m, l, k) tmp = t_s * ((l * l) * (-0.16666666666666666 / (t_m * (t_m * t_m)))); end
t\_m = N[Abs[t], $MachinePrecision]
t\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[t]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[t$95$s_, t$95$m_, l_, k_] := N[(t$95$s * N[(N[(l * l), $MachinePrecision] * N[(-0.16666666666666666 / N[(t$95$m * N[(t$95$m * t$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
t\_m = \left|t\right|
\\
t\_s = \mathsf{copysign}\left(1, t\right)
\\
t\_s \cdot \left(\left(\ell \cdot \ell\right) \cdot \frac{-0.16666666666666666}{t\_m \cdot \left(t\_m \cdot t\_m\right)}\right)
\end{array}
Initial program 54.6%
Taylor expanded in t around inf
associate-/l*N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
cos-lowering-cos.f64N/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
pow-lowering-pow.f64N/A
sin-lowering-sin.f6450.4
Simplified50.4%
Taylor expanded in k around 0
/-lowering-/.f64N/A
accelerator-lowering-fma.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6426.2
Simplified26.2%
Taylor expanded in k around inf
/-lowering-/.f64N/A
cube-multN/A
unpow2N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f6428.6
Simplified28.6%
herbie shell --seed 2024198
(FPCore (t l k)
:name "Toniolo and Linder, Equation (10+)"
:precision binary64
(/ 2.0 (* (* (* (/ (pow t 3.0) (* l l)) (sin k)) (tan k)) (+ (+ 1.0 (pow (/ k t) 2.0)) 1.0))))