(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))))
(FPCore (t l k)
:precision binary64
(let* ((t_1 (/ (cos k) t))
(t_2 (* l t_1))
(t_3 (/ (* t_1 2.0) (sin k)))
(t_4 (pow (sin k) 2.0)))
(if (<= k -4.4355977450628285e+138)
(* (/ (/ 1.0 (* (/ k l) (/ k l))) (sin k)) t_3)
(if (<= k -9.950957702371115e-5)
(* 2.0 (* (* (/ l (* k k)) (/ l t)) (/ (cos k) t_4)))
(if (<= k 1.0932265067334292e-92)
(* t_3 (* (/ l k) (/ (/ l k) (sin k))))
(if (<= k 7.988200189249557e+105)
(/ (* 2.0 (/ t_2 (/ (* k k) l))) t_4)
(if (<= k 2.0585063427582685e+208)
(/ (* 2.0 (/ 1.0 (/ t (* (cos k) (pow (/ l k) 2.0))))) t_4)
(/ (* 2.0 (/ (* (/ l k) t_2) k)) t_4))))))))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));
}
double code(double t, double l, double k) {
double t_1 = cos(k) / t;
double t_2 = l * t_1;
double t_3 = (t_1 * 2.0) / sin(k);
double t_4 = pow(sin(k), 2.0);
double tmp;
if (k <= -4.4355977450628285e+138) {
tmp = ((1.0 / ((k / l) * (k / l))) / sin(k)) * t_3;
} else if (k <= -9.950957702371115e-5) {
tmp = 2.0 * (((l / (k * k)) * (l / t)) * (cos(k) / t_4));
} else if (k <= 1.0932265067334292e-92) {
tmp = t_3 * ((l / k) * ((l / k) / sin(k)));
} else if (k <= 7.988200189249557e+105) {
tmp = (2.0 * (t_2 / ((k * k) / l))) / t_4;
} else if (k <= 2.0585063427582685e+208) {
tmp = (2.0 * (1.0 / (t / (cos(k) * pow((l / k), 2.0))))) / t_4;
} else {
tmp = (2.0 * (((l / k) * t_2) / k)) / t_4;
}
return tmp;
}
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
real(8) function code(t, l, k)
real(8), intent (in) :: t
real(8), intent (in) :: l
real(8), intent (in) :: k
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: tmp
t_1 = cos(k) / t
t_2 = l * t_1
t_3 = (t_1 * 2.0d0) / sin(k)
t_4 = sin(k) ** 2.0d0
if (k <= (-4.4355977450628285d+138)) then
tmp = ((1.0d0 / ((k / l) * (k / l))) / sin(k)) * t_3
else if (k <= (-9.950957702371115d-5)) then
tmp = 2.0d0 * (((l / (k * k)) * (l / t)) * (cos(k) / t_4))
else if (k <= 1.0932265067334292d-92) then
tmp = t_3 * ((l / k) * ((l / k) / sin(k)))
else if (k <= 7.988200189249557d+105) then
tmp = (2.0d0 * (t_2 / ((k * k) / l))) / t_4
else if (k <= 2.0585063427582685d+208) then
tmp = (2.0d0 * (1.0d0 / (t / (cos(k) * ((l / k) ** 2.0d0))))) / t_4
else
tmp = (2.0d0 * (((l / k) * t_2) / k)) / t_4
end if
code = tmp
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));
}
public static double code(double t, double l, double k) {
double t_1 = Math.cos(k) / t;
double t_2 = l * t_1;
double t_3 = (t_1 * 2.0) / Math.sin(k);
double t_4 = Math.pow(Math.sin(k), 2.0);
double tmp;
if (k <= -4.4355977450628285e+138) {
tmp = ((1.0 / ((k / l) * (k / l))) / Math.sin(k)) * t_3;
} else if (k <= -9.950957702371115e-5) {
tmp = 2.0 * (((l / (k * k)) * (l / t)) * (Math.cos(k) / t_4));
} else if (k <= 1.0932265067334292e-92) {
tmp = t_3 * ((l / k) * ((l / k) / Math.sin(k)));
} else if (k <= 7.988200189249557e+105) {
tmp = (2.0 * (t_2 / ((k * k) / l))) / t_4;
} else if (k <= 2.0585063427582685e+208) {
tmp = (2.0 * (1.0 / (t / (Math.cos(k) * Math.pow((l / k), 2.0))))) / t_4;
} else {
tmp = (2.0 * (((l / k) * t_2) / k)) / t_4;
}
return tmp;
}
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))
def code(t, l, k): t_1 = math.cos(k) / t t_2 = l * t_1 t_3 = (t_1 * 2.0) / math.sin(k) t_4 = math.pow(math.sin(k), 2.0) tmp = 0 if k <= -4.4355977450628285e+138: tmp = ((1.0 / ((k / l) * (k / l))) / math.sin(k)) * t_3 elif k <= -9.950957702371115e-5: tmp = 2.0 * (((l / (k * k)) * (l / t)) * (math.cos(k) / t_4)) elif k <= 1.0932265067334292e-92: tmp = t_3 * ((l / k) * ((l / k) / math.sin(k))) elif k <= 7.988200189249557e+105: tmp = (2.0 * (t_2 / ((k * k) / l))) / t_4 elif k <= 2.0585063427582685e+208: tmp = (2.0 * (1.0 / (t / (math.cos(k) * math.pow((l / k), 2.0))))) / t_4 else: tmp = (2.0 * (((l / k) * t_2) / k)) / t_4 return tmp
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 code(t, l, k) t_1 = Float64(cos(k) / t) t_2 = Float64(l * t_1) t_3 = Float64(Float64(t_1 * 2.0) / sin(k)) t_4 = sin(k) ^ 2.0 tmp = 0.0 if (k <= -4.4355977450628285e+138) tmp = Float64(Float64(Float64(1.0 / Float64(Float64(k / l) * Float64(k / l))) / sin(k)) * t_3); elseif (k <= -9.950957702371115e-5) tmp = Float64(2.0 * Float64(Float64(Float64(l / Float64(k * k)) * Float64(l / t)) * Float64(cos(k) / t_4))); elseif (k <= 1.0932265067334292e-92) tmp = Float64(t_3 * Float64(Float64(l / k) * Float64(Float64(l / k) / sin(k)))); elseif (k <= 7.988200189249557e+105) tmp = Float64(Float64(2.0 * Float64(t_2 / Float64(Float64(k * k) / l))) / t_4); elseif (k <= 2.0585063427582685e+208) tmp = Float64(Float64(2.0 * Float64(1.0 / Float64(t / Float64(cos(k) * (Float64(l / k) ^ 2.0))))) / t_4); else tmp = Float64(Float64(2.0 * Float64(Float64(Float64(l / k) * t_2) / k)) / t_4); end return tmp 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
function tmp_2 = code(t, l, k) t_1 = cos(k) / t; t_2 = l * t_1; t_3 = (t_1 * 2.0) / sin(k); t_4 = sin(k) ^ 2.0; tmp = 0.0; if (k <= -4.4355977450628285e+138) tmp = ((1.0 / ((k / l) * (k / l))) / sin(k)) * t_3; elseif (k <= -9.950957702371115e-5) tmp = 2.0 * (((l / (k * k)) * (l / t)) * (cos(k) / t_4)); elseif (k <= 1.0932265067334292e-92) tmp = t_3 * ((l / k) * ((l / k) / sin(k))); elseif (k <= 7.988200189249557e+105) tmp = (2.0 * (t_2 / ((k * k) / l))) / t_4; elseif (k <= 2.0585063427582685e+208) tmp = (2.0 * (1.0 / (t / (cos(k) * ((l / k) ^ 2.0))))) / t_4; else tmp = (2.0 * (((l / k) * t_2) / k)) / t_4; end tmp_2 = tmp; 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]
code[t_, l_, k_] := Block[{t$95$1 = N[(N[Cos[k], $MachinePrecision] / t), $MachinePrecision]}, Block[{t$95$2 = N[(l * t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(N[(t$95$1 * 2.0), $MachinePrecision] / N[Sin[k], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[Power[N[Sin[k], $MachinePrecision], 2.0], $MachinePrecision]}, If[LessEqual[k, -4.4355977450628285e+138], N[(N[(N[(1.0 / N[(N[(k / l), $MachinePrecision] * N[(k / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Sin[k], $MachinePrecision]), $MachinePrecision] * t$95$3), $MachinePrecision], If[LessEqual[k, -9.950957702371115e-5], N[(2.0 * N[(N[(N[(l / N[(k * k), $MachinePrecision]), $MachinePrecision] * N[(l / t), $MachinePrecision]), $MachinePrecision] * N[(N[Cos[k], $MachinePrecision] / t$95$4), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[k, 1.0932265067334292e-92], N[(t$95$3 * N[(N[(l / k), $MachinePrecision] * N[(N[(l / k), $MachinePrecision] / N[Sin[k], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[k, 7.988200189249557e+105], N[(N[(2.0 * N[(t$95$2 / N[(N[(k * k), $MachinePrecision] / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$4), $MachinePrecision], If[LessEqual[k, 2.0585063427582685e+208], N[(N[(2.0 * N[(1.0 / N[(t / N[(N[Cos[k], $MachinePrecision] * N[Power[N[(l / k), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$4), $MachinePrecision], N[(N[(2.0 * N[(N[(N[(l / k), $MachinePrecision] * t$95$2), $MachinePrecision] / k), $MachinePrecision]), $MachinePrecision] / t$95$4), $MachinePrecision]]]]]]]]]]
\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)}
\begin{array}{l}
t_1 := \frac{\cos k}{t}\\
t_2 := \ell \cdot t_1\\
t_3 := \frac{t_1 \cdot 2}{\sin k}\\
t_4 := {\sin k}^{2}\\
\mathbf{if}\;k \leq -4.4355977450628285 \cdot 10^{+138}:\\
\;\;\;\;\frac{\frac{1}{\frac{k}{\ell} \cdot \frac{k}{\ell}}}{\sin k} \cdot t_3\\
\mathbf{elif}\;k \leq -9.950957702371115 \cdot 10^{-5}:\\
\;\;\;\;2 \cdot \left(\left(\frac{\ell}{k \cdot k} \cdot \frac{\ell}{t}\right) \cdot \frac{\cos k}{t_4}\right)\\
\mathbf{elif}\;k \leq 1.0932265067334292 \cdot 10^{-92}:\\
\;\;\;\;t_3 \cdot \left(\frac{\ell}{k} \cdot \frac{\frac{\ell}{k}}{\sin k}\right)\\
\mathbf{elif}\;k \leq 7.988200189249557 \cdot 10^{+105}:\\
\;\;\;\;\frac{2 \cdot \frac{t_2}{\frac{k \cdot k}{\ell}}}{t_4}\\
\mathbf{elif}\;k \leq 2.0585063427582685 \cdot 10^{+208}:\\
\;\;\;\;\frac{2 \cdot \frac{1}{\frac{t}{\cos k \cdot {\left(\frac{\ell}{k}\right)}^{2}}}}{t_4}\\
\mathbf{else}:\\
\;\;\;\;\frac{2 \cdot \frac{\frac{\ell}{k} \cdot t_2}{k}}{t_4}\\
\end{array}



Bits error versus t



Bits error versus l



Bits error versus k
Results
if k < -4.4355977450628285e138Initial program 39.4
Simplified33.5
Taylor expanded in t around 0 23.0
Simplified18.5
Taylor expanded in k around inf 23.0
Simplified20.0
Applied egg-rr3.5
Applied egg-rr3.6
if -4.4355977450628285e138 < k < -9.95095770237111463e-5Initial program 51.0
Simplified39.6
Taylor expanded in t around 0 13.3
Simplified13.3
Taylor expanded in k around inf 13.3
Simplified8.7
Applied egg-rr8.8
Taylor expanded in l around 0 13.3
Simplified2.4
if -9.95095770237111463e-5 < k < 1.0932265067334292e-92Initial program 62.4
Simplified58.4
Taylor expanded in t around 0 40.4
Simplified40.8
Taylor expanded in k around inf 40.4
Simplified25.0
Applied egg-rr12.4
Applied egg-rr9.9
if 1.0932265067334292e-92 < k < 7.98820018924955744e105Initial program 53.9
Simplified42.2
Taylor expanded in t around 0 16.6
Simplified16.7
Taylor expanded in k around inf 16.6
Simplified12.1
Applied egg-rr3.6
if 7.98820018924955744e105 < k < 2.05850634275826847e208Initial program 44.9
Simplified34.7
Taylor expanded in t around 0 20.9
Simplified15.8
Taylor expanded in k around inf 20.9
Simplified15.5
Applied egg-rr4.9
if 2.05850634275826847e208 < k Initial program 35.4
Simplified32.1
Taylor expanded in t around 0 22.8
Simplified19.6
Taylor expanded in k around inf 22.8
Simplified20.5
Applied egg-rr7.3
Final simplification5.2
herbie shell --seed 2022150
(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))))