| Alternative 1 | |
|---|---|
| Error | 10.7 |
| Cost | 46280 |
(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 (/ l (sin k)))
(t_2 (/ (sin k) l))
(t_3 (pow (/ k t) 2.0))
(t_4
(/
2.0
(*
(+ 1.0 (+ t_3 1.0))
(* (tan k) (* (sin k) (* (/ (* t t) l) (/ t l))))))))
(if (<= t -4.292046717466389e+154)
(pow (/ (* (/ 1.0 (cbrt t_2)) (/ 1.0 (cbrt (/ (tan k) l)))) t) 3.0)
(if (<= t -3.6e+38)
t_4
(if (<= t -9.8e+27)
(/ (/ l (* (* t t) (/ k (/ l k)))) t)
(if (<= t -1e-30)
(/ (/ 2.0 (* k (/ t l))) (* k (* (tan k) t_2)))
(if (<= t -1e-60)
(/ (/ t_1 (* (+ 2.0 t_3) (* (/ (pow t 3.0) l) 0.5))) (tan k))
(if (<= t 1.0)
(* (* (/ l k) (/ 2.0 (* t k))) (/ t_1 (tan k)))
(if (<= t 1.0579812393352837e+108)
t_4
(/ (/ l t) (/ (pow (* t k) 2.0) l)))))))))))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 = l / sin(k);
double t_2 = sin(k) / l;
double t_3 = pow((k / t), 2.0);
double t_4 = 2.0 / ((1.0 + (t_3 + 1.0)) * (tan(k) * (sin(k) * (((t * t) / l) * (t / l)))));
double tmp;
if (t <= -4.292046717466389e+154) {
tmp = pow((((1.0 / cbrt(t_2)) * (1.0 / cbrt((tan(k) / l)))) / t), 3.0);
} else if (t <= -3.6e+38) {
tmp = t_4;
} else if (t <= -9.8e+27) {
tmp = (l / ((t * t) * (k / (l / k)))) / t;
} else if (t <= -1e-30) {
tmp = (2.0 / (k * (t / l))) / (k * (tan(k) * t_2));
} else if (t <= -1e-60) {
tmp = (t_1 / ((2.0 + t_3) * ((pow(t, 3.0) / l) * 0.5))) / tan(k);
} else if (t <= 1.0) {
tmp = ((l / k) * (2.0 / (t * k))) * (t_1 / tan(k));
} else if (t <= 1.0579812393352837e+108) {
tmp = t_4;
} else {
tmp = (l / t) / (pow((t * k), 2.0) / l);
}
return tmp;
}
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 = l / Math.sin(k);
double t_2 = Math.sin(k) / l;
double t_3 = Math.pow((k / t), 2.0);
double t_4 = 2.0 / ((1.0 + (t_3 + 1.0)) * (Math.tan(k) * (Math.sin(k) * (((t * t) / l) * (t / l)))));
double tmp;
if (t <= -4.292046717466389e+154) {
tmp = Math.pow((((1.0 / Math.cbrt(t_2)) * (1.0 / Math.cbrt((Math.tan(k) / l)))) / t), 3.0);
} else if (t <= -3.6e+38) {
tmp = t_4;
} else if (t <= -9.8e+27) {
tmp = (l / ((t * t) * (k / (l / k)))) / t;
} else if (t <= -1e-30) {
tmp = (2.0 / (k * (t / l))) / (k * (Math.tan(k) * t_2));
} else if (t <= -1e-60) {
tmp = (t_1 / ((2.0 + t_3) * ((Math.pow(t, 3.0) / l) * 0.5))) / Math.tan(k);
} else if (t <= 1.0) {
tmp = ((l / k) * (2.0 / (t * k))) * (t_1 / Math.tan(k));
} else if (t <= 1.0579812393352837e+108) {
tmp = t_4;
} else {
tmp = (l / t) / (Math.pow((t * k), 2.0) / l);
}
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(l / sin(k)) t_2 = Float64(sin(k) / l) t_3 = Float64(k / t) ^ 2.0 t_4 = Float64(2.0 / Float64(Float64(1.0 + Float64(t_3 + 1.0)) * Float64(tan(k) * Float64(sin(k) * Float64(Float64(Float64(t * t) / l) * Float64(t / l)))))) tmp = 0.0 if (t <= -4.292046717466389e+154) tmp = Float64(Float64(Float64(1.0 / cbrt(t_2)) * Float64(1.0 / cbrt(Float64(tan(k) / l)))) / t) ^ 3.0; elseif (t <= -3.6e+38) tmp = t_4; elseif (t <= -9.8e+27) tmp = Float64(Float64(l / Float64(Float64(t * t) * Float64(k / Float64(l / k)))) / t); elseif (t <= -1e-30) tmp = Float64(Float64(2.0 / Float64(k * Float64(t / l))) / Float64(k * Float64(tan(k) * t_2))); elseif (t <= -1e-60) tmp = Float64(Float64(t_1 / Float64(Float64(2.0 + t_3) * Float64(Float64((t ^ 3.0) / l) * 0.5))) / tan(k)); elseif (t <= 1.0) tmp = Float64(Float64(Float64(l / k) * Float64(2.0 / Float64(t * k))) * Float64(t_1 / tan(k))); elseif (t <= 1.0579812393352837e+108) tmp = t_4; else tmp = Float64(Float64(l / t) / Float64((Float64(t * k) ^ 2.0) / l)); end return 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[(l / N[Sin[k], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[Sin[k], $MachinePrecision] / l), $MachinePrecision]}, Block[{t$95$3 = N[Power[N[(k / t), $MachinePrecision], 2.0], $MachinePrecision]}, Block[{t$95$4 = N[(2.0 / N[(N[(1.0 + N[(t$95$3 + 1.0), $MachinePrecision]), $MachinePrecision] * N[(N[Tan[k], $MachinePrecision] * N[(N[Sin[k], $MachinePrecision] * N[(N[(N[(t * t), $MachinePrecision] / l), $MachinePrecision] * N[(t / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t, -4.292046717466389e+154], N[Power[N[(N[(N[(1.0 / N[Power[t$95$2, 1/3], $MachinePrecision]), $MachinePrecision] * N[(1.0 / N[Power[N[(N[Tan[k], $MachinePrecision] / l), $MachinePrecision], 1/3], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t), $MachinePrecision], 3.0], $MachinePrecision], If[LessEqual[t, -3.6e+38], t$95$4, If[LessEqual[t, -9.8e+27], N[(N[(l / N[(N[(t * t), $MachinePrecision] * N[(k / N[(l / k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t), $MachinePrecision], If[LessEqual[t, -1e-30], N[(N[(2.0 / N[(k * N[(t / l), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(k * N[(N[Tan[k], $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t, -1e-60], N[(N[(t$95$1 / N[(N[(2.0 + t$95$3), $MachinePrecision] * N[(N[(N[Power[t, 3.0], $MachinePrecision] / l), $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Tan[k], $MachinePrecision]), $MachinePrecision], If[LessEqual[t, 1.0], N[(N[(N[(l / k), $MachinePrecision] * N[(2.0 / N[(t * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(t$95$1 / N[Tan[k], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t, 1.0579812393352837e+108], t$95$4, N[(N[(l / t), $MachinePrecision] / N[(N[Power[N[(t * k), $MachinePrecision], 2.0], $MachinePrecision] / l), $MachinePrecision]), $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{\ell}{\sin k}\\
t_2 := \frac{\sin k}{\ell}\\
t_3 := {\left(\frac{k}{t}\right)}^{2}\\
t_4 := \frac{2}{\left(1 + \left(t_3 + 1\right)\right) \cdot \left(\tan k \cdot \left(\sin k \cdot \left(\frac{t \cdot t}{\ell} \cdot \frac{t}{\ell}\right)\right)\right)}\\
\mathbf{if}\;t \leq -4.292046717466389 \cdot 10^{+154}:\\
\;\;\;\;{\left(\frac{\frac{1}{\sqrt[3]{t_2}} \cdot \frac{1}{\sqrt[3]{\frac{\tan k}{\ell}}}}{t}\right)}^{3}\\
\mathbf{elif}\;t \leq -3.6 \cdot 10^{+38}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;t \leq -9.8 \cdot 10^{+27}:\\
\;\;\;\;\frac{\frac{\ell}{\left(t \cdot t\right) \cdot \frac{k}{\frac{\ell}{k}}}}{t}\\
\mathbf{elif}\;t \leq -1 \cdot 10^{-30}:\\
\;\;\;\;\frac{\frac{2}{k \cdot \frac{t}{\ell}}}{k \cdot \left(\tan k \cdot t_2\right)}\\
\mathbf{elif}\;t \leq -1 \cdot 10^{-60}:\\
\;\;\;\;\frac{\frac{t_1}{\left(2 + t_3\right) \cdot \left(\frac{{t}^{3}}{\ell} \cdot 0.5\right)}}{\tan k}\\
\mathbf{elif}\;t \leq 1:\\
\;\;\;\;\left(\frac{\ell}{k} \cdot \frac{2}{t \cdot k}\right) \cdot \frac{t_1}{\tan k}\\
\mathbf{elif}\;t \leq 1.0579812393352837 \cdot 10^{+108}:\\
\;\;\;\;t_4\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\ell}{t}}{\frac{{\left(t \cdot k\right)}^{2}}{\ell}}\\
\end{array}
Results
if t < -4.29204671746638875e154Initial program 21.7
Simplified21.0
Taylor expanded in t around inf 21.0
Applied egg-rr28.6
Applied egg-rr22.5
Applied egg-rr8.4
if -4.29204671746638875e154 < t < -3.59999999999999969e38 or 1 < t < 1.057981239335284e108Initial program 22.8
Applied egg-rr13.1
if -3.59999999999999969e38 < t < -9.8000000000000003e27Initial program 14.8
Simplified14.3
Taylor expanded in k around 0 26.1
Simplified24.3
Applied egg-rr24.3
Applied egg-rr22.2
if -9.8000000000000003e27 < t < -1e-30Initial program 18.8
Simplified10.2
Applied egg-rr10.2
Taylor expanded in t around 0 28.7
Simplified28.7
Applied egg-rr22.2
if -1e-30 < t < -9.9999999999999997e-61Initial program 24.3
Simplified9.6
Applied egg-rr9.2
if -9.9999999999999997e-61 < t < 1Initial program 52.3
Simplified48.7
Applied egg-rr42.9
Taylor expanded in t around 0 21.2
Simplified19.3
Taylor expanded in l around 0 21.2
Simplified7.6
if 1.057981239335284e108 < t Initial program 23.2
Simplified23.1
Taylor expanded in k around 0 28.6
Simplified26.5
Applied egg-rr26.0
Applied egg-rr26.0
Applied egg-rr8.8
Final simplification10.0
| Alternative 1 | |
|---|---|
| Error | 10.7 |
| Cost | 46280 |
| Alternative 2 | |
|---|---|
| Error | 10.8 |
| Cost | 34072 |
| Alternative 3 | |
|---|---|
| Error | 10.0 |
| Cost | 32900 |
| Alternative 4 | |
|---|---|
| Error | 10.1 |
| Cost | 32772 |
| Alternative 5 | |
|---|---|
| Error | 9.5 |
| Cost | 27080 |
| Alternative 6 | |
|---|---|
| Error | 13.6 |
| Cost | 21268 |
| Alternative 7 | |
|---|---|
| Error | 9.6 |
| Cost | 21264 |
| Alternative 8 | |
|---|---|
| Error | 9.3 |
| Cost | 21136 |
| Alternative 9 | |
|---|---|
| Error | 17.5 |
| Cost | 14292 |
| Alternative 10 | |
|---|---|
| Error | 11.2 |
| Cost | 14288 |
| Alternative 11 | |
|---|---|
| Error | 11.3 |
| Cost | 14160 |
| Alternative 12 | |
|---|---|
| Error | 13.6 |
| Cost | 14024 |
| Alternative 13 | |
|---|---|
| Error | 19.2 |
| Cost | 7884 |
| Alternative 14 | |
|---|---|
| Error | 19.4 |
| Cost | 7756 |
| Alternative 15 | |
|---|---|
| Error | 20.7 |
| Cost | 7436 |
| Alternative 16 | |
|---|---|
| Error | 19.4 |
| Cost | 7436 |
| Alternative 17 | |
|---|---|
| Error | 19.4 |
| Cost | 7436 |
| Alternative 18 | |
|---|---|
| Error | 22.7 |
| Cost | 1224 |
| Alternative 19 | |
|---|---|
| Error | 28.8 |
| Cost | 1096 |
| Alternative 20 | |
|---|---|
| Error | 35.9 |
| Cost | 832 |
| Alternative 21 | |
|---|---|
| Error | 31.4 |
| Cost | 832 |
| Alternative 22 | |
|---|---|
| Error | 30.3 |
| Cost | 832 |
| Alternative 23 | |
|---|---|
| Error | 29.0 |
| Cost | 832 |
| Alternative 24 | |
|---|---|
| Error | 28.9 |
| Cost | 832 |

herbie shell --seed 2022298
(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))))