Average Error: 32.9 → 5.6
Time: 21.0s
Precision: binary64
Cost: 20872
\[\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{2}{\frac{\left(\frac{t}{\ell} \cdot \left(t \cdot \sin k\right)\right) \cdot \left(\tan k \cdot \left(2 + {\left(\frac{k}{t}\right)}^{2}\right)\right)}{\frac{\ell}{t}}}\\ \mathbf{if}\;t \leq -1 \cdot 10^{+35}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq 2 \cdot 10^{-54}:\\ \;\;\;\;\left(2 \cdot \frac{\frac{\ell}{k}}{t \cdot k}\right) \cdot \frac{\frac{\ell}{\sin k}}{\tan k}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
(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
         (/
          2.0
          (/
           (* (* (/ t l) (* t (sin k))) (* (tan k) (+ 2.0 (pow (/ k t) 2.0))))
           (/ l t)))))
   (if (<= t -1e+35)
     t_1
     (if (<= t 2e-54)
       (* (* 2.0 (/ (/ l k) (* t k))) (/ (/ l (sin k)) (tan k)))
       t_1))))
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 = 2.0 / ((((t / l) * (t * sin(k))) * (tan(k) * (2.0 + pow((k / t), 2.0)))) / (l / t));
	double tmp;
	if (t <= -1e+35) {
		tmp = t_1;
	} else if (t <= 2e-54) {
		tmp = (2.0 * ((l / k) / (t * k))) * ((l / sin(k)) / tan(k));
	} else {
		tmp = t_1;
	}
	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) :: tmp
    t_1 = 2.0d0 / ((((t / l) * (t * sin(k))) * (tan(k) * (2.0d0 + ((k / t) ** 2.0d0)))) / (l / t))
    if (t <= (-1d+35)) then
        tmp = t_1
    else if (t <= 2d-54) then
        tmp = (2.0d0 * ((l / k) / (t * k))) * ((l / sin(k)) / tan(k))
    else
        tmp = t_1
    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 = 2.0 / ((((t / l) * (t * Math.sin(k))) * (Math.tan(k) * (2.0 + Math.pow((k / t), 2.0)))) / (l / t));
	double tmp;
	if (t <= -1e+35) {
		tmp = t_1;
	} else if (t <= 2e-54) {
		tmp = (2.0 * ((l / k) / (t * k))) * ((l / Math.sin(k)) / Math.tan(k));
	} else {
		tmp = t_1;
	}
	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 = 2.0 / ((((t / l) * (t * math.sin(k))) * (math.tan(k) * (2.0 + math.pow((k / t), 2.0)))) / (l / t))
	tmp = 0
	if t <= -1e+35:
		tmp = t_1
	elif t <= 2e-54:
		tmp = (2.0 * ((l / k) / (t * k))) * ((l / math.sin(k)) / math.tan(k))
	else:
		tmp = t_1
	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(2.0 / Float64(Float64(Float64(Float64(t / l) * Float64(t * sin(k))) * Float64(tan(k) * Float64(2.0 + (Float64(k / t) ^ 2.0)))) / Float64(l / t)))
	tmp = 0.0
	if (t <= -1e+35)
		tmp = t_1;
	elseif (t <= 2e-54)
		tmp = Float64(Float64(2.0 * Float64(Float64(l / k) / Float64(t * k))) * Float64(Float64(l / sin(k)) / tan(k)));
	else
		tmp = t_1;
	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 = 2.0 / ((((t / l) * (t * sin(k))) * (tan(k) * (2.0 + ((k / t) ^ 2.0)))) / (l / t));
	tmp = 0.0;
	if (t <= -1e+35)
		tmp = t_1;
	elseif (t <= 2e-54)
		tmp = (2.0 * ((l / k) / (t * k))) * ((l / sin(k)) / tan(k));
	else
		tmp = t_1;
	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[(2.0 / N[(N[(N[(N[(t / l), $MachinePrecision] * N[(t * N[Sin[k], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[Tan[k], $MachinePrecision] * N[(2.0 + N[Power[N[(k / t), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(l / t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t, -1e+35], t$95$1, If[LessEqual[t, 2e-54], N[(N[(2.0 * N[(N[(l / k), $MachinePrecision] / N[(t * k), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(l / N[Sin[k], $MachinePrecision]), $MachinePrecision] / N[Tan[k], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]
\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{2}{\frac{\left(\frac{t}{\ell} \cdot \left(t \cdot \sin k\right)\right) \cdot \left(\tan k \cdot \left(2 + {\left(\frac{k}{t}\right)}^{2}\right)\right)}{\frac{\ell}{t}}}\\
\mathbf{if}\;t \leq -1 \cdot 10^{+35}:\\
\;\;\;\;t_1\\

\mathbf{elif}\;t \leq 2 \cdot 10^{-54}:\\
\;\;\;\;\left(2 \cdot \frac{\frac{\ell}{k}}{t \cdot k}\right) \cdot \frac{\frac{\ell}{\sin k}}{\tan k}\\

\mathbf{else}:\\
\;\;\;\;t_1\\


\end{array}

Error

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if t < -9.9999999999999997e34 or 2.0000000000000001e-54 < t

    1. Initial program 22.4

      \[\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)} \]
    2. Applied egg-rr16.3

      \[\leadsto \frac{2}{\left(\left(\color{blue}{\left(\frac{t \cdot t}{\ell} \cdot \frac{t}{\ell}\right)} \cdot \sin k\right) \cdot \tan k\right) \cdot \left(\left(1 + {\left(\frac{k}{t}\right)}^{2}\right) + 1\right)} \]
    3. Applied egg-rr6.4

      \[\leadsto \frac{2}{\left(\color{blue}{\frac{t \cdot \left(\frac{t}{\ell} \cdot \sin k\right)}{\frac{\ell}{t}}} \cdot \tan k\right) \cdot \left(\left(1 + {\left(\frac{k}{t}\right)}^{2}\right) + 1\right)} \]
    4. Applied egg-rr3.6

      \[\leadsto \frac{2}{\color{blue}{\frac{\left(\frac{t}{\ell} \cdot \left(t \cdot \sin k\right)\right) \cdot \left(\tan k \cdot \left(2 + {\left(\frac{k}{t}\right)}^{2}\right)\right)}{\frac{\ell}{t}}}} \]

    if -9.9999999999999997e34 < t < 2.0000000000000001e-54

    1. Initial program 50.5

      \[\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)} \]
    2. Simplified46.1

      \[\leadsto \color{blue}{\frac{\frac{2}{\frac{{t}^{3}}{\ell}}}{2 + {\left(\frac{k}{t}\right)}^{2}} \cdot \frac{\frac{\ell}{\sin k}}{\tan k}} \]
      Proof
      (*.f64 (/.f64 (/.f64 2 (/.f64 (pow.f64 t 3) l)) (+.f64 2 (pow.f64 (/.f64 k t) 2))) (/.f64 (/.f64 l (sin.f64 k)) (tan.f64 k))): 0 points increase in error, 0 points decrease in error
      (*.f64 (/.f64 (/.f64 2 (/.f64 (pow.f64 t 3) l)) (+.f64 (Rewrite<= metadata-eval (+.f64 1 1)) (pow.f64 (/.f64 k t) 2))) (/.f64 (/.f64 l (sin.f64 k)) (tan.f64 k))): 0 points increase in error, 0 points decrease in error
      (*.f64 (/.f64 (/.f64 2 (/.f64 (pow.f64 t 3) l)) (Rewrite<= associate-+r+_binary64 (+.f64 1 (+.f64 1 (pow.f64 (/.f64 k t) 2))))) (/.f64 (/.f64 l (sin.f64 k)) (tan.f64 k))): 0 points increase in error, 0 points decrease in error
      (*.f64 (/.f64 (/.f64 2 (/.f64 (pow.f64 t 3) l)) (Rewrite<= +-commutative_binary64 (+.f64 (+.f64 1 (pow.f64 (/.f64 k t) 2)) 1))) (/.f64 (/.f64 l (sin.f64 k)) (tan.f64 k))): 0 points increase in error, 0 points decrease in error
      (*.f64 (/.f64 (/.f64 2 (/.f64 (pow.f64 t 3) l)) (+.f64 (+.f64 1 (pow.f64 (/.f64 k t) 2)) 1)) (Rewrite<= associate-/r*_binary64 (/.f64 l (*.f64 (sin.f64 k) (tan.f64 k))))): 19 points increase in error, 6 points decrease in error
      (Rewrite<= times-frac_binary64 (/.f64 (*.f64 (/.f64 2 (/.f64 (pow.f64 t 3) l)) l) (*.f64 (+.f64 (+.f64 1 (pow.f64 (/.f64 k t) 2)) 1) (*.f64 (sin.f64 k) (tan.f64 k))))): 17 points increase in error, 17 points decrease in error
      (/.f64 (Rewrite<= associate-/r/_binary64 (/.f64 2 (/.f64 (/.f64 (pow.f64 t 3) l) l))) (*.f64 (+.f64 (+.f64 1 (pow.f64 (/.f64 k t) 2)) 1) (*.f64 (sin.f64 k) (tan.f64 k)))): 3 points increase in error, 1 points decrease in error
      (/.f64 (/.f64 2 (Rewrite<= associate-/r*_binary64 (/.f64 (pow.f64 t 3) (*.f64 l l)))) (*.f64 (+.f64 (+.f64 1 (pow.f64 (/.f64 k t) 2)) 1) (*.f64 (sin.f64 k) (tan.f64 k)))): 37 points increase in error, 2 points decrease in error
      (Rewrite<= associate-/l/_binary64 (/.f64 (/.f64 (/.f64 2 (/.f64 (pow.f64 t 3) (*.f64 l l))) (*.f64 (sin.f64 k) (tan.f64 k))) (+.f64 (+.f64 1 (pow.f64 (/.f64 k t) 2)) 1))): 2 points increase in error, 1 points decrease in error
      (/.f64 (Rewrite<= associate-/r*_binary64 (/.f64 2 (*.f64 (/.f64 (pow.f64 t 3) (*.f64 l l)) (*.f64 (sin.f64 k) (tan.f64 k))))) (+.f64 (+.f64 1 (pow.f64 (/.f64 k t) 2)) 1)): 4 points increase in error, 1 points decrease in error
      (/.f64 (/.f64 2 (Rewrite<= associate-*l*_binary64 (*.f64 (*.f64 (/.f64 (pow.f64 t 3) (*.f64 l l)) (sin.f64 k)) (tan.f64 k)))) (+.f64 (+.f64 1 (pow.f64 (/.f64 k t) 2)) 1)): 1 points increase in error, 29 points decrease in error
      (Rewrite<= associate-/r*_binary64 (/.f64 2 (*.f64 (*.f64 (*.f64 (/.f64 (pow.f64 t 3) (*.f64 l l)) (sin.f64 k)) (tan.f64 k)) (+.f64 (+.f64 1 (pow.f64 (/.f64 k t) 2)) 1)))): 0 points increase in error, 5 points decrease in error
    3. Applied egg-rr40.6

      \[\leadsto \frac{\frac{2}{\color{blue}{\frac{t \cdot t}{1} \cdot \frac{t}{\ell}}}}{2 + {\left(\frac{k}{t}\right)}^{2}} \cdot \frac{\frac{\ell}{\sin k}}{\tan k} \]
    4. Applied egg-rr39.0

      \[\leadsto \frac{\frac{2}{\color{blue}{\frac{\frac{t}{\ell} \cdot t}{\frac{1}{t}}}}}{2 + {\left(\frac{k}{t}\right)}^{2}} \cdot \frac{\frac{\ell}{\sin k}}{\tan k} \]
    5. Taylor expanded in t around 0 22.2

      \[\leadsto \color{blue}{\left(2 \cdot \frac{\ell}{{k}^{2} \cdot t}\right)} \cdot \frac{\frac{\ell}{\sin k}}{\tan k} \]
    6. Simplified9.0

      \[\leadsto \color{blue}{\left(2 \cdot \frac{\frac{\ell}{k}}{t \cdot k}\right)} \cdot \frac{\frac{\ell}{\sin k}}{\tan k} \]
      Proof
      (*.f64 2 (/.f64 (/.f64 l k) (*.f64 t k))): 0 points increase in error, 0 points decrease in error
      (*.f64 2 (Rewrite<= associate-/l/_binary64 (/.f64 (/.f64 (/.f64 l k) k) t))): 40 points increase in error, 32 points decrease in error
      (*.f64 2 (/.f64 (Rewrite<= associate-/r*_binary64 (/.f64 l (*.f64 k k))) t)): 32 points increase in error, 23 points decrease in error
      (*.f64 2 (/.f64 (/.f64 l (Rewrite<= unpow2_binary64 (pow.f64 k 2))) t)): 0 points increase in error, 0 points decrease in error
      (*.f64 2 (Rewrite<= associate-/r*_binary64 (/.f64 l (*.f64 (pow.f64 k 2) t)))): 20 points increase in error, 26 points decrease in error
  3. Recombined 2 regimes into one program.
  4. Final simplification5.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \leq -1 \cdot 10^{+35}:\\ \;\;\;\;\frac{2}{\frac{\left(\frac{t}{\ell} \cdot \left(t \cdot \sin k\right)\right) \cdot \left(\tan k \cdot \left(2 + {\left(\frac{k}{t}\right)}^{2}\right)\right)}{\frac{\ell}{t}}}\\ \mathbf{elif}\;t \leq 2 \cdot 10^{-54}:\\ \;\;\;\;\left(2 \cdot \frac{\frac{\ell}{k}}{t \cdot k}\right) \cdot \frac{\frac{\ell}{\sin k}}{\tan k}\\ \mathbf{else}:\\ \;\;\;\;\frac{2}{\frac{\left(\frac{t}{\ell} \cdot \left(t \cdot \sin k\right)\right) \cdot \left(\tan k \cdot \left(2 + {\left(\frac{k}{t}\right)}^{2}\right)\right)}{\frac{\ell}{t}}}\\ \end{array} \]

Alternatives

Alternative 1
Error21.6
Cost13896
\[\begin{array}{l} t_1 := \left(2 \cdot \frac{\ell}{t \cdot {k}^{2}}\right) \cdot \frac{\ell}{k \cdot k}\\ \mathbf{if}\;k \leq -3.484367623378485 \cdot 10^{+145}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;k \leq -5 \cdot 10^{-13}:\\ \;\;\;\;\frac{\frac{\frac{\ell}{\sin k}}{\tan k \cdot \left(t \cdot \frac{t}{\ell}\right)}}{t}\\ \mathbf{elif}\;k \leq 0.001:\\ \;\;\;\;\frac{2}{\frac{\left(\frac{t}{\ell} \cdot \left(t \cdot \sin k\right)\right) \cdot \left(2 \cdot k\right)}{\frac{\ell}{t}}}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 2
Error21.1
Cost7436
\[\begin{array}{l} t_1 := \frac{\frac{\ell}{t}}{\frac{{\left(t \cdot k\right)}^{2}}{\ell}}\\ \mathbf{if}\;t \leq -1.95 \cdot 10^{-78}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;t \leq 10^{-50}:\\ \;\;\;\;2 \cdot \left(\frac{\ell}{t} \cdot \frac{\ell}{{k}^{4}}\right)\\ \mathbf{elif}\;t \leq 3.5978261138507795 \cdot 10^{+89}:\\ \;\;\;\;\frac{\frac{\frac{\ell}{k} \cdot \frac{\ell}{k}}{t}}{t \cdot t}\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 3
Error35.6
Cost832
\[\frac{\frac{\ell \cdot \frac{\ell}{k \cdot k}}{t}}{t \cdot t} \]

Error

Reproduce

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