(FPCore (x l t) :precision binary64 (/ (* (sqrt 2.0) t) (sqrt (- (* (/ (+ x 1.0) (- x 1.0)) (+ (* l l) (* 2.0 (* t t)))) (* l l)))))
(FPCore (x l t)
:precision binary64
(let* ((t_1 (+ (/ 4.0 (* x x)) (+ 2.0 (* 4.0 (/ 1.0 x)))))
(t_2 (* (/ l x) (/ l x)))
(t_3 (* t (sqrt 2.0)))
(t_4 (/ (* l l) x))
(t_5
(fma 2.0 (* (/ t x) (/ t x)) (fma 2.0 (+ (* t t) (/ (* t t) x)) t_2)))
(t_6 (sqrt (/ (+ x 1.0) (+ x -1.0))))
(t_7 (fma 2.0 (* t t) (* l l)))
(t_8 (/ t_7 x)))
(if (<= t -2.4e+27)
(/ t_3 (* t_3 (- t_6)))
(if (<= t -5.6e-291)
(/ t_3 (sqrt (+ t_4 (- t_5 (- (/ l (/ (* x x) (- l))) t_8)))))
(if (<= t 1.2e-157)
(/
t_3
(fma
t
(sqrt t_1)
(*
0.5
(* (sqrt (/ 1.0 t_1)) (/ (fma 2.0 (/ l (/ x l)) (* 2.0 t_2)) t)))))
(if (<= t 2.7e+20)
(/ t_3 (sqrt (+ t_4 (+ t_5 (+ t_8 (/ t_7 (* x x)))))))
(/ t_3 (* t_3 t_6))))))))double code(double x, double l, double t) {
return (sqrt(2.0) * t) / sqrt(((((x + 1.0) / (x - 1.0)) * ((l * l) + (2.0 * (t * t)))) - (l * l)));
}
double code(double x, double l, double t) {
double t_1 = (4.0 / (x * x)) + (2.0 + (4.0 * (1.0 / x)));
double t_2 = (l / x) * (l / x);
double t_3 = t * sqrt(2.0);
double t_4 = (l * l) / x;
double t_5 = fma(2.0, ((t / x) * (t / x)), fma(2.0, ((t * t) + ((t * t) / x)), t_2));
double t_6 = sqrt(((x + 1.0) / (x + -1.0)));
double t_7 = fma(2.0, (t * t), (l * l));
double t_8 = t_7 / x;
double tmp;
if (t <= -2.4e+27) {
tmp = t_3 / (t_3 * -t_6);
} else if (t <= -5.6e-291) {
tmp = t_3 / sqrt((t_4 + (t_5 - ((l / ((x * x) / -l)) - t_8))));
} else if (t <= 1.2e-157) {
tmp = t_3 / fma(t, sqrt(t_1), (0.5 * (sqrt((1.0 / t_1)) * (fma(2.0, (l / (x / l)), (2.0 * t_2)) / t))));
} else if (t <= 2.7e+20) {
tmp = t_3 / sqrt((t_4 + (t_5 + (t_8 + (t_7 / (x * x))))));
} else {
tmp = t_3 / (t_3 * t_6);
}
return tmp;
}
function code(x, l, t) return Float64(Float64(sqrt(2.0) * t) / sqrt(Float64(Float64(Float64(Float64(x + 1.0) / Float64(x - 1.0)) * Float64(Float64(l * l) + Float64(2.0 * Float64(t * t)))) - Float64(l * l)))) end
function code(x, l, t) t_1 = Float64(Float64(4.0 / Float64(x * x)) + Float64(2.0 + Float64(4.0 * Float64(1.0 / x)))) t_2 = Float64(Float64(l / x) * Float64(l / x)) t_3 = Float64(t * sqrt(2.0)) t_4 = Float64(Float64(l * l) / x) t_5 = fma(2.0, Float64(Float64(t / x) * Float64(t / x)), fma(2.0, Float64(Float64(t * t) + Float64(Float64(t * t) / x)), t_2)) t_6 = sqrt(Float64(Float64(x + 1.0) / Float64(x + -1.0))) t_7 = fma(2.0, Float64(t * t), Float64(l * l)) t_8 = Float64(t_7 / x) tmp = 0.0 if (t <= -2.4e+27) tmp = Float64(t_3 / Float64(t_3 * Float64(-t_6))); elseif (t <= -5.6e-291) tmp = Float64(t_3 / sqrt(Float64(t_4 + Float64(t_5 - Float64(Float64(l / Float64(Float64(x * x) / Float64(-l))) - t_8))))); elseif (t <= 1.2e-157) tmp = Float64(t_3 / fma(t, sqrt(t_1), Float64(0.5 * Float64(sqrt(Float64(1.0 / t_1)) * Float64(fma(2.0, Float64(l / Float64(x / l)), Float64(2.0 * t_2)) / t))))); elseif (t <= 2.7e+20) tmp = Float64(t_3 / sqrt(Float64(t_4 + Float64(t_5 + Float64(t_8 + Float64(t_7 / Float64(x * x))))))); else tmp = Float64(t_3 / Float64(t_3 * t_6)); end return tmp end
code[x_, l_, t_] := N[(N[(N[Sqrt[2.0], $MachinePrecision] * t), $MachinePrecision] / N[Sqrt[N[(N[(N[(N[(x + 1.0), $MachinePrecision] / N[(x - 1.0), $MachinePrecision]), $MachinePrecision] * N[(N[(l * l), $MachinePrecision] + N[(2.0 * N[(t * t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(l * l), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
code[x_, l_, t_] := Block[{t$95$1 = N[(N[(4.0 / N[(x * x), $MachinePrecision]), $MachinePrecision] + N[(2.0 + N[(4.0 * N[(1.0 / x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(l / x), $MachinePrecision] * N[(l / x), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t * N[Sqrt[2.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(l * l), $MachinePrecision] / x), $MachinePrecision]}, Block[{t$95$5 = N[(2.0 * N[(N[(t / x), $MachinePrecision] * N[(t / x), $MachinePrecision]), $MachinePrecision] + N[(2.0 * N[(N[(t * t), $MachinePrecision] + N[(N[(t * t), $MachinePrecision] / x), $MachinePrecision]), $MachinePrecision] + t$95$2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[Sqrt[N[(N[(x + 1.0), $MachinePrecision] / N[(x + -1.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$7 = N[(2.0 * N[(t * t), $MachinePrecision] + N[(l * l), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$8 = N[(t$95$7 / x), $MachinePrecision]}, If[LessEqual[t, -2.4e+27], N[(t$95$3 / N[(t$95$3 * (-t$95$6)), $MachinePrecision]), $MachinePrecision], If[LessEqual[t, -5.6e-291], N[(t$95$3 / N[Sqrt[N[(t$95$4 + N[(t$95$5 - N[(N[(l / N[(N[(x * x), $MachinePrecision] / (-l)), $MachinePrecision]), $MachinePrecision] - t$95$8), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[t, 1.2e-157], N[(t$95$3 / N[(t * N[Sqrt[t$95$1], $MachinePrecision] + N[(0.5 * N[(N[Sqrt[N[(1.0 / t$95$1), $MachinePrecision]], $MachinePrecision] * N[(N[(2.0 * N[(l / N[(x / l), $MachinePrecision]), $MachinePrecision] + N[(2.0 * t$95$2), $MachinePrecision]), $MachinePrecision] / t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t, 2.7e+20], N[(t$95$3 / N[Sqrt[N[(t$95$4 + N[(t$95$5 + N[(t$95$8 + N[(t$95$7 / N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(t$95$3 / N[(t$95$3 * t$95$6), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]
\frac{\sqrt{2} \cdot t}{\sqrt{\frac{x + 1}{x - 1} \cdot \left(\ell \cdot \ell + 2 \cdot \left(t \cdot t\right)\right) - \ell \cdot \ell}}
\begin{array}{l}
t_1 := \frac{4}{x \cdot x} + \left(2 + 4 \cdot \frac{1}{x}\right)\\
t_2 := \frac{\ell}{x} \cdot \frac{\ell}{x}\\
t_3 := t \cdot \sqrt{2}\\
t_4 := \frac{\ell \cdot \ell}{x}\\
t_5 := \mathsf{fma}\left(2, \frac{t}{x} \cdot \frac{t}{x}, \mathsf{fma}\left(2, t \cdot t + \frac{t \cdot t}{x}, t_2\right)\right)\\
t_6 := \sqrt{\frac{x + 1}{x + -1}}\\
t_7 := \mathsf{fma}\left(2, t \cdot t, \ell \cdot \ell\right)\\
t_8 := \frac{t_7}{x}\\
\mathbf{if}\;t \leq -2.4 \cdot 10^{+27}:\\
\;\;\;\;\frac{t_3}{t_3 \cdot \left(-t_6\right)}\\
\mathbf{elif}\;t \leq -5.6 \cdot 10^{-291}:\\
\;\;\;\;\frac{t_3}{\sqrt{t_4 + \left(t_5 - \left(\frac{\ell}{\frac{x \cdot x}{-\ell}} - t_8\right)\right)}}\\
\mathbf{elif}\;t \leq 1.2 \cdot 10^{-157}:\\
\;\;\;\;\frac{t_3}{\mathsf{fma}\left(t, \sqrt{t_1}, 0.5 \cdot \left(\sqrt{\frac{1}{t_1}} \cdot \frac{\mathsf{fma}\left(2, \frac{\ell}{\frac{x}{\ell}}, 2 \cdot t_2\right)}{t}\right)\right)}\\
\mathbf{elif}\;t \leq 2.7 \cdot 10^{+20}:\\
\;\;\;\;\frac{t_3}{\sqrt{t_4 + \left(t_5 + \left(t_8 + \frac{t_7}{x \cdot x}\right)\right)}}\\
\mathbf{else}:\\
\;\;\;\;\frac{t_3}{t_3 \cdot t_6}\\
\end{array}
if t < -2.39999999999999998e27Initial program 43.5
Taylor expanded in t around -inf 3.9
Simplified3.9
if -2.39999999999999998e27 < t < -5.5999999999999999e-291Initial program 41.4
Taylor expanded in x around inf 20.6
Simplified20.6
Taylor expanded in t around 0 20.6
Simplified18.9
if -5.5999999999999999e-291 < t < 1.2e-157Initial program 62.9
Taylor expanded in x around inf 38.1
Simplified38.1
Taylor expanded in t around inf 31.9
Simplified28.0
if 1.2e-157 < t < 2.7e20Initial program 31.1
Taylor expanded in x around inf 10.1
Simplified10.1
if 2.7e20 < t Initial program 41.7
Taylor expanded in l around 0 4.2
Final simplification10.8
herbie shell --seed 2022192
(FPCore (x l t)
:name "Toniolo and Linder, Equation (7)"
:precision binary64
(/ (* (sqrt 2.0) t) (sqrt (- (* (/ (+ x 1.0) (- x 1.0)) (+ (* l l) (* 2.0 (* t t)))) (* l l)))))