
(FPCore (J K U) :precision binary64 (let* ((t_0 (cos (/ K 2.0)))) (* (* (* -2.0 J) t_0) (sqrt (+ 1.0 (pow (/ U (* (* 2.0 J) t_0)) 2.0))))))
double code(double J, double K, double U) {
double t_0 = cos((K / 2.0));
return ((-2.0 * J) * t_0) * sqrt((1.0 + pow((U / ((2.0 * J) * t_0)), 2.0)));
}
module fmin_fmax_functions
implicit none
private
public fmax
public fmin
interface fmax
module procedure fmax88
module procedure fmax44
module procedure fmax84
module procedure fmax48
end interface
interface fmin
module procedure fmin88
module procedure fmin44
module procedure fmin84
module procedure fmin48
end interface
contains
real(8) function fmax88(x, y) result (res)
real(8), intent (in) :: x
real(8), intent (in) :: y
res = merge(y, merge(x, max(x, y), y /= y), x /= x)
end function
real(4) function fmax44(x, y) result (res)
real(4), intent (in) :: x
real(4), intent (in) :: y
res = merge(y, merge(x, max(x, y), y /= y), x /= x)
end function
real(8) function fmax84(x, y) result(res)
real(8), intent (in) :: x
real(4), intent (in) :: y
res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
end function
real(8) function fmax48(x, y) result(res)
real(4), intent (in) :: x
real(8), intent (in) :: y
res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
end function
real(8) function fmin88(x, y) result (res)
real(8), intent (in) :: x
real(8), intent (in) :: y
res = merge(y, merge(x, min(x, y), y /= y), x /= x)
end function
real(4) function fmin44(x, y) result (res)
real(4), intent (in) :: x
real(4), intent (in) :: y
res = merge(y, merge(x, min(x, y), y /= y), x /= x)
end function
real(8) function fmin84(x, y) result(res)
real(8), intent (in) :: x
real(4), intent (in) :: y
res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
end function
real(8) function fmin48(x, y) result(res)
real(4), intent (in) :: x
real(8), intent (in) :: y
res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
end function
end module
real(8) function code(j, k, u)
use fmin_fmax_functions
real(8), intent (in) :: j
real(8), intent (in) :: k
real(8), intent (in) :: u
real(8) :: t_0
t_0 = cos((k / 2.0d0))
code = (((-2.0d0) * j) * t_0) * sqrt((1.0d0 + ((u / ((2.0d0 * j) * t_0)) ** 2.0d0)))
end function
public static double code(double J, double K, double U) {
double t_0 = Math.cos((K / 2.0));
return ((-2.0 * J) * t_0) * Math.sqrt((1.0 + Math.pow((U / ((2.0 * J) * t_0)), 2.0)));
}
def code(J, K, U): t_0 = math.cos((K / 2.0)) return ((-2.0 * J) * t_0) * math.sqrt((1.0 + math.pow((U / ((2.0 * J) * t_0)), 2.0)))
function code(J, K, U) t_0 = cos(Float64(K / 2.0)) return Float64(Float64(Float64(-2.0 * J) * t_0) * sqrt(Float64(1.0 + (Float64(U / Float64(Float64(2.0 * J) * t_0)) ^ 2.0)))) end
function tmp = code(J, K, U) t_0 = cos((K / 2.0)); tmp = ((-2.0 * J) * t_0) * sqrt((1.0 + ((U / ((2.0 * J) * t_0)) ^ 2.0))); end
code[J_, K_, U_] := Block[{t$95$0 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, N[(N[(N[(-2.0 * J), $MachinePrecision] * t$95$0), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(U / N[(N[(2.0 * J), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
t_0 := \cos \left(\frac{K}{2}\right)\\
\left(\left(-2 \cdot J\right) \cdot t\_0\right) \cdot \sqrt{1 + {\left(\frac{U}{\left(2 \cdot J\right) \cdot t\_0}\right)}^{2}}
\end{array}
Herbie found 16 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (J K U) :precision binary64 (let* ((t_0 (cos (/ K 2.0)))) (* (* (* -2.0 J) t_0) (sqrt (+ 1.0 (pow (/ U (* (* 2.0 J) t_0)) 2.0))))))
double code(double J, double K, double U) {
double t_0 = cos((K / 2.0));
return ((-2.0 * J) * t_0) * sqrt((1.0 + pow((U / ((2.0 * J) * t_0)), 2.0)));
}
module fmin_fmax_functions
implicit none
private
public fmax
public fmin
interface fmax
module procedure fmax88
module procedure fmax44
module procedure fmax84
module procedure fmax48
end interface
interface fmin
module procedure fmin88
module procedure fmin44
module procedure fmin84
module procedure fmin48
end interface
contains
real(8) function fmax88(x, y) result (res)
real(8), intent (in) :: x
real(8), intent (in) :: y
res = merge(y, merge(x, max(x, y), y /= y), x /= x)
end function
real(4) function fmax44(x, y) result (res)
real(4), intent (in) :: x
real(4), intent (in) :: y
res = merge(y, merge(x, max(x, y), y /= y), x /= x)
end function
real(8) function fmax84(x, y) result(res)
real(8), intent (in) :: x
real(4), intent (in) :: y
res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
end function
real(8) function fmax48(x, y) result(res)
real(4), intent (in) :: x
real(8), intent (in) :: y
res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
end function
real(8) function fmin88(x, y) result (res)
real(8), intent (in) :: x
real(8), intent (in) :: y
res = merge(y, merge(x, min(x, y), y /= y), x /= x)
end function
real(4) function fmin44(x, y) result (res)
real(4), intent (in) :: x
real(4), intent (in) :: y
res = merge(y, merge(x, min(x, y), y /= y), x /= x)
end function
real(8) function fmin84(x, y) result(res)
real(8), intent (in) :: x
real(4), intent (in) :: y
res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
end function
real(8) function fmin48(x, y) result(res)
real(4), intent (in) :: x
real(8), intent (in) :: y
res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
end function
end module
real(8) function code(j, k, u)
use fmin_fmax_functions
real(8), intent (in) :: j
real(8), intent (in) :: k
real(8), intent (in) :: u
real(8) :: t_0
t_0 = cos((k / 2.0d0))
code = (((-2.0d0) * j) * t_0) * sqrt((1.0d0 + ((u / ((2.0d0 * j) * t_0)) ** 2.0d0)))
end function
public static double code(double J, double K, double U) {
double t_0 = Math.cos((K / 2.0));
return ((-2.0 * J) * t_0) * Math.sqrt((1.0 + Math.pow((U / ((2.0 * J) * t_0)), 2.0)));
}
def code(J, K, U): t_0 = math.cos((K / 2.0)) return ((-2.0 * J) * t_0) * math.sqrt((1.0 + math.pow((U / ((2.0 * J) * t_0)), 2.0)))
function code(J, K, U) t_0 = cos(Float64(K / 2.0)) return Float64(Float64(Float64(-2.0 * J) * t_0) * sqrt(Float64(1.0 + (Float64(U / Float64(Float64(2.0 * J) * t_0)) ^ 2.0)))) end
function tmp = code(J, K, U) t_0 = cos((K / 2.0)); tmp = ((-2.0 * J) * t_0) * sqrt((1.0 + ((U / ((2.0 * J) * t_0)) ^ 2.0))); end
code[J_, K_, U_] := Block[{t$95$0 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, N[(N[(N[(-2.0 * J), $MachinePrecision] * t$95$0), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(U / N[(N[(2.0 * J), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
t_0 := \cos \left(\frac{K}{2}\right)\\
\left(\left(-2 \cdot J\right) \cdot t\_0\right) \cdot \sqrt{1 + {\left(\frac{U}{\left(2 \cdot J\right) \cdot t\_0}\right)}^{2}}
\end{array}
(FPCore (J K U)
:precision binary64
(let* ((t_0 (cos (/ K 2.0)))
(t_1 (cos (* 0.5 K)))
(t_2 (* -2.0 (* (fabs U) (* t_1 (sqrt (/ 0.25 (pow t_1 2.0)))))))
(t_3 (* 2.0 (fabs J)))
(t_4 (* -2.0 (fabs J)))
(t_5 (* (* t_4 t_0) (sqrt (+ 1.0 (pow (/ (fabs U) (* t_3 t_0)) 2.0)))))
(t_6 (cos (* K 0.5))))
(*
(copysign 1.0 J)
(if (<= t_5 (- INFINITY))
t_2
(if (<= t_5 5e+299)
(* (* t_4 t_6) (sqrt (+ 1.0 (pow (/ (fabs U) (* t_3 t_6)) 2.0))))
t_2)))))double code(double J, double K, double U) {
double t_0 = cos((K / 2.0));
double t_1 = cos((0.5 * K));
double t_2 = -2.0 * (fabs(U) * (t_1 * sqrt((0.25 / pow(t_1, 2.0)))));
double t_3 = 2.0 * fabs(J);
double t_4 = -2.0 * fabs(J);
double t_5 = (t_4 * t_0) * sqrt((1.0 + pow((fabs(U) / (t_3 * t_0)), 2.0)));
double t_6 = cos((K * 0.5));
double tmp;
if (t_5 <= -((double) INFINITY)) {
tmp = t_2;
} else if (t_5 <= 5e+299) {
tmp = (t_4 * t_6) * sqrt((1.0 + pow((fabs(U) / (t_3 * t_6)), 2.0)));
} else {
tmp = t_2;
}
return copysign(1.0, J) * tmp;
}
public static double code(double J, double K, double U) {
double t_0 = Math.cos((K / 2.0));
double t_1 = Math.cos((0.5 * K));
double t_2 = -2.0 * (Math.abs(U) * (t_1 * Math.sqrt((0.25 / Math.pow(t_1, 2.0)))));
double t_3 = 2.0 * Math.abs(J);
double t_4 = -2.0 * Math.abs(J);
double t_5 = (t_4 * t_0) * Math.sqrt((1.0 + Math.pow((Math.abs(U) / (t_3 * t_0)), 2.0)));
double t_6 = Math.cos((K * 0.5));
double tmp;
if (t_5 <= -Double.POSITIVE_INFINITY) {
tmp = t_2;
} else if (t_5 <= 5e+299) {
tmp = (t_4 * t_6) * Math.sqrt((1.0 + Math.pow((Math.abs(U) / (t_3 * t_6)), 2.0)));
} else {
tmp = t_2;
}
return Math.copySign(1.0, J) * tmp;
}
def code(J, K, U): t_0 = math.cos((K / 2.0)) t_1 = math.cos((0.5 * K)) t_2 = -2.0 * (math.fabs(U) * (t_1 * math.sqrt((0.25 / math.pow(t_1, 2.0))))) t_3 = 2.0 * math.fabs(J) t_4 = -2.0 * math.fabs(J) t_5 = (t_4 * t_0) * math.sqrt((1.0 + math.pow((math.fabs(U) / (t_3 * t_0)), 2.0))) t_6 = math.cos((K * 0.5)) tmp = 0 if t_5 <= -math.inf: tmp = t_2 elif t_5 <= 5e+299: tmp = (t_4 * t_6) * math.sqrt((1.0 + math.pow((math.fabs(U) / (t_3 * t_6)), 2.0))) else: tmp = t_2 return math.copysign(1.0, J) * tmp
function code(J, K, U) t_0 = cos(Float64(K / 2.0)) t_1 = cos(Float64(0.5 * K)) t_2 = Float64(-2.0 * Float64(abs(U) * Float64(t_1 * sqrt(Float64(0.25 / (t_1 ^ 2.0)))))) t_3 = Float64(2.0 * abs(J)) t_4 = Float64(-2.0 * abs(J)) t_5 = Float64(Float64(t_4 * t_0) * sqrt(Float64(1.0 + (Float64(abs(U) / Float64(t_3 * t_0)) ^ 2.0)))) t_6 = cos(Float64(K * 0.5)) tmp = 0.0 if (t_5 <= Float64(-Inf)) tmp = t_2; elseif (t_5 <= 5e+299) tmp = Float64(Float64(t_4 * t_6) * sqrt(Float64(1.0 + (Float64(abs(U) / Float64(t_3 * t_6)) ^ 2.0)))); else tmp = t_2; end return Float64(copysign(1.0, J) * tmp) end
function tmp_2 = code(J, K, U) t_0 = cos((K / 2.0)); t_1 = cos((0.5 * K)); t_2 = -2.0 * (abs(U) * (t_1 * sqrt((0.25 / (t_1 ^ 2.0))))); t_3 = 2.0 * abs(J); t_4 = -2.0 * abs(J); t_5 = (t_4 * t_0) * sqrt((1.0 + ((abs(U) / (t_3 * t_0)) ^ 2.0))); t_6 = cos((K * 0.5)); tmp = 0.0; if (t_5 <= -Inf) tmp = t_2; elseif (t_5 <= 5e+299) tmp = (t_4 * t_6) * sqrt((1.0 + ((abs(U) / (t_3 * t_6)) ^ 2.0))); else tmp = t_2; end tmp_2 = (sign(J) * abs(1.0)) * tmp; end
code[J_, K_, U_] := Block[{t$95$0 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[Cos[N[(0.5 * K), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(-2.0 * N[(N[Abs[U], $MachinePrecision] * N[(t$95$1 * N[Sqrt[N[(0.25 / N[Power[t$95$1, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(N[(t$95$4 * t$95$0), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(N[Abs[U], $MachinePrecision] / N[(t$95$3 * t$95$0), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[Cos[N[(K * 0.5), $MachinePrecision]], $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[t$95$5, (-Infinity)], t$95$2, If[LessEqual[t$95$5, 5e+299], N[(N[(t$95$4 * t$95$6), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(N[Abs[U], $MachinePrecision] / N[(t$95$3 * t$95$6), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], t$95$2]]), $MachinePrecision]]]]]]]]
\begin{array}{l}
t_0 := \cos \left(\frac{K}{2}\right)\\
t_1 := \cos \left(0.5 \cdot K\right)\\
t_2 := -2 \cdot \left(\left|U\right| \cdot \left(t\_1 \cdot \sqrt{\frac{0.25}{{t\_1}^{2}}}\right)\right)\\
t_3 := 2 \cdot \left|J\right|\\
t_4 := -2 \cdot \left|J\right|\\
t_5 := \left(t\_4 \cdot t\_0\right) \cdot \sqrt{1 + {\left(\frac{\left|U\right|}{t\_3 \cdot t\_0}\right)}^{2}}\\
t_6 := \cos \left(K \cdot 0.5\right)\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;t\_5 \leq -\infty:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t\_5 \leq 5 \cdot 10^{+299}:\\
\;\;\;\;\left(t\_4 \cdot t\_6\right) \cdot \sqrt{1 + {\left(\frac{\left|U\right|}{t\_3 \cdot t\_6}\right)}^{2}}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < -inf.0 or 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
Taylor expanded in U around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
Applied rewrites12.9%
Taylor expanded in J around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-pow.f64N/A
lower-cos.f64N/A
lower-*.f6426.7%
Applied rewrites26.7%
if -inf.0 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6473.6%
Applied rewrites73.6%
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6473.6%
Applied rewrites73.6%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (cos (/ K 2.0)))
(t_1
(*
(* (* -2.0 (fabs J)) t_0)
(sqrt (+ 1.0 (pow (/ (fabs U) (* (* 2.0 (fabs J)) t_0)) 2.0)))))
(t_2 (cos (* 0.5 K)))
(t_3 (* -2.0 (* (fabs U) (* t_2 (sqrt (/ 0.25 (pow t_2 2.0))))))))
(*
(copysign 1.0 J)
(if (<= t_1 (- INFINITY))
t_3
(if (<= t_1 5e+299)
(*
(* (* (cos (* -0.5 K)) -2.0) (fabs J))
(sqrt
(-
(/
(*
(/ (/ (fabs U) (fma (cos K) 0.5 0.5)) (fabs J))
(/ (fabs U) (fabs J)))
4.0)
-1.0)))
t_3)))))double code(double J, double K, double U) {
double t_0 = cos((K / 2.0));
double t_1 = ((-2.0 * fabs(J)) * t_0) * sqrt((1.0 + pow((fabs(U) / ((2.0 * fabs(J)) * t_0)), 2.0)));
double t_2 = cos((0.5 * K));
double t_3 = -2.0 * (fabs(U) * (t_2 * sqrt((0.25 / pow(t_2, 2.0)))));
double tmp;
if (t_1 <= -((double) INFINITY)) {
tmp = t_3;
} else if (t_1 <= 5e+299) {
tmp = ((cos((-0.5 * K)) * -2.0) * fabs(J)) * sqrt((((((fabs(U) / fma(cos(K), 0.5, 0.5)) / fabs(J)) * (fabs(U) / fabs(J))) / 4.0) - -1.0));
} else {
tmp = t_3;
}
return copysign(1.0, J) * tmp;
}
function code(J, K, U) t_0 = cos(Float64(K / 2.0)) t_1 = Float64(Float64(Float64(-2.0 * abs(J)) * t_0) * sqrt(Float64(1.0 + (Float64(abs(U) / Float64(Float64(2.0 * abs(J)) * t_0)) ^ 2.0)))) t_2 = cos(Float64(0.5 * K)) t_3 = Float64(-2.0 * Float64(abs(U) * Float64(t_2 * sqrt(Float64(0.25 / (t_2 ^ 2.0)))))) tmp = 0.0 if (t_1 <= Float64(-Inf)) tmp = t_3; elseif (t_1 <= 5e+299) tmp = Float64(Float64(Float64(cos(Float64(-0.5 * K)) * -2.0) * abs(J)) * sqrt(Float64(Float64(Float64(Float64(Float64(abs(U) / fma(cos(K), 0.5, 0.5)) / abs(J)) * Float64(abs(U) / abs(J))) / 4.0) - -1.0))); else tmp = t_3; end return Float64(copysign(1.0, J) * tmp) end
code[J_, K_, U_] := Block[{t$95$0 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(N[Abs[U], $MachinePrecision] / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Cos[N[(0.5 * K), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[(-2.0 * N[(N[Abs[U], $MachinePrecision] * N[(t$95$2 * N[Sqrt[N[(0.25 / N[Power[t$95$2, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[t$95$1, (-Infinity)], t$95$3, If[LessEqual[t$95$1, 5e+299], N[(N[(N[(N[Cos[N[(-0.5 * K), $MachinePrecision]], $MachinePrecision] * -2.0), $MachinePrecision] * N[Abs[J], $MachinePrecision]), $MachinePrecision] * N[Sqrt[N[(N[(N[(N[(N[(N[Abs[U], $MachinePrecision] / N[(N[Cos[K], $MachinePrecision] * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision] / N[Abs[J], $MachinePrecision]), $MachinePrecision] * N[(N[Abs[U], $MachinePrecision] / N[Abs[J], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 4.0), $MachinePrecision] - -1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], t$95$3]]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := \cos \left(\frac{K}{2}\right)\\
t_1 := \left(\left(-2 \cdot \left|J\right|\right) \cdot t\_0\right) \cdot \sqrt{1 + {\left(\frac{\left|U\right|}{\left(2 \cdot \left|J\right|\right) \cdot t\_0}\right)}^{2}}\\
t_2 := \cos \left(0.5 \cdot K\right)\\
t_3 := -2 \cdot \left(\left|U\right| \cdot \left(t\_2 \cdot \sqrt{\frac{0.25}{{t\_2}^{2}}}\right)\right)\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;t\_1 \leq -\infty:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;t\_1 \leq 5 \cdot 10^{+299}:\\
\;\;\;\;\left(\left(\cos \left(-0.5 \cdot K\right) \cdot -2\right) \cdot \left|J\right|\right) \cdot \sqrt{\frac{\frac{\frac{\left|U\right|}{\mathsf{fma}\left(\cos K, 0.5, 0.5\right)}}{\left|J\right|} \cdot \frac{\left|U\right|}{\left|J\right|}}{4} - -1}\\
\mathbf{else}:\\
\;\;\;\;t\_3\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < -inf.0 or 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
Taylor expanded in U around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
Applied rewrites12.9%
Taylor expanded in J around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-pow.f64N/A
lower-cos.f64N/A
lower-*.f6426.7%
Applied rewrites26.7%
if -inf.0 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-/.f64N/A
frac-timesN/A
associate-/l*N/A
lower-fma.f64N/A
Applied rewrites73.5%
Applied rewrites73.5%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (cos (/ K 2.0)))
(t_1
(*
(* (* -2.0 (fabs J)) t_0)
(sqrt (+ 1.0 (pow (/ (fabs U) (* (* 2.0 (fabs J)) t_0)) 2.0)))))
(t_2 (cos (* 0.5 K)))
(t_3 (* -2.0 (* (fabs U) (* t_2 (sqrt (/ 0.25 (pow t_2 2.0))))))))
(*
(copysign 1.0 J)
(if (<= t_1 (- INFINITY))
t_3
(if (<= t_1 5e+299)
(*
(*
(*
(sqrt
(fma
(/ (/ (fabs U) (- (cos K) -1.0)) (fabs J))
(/ (fabs U) (+ (fabs J) (fabs J)))
1.0))
(fabs J))
-2.0)
(cos (* -0.5 K)))
t_3)))))double code(double J, double K, double U) {
double t_0 = cos((K / 2.0));
double t_1 = ((-2.0 * fabs(J)) * t_0) * sqrt((1.0 + pow((fabs(U) / ((2.0 * fabs(J)) * t_0)), 2.0)));
double t_2 = cos((0.5 * K));
double t_3 = -2.0 * (fabs(U) * (t_2 * sqrt((0.25 / pow(t_2, 2.0)))));
double tmp;
if (t_1 <= -((double) INFINITY)) {
tmp = t_3;
} else if (t_1 <= 5e+299) {
tmp = ((sqrt(fma(((fabs(U) / (cos(K) - -1.0)) / fabs(J)), (fabs(U) / (fabs(J) + fabs(J))), 1.0)) * fabs(J)) * -2.0) * cos((-0.5 * K));
} else {
tmp = t_3;
}
return copysign(1.0, J) * tmp;
}
function code(J, K, U) t_0 = cos(Float64(K / 2.0)) t_1 = Float64(Float64(Float64(-2.0 * abs(J)) * t_0) * sqrt(Float64(1.0 + (Float64(abs(U) / Float64(Float64(2.0 * abs(J)) * t_0)) ^ 2.0)))) t_2 = cos(Float64(0.5 * K)) t_3 = Float64(-2.0 * Float64(abs(U) * Float64(t_2 * sqrt(Float64(0.25 / (t_2 ^ 2.0)))))) tmp = 0.0 if (t_1 <= Float64(-Inf)) tmp = t_3; elseif (t_1 <= 5e+299) tmp = Float64(Float64(Float64(sqrt(fma(Float64(Float64(abs(U) / Float64(cos(K) - -1.0)) / abs(J)), Float64(abs(U) / Float64(abs(J) + abs(J))), 1.0)) * abs(J)) * -2.0) * cos(Float64(-0.5 * K))); else tmp = t_3; end return Float64(copysign(1.0, J) * tmp) end
code[J_, K_, U_] := Block[{t$95$0 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(N[Abs[U], $MachinePrecision] / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Cos[N[(0.5 * K), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[(-2.0 * N[(N[Abs[U], $MachinePrecision] * N[(t$95$2 * N[Sqrt[N[(0.25 / N[Power[t$95$2, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[t$95$1, (-Infinity)], t$95$3, If[LessEqual[t$95$1, 5e+299], N[(N[(N[(N[Sqrt[N[(N[(N[(N[Abs[U], $MachinePrecision] / N[(N[Cos[K], $MachinePrecision] - -1.0), $MachinePrecision]), $MachinePrecision] / N[Abs[J], $MachinePrecision]), $MachinePrecision] * N[(N[Abs[U], $MachinePrecision] / N[(N[Abs[J], $MachinePrecision] + N[Abs[J], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]], $MachinePrecision] * N[Abs[J], $MachinePrecision]), $MachinePrecision] * -2.0), $MachinePrecision] * N[Cos[N[(-0.5 * K), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], t$95$3]]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := \cos \left(\frac{K}{2}\right)\\
t_1 := \left(\left(-2 \cdot \left|J\right|\right) \cdot t\_0\right) \cdot \sqrt{1 + {\left(\frac{\left|U\right|}{\left(2 \cdot \left|J\right|\right) \cdot t\_0}\right)}^{2}}\\
t_2 := \cos \left(0.5 \cdot K\right)\\
t_3 := -2 \cdot \left(\left|U\right| \cdot \left(t\_2 \cdot \sqrt{\frac{0.25}{{t\_2}^{2}}}\right)\right)\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;t\_1 \leq -\infty:\\
\;\;\;\;t\_3\\
\mathbf{elif}\;t\_1 \leq 5 \cdot 10^{+299}:\\
\;\;\;\;\left(\left(\sqrt{\mathsf{fma}\left(\frac{\frac{\left|U\right|}{\cos K - -1}}{\left|J\right|}, \frac{\left|U\right|}{\left|J\right| + \left|J\right|}, 1\right)} \cdot \left|J\right|\right) \cdot -2\right) \cdot \cos \left(-0.5 \cdot K\right)\\
\mathbf{else}:\\
\;\;\;\;t\_3\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < -inf.0 or 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
Taylor expanded in U around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
Applied rewrites12.9%
Taylor expanded in J around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-pow.f64N/A
lower-cos.f64N/A
lower-*.f6426.7%
Applied rewrites26.7%
if -inf.0 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-/.f64N/A
frac-timesN/A
associate-/l*N/A
lower-fma.f64N/A
Applied rewrites73.5%
Applied rewrites73.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites71.1%
lift--.f64N/A
sub-flipN/A
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
count-2-revN/A
lift-+.f64N/A
associate-/l/N/A
frac-timesN/A
metadata-evalN/A
lower-fma.f64N/A
lower-/.f64N/A
lower-/.f6473.5%
Applied rewrites73.5%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (cos (* -0.5 K)))
(t_1 (* (* (sqrt (* 0.5 (/ (pow U 2.0) (+ 1.0 (cos K))))) -2.0) t_0))
(t_2 (cos (/ K 2.0)))
(t_3
(*
(* (* -2.0 (fabs J)) t_2)
(sqrt (+ 1.0 (pow (/ U (* (* 2.0 (fabs J)) t_2)) 2.0))))))
(*
(copysign 1.0 J)
(if (<= t_3 (- INFINITY))
t_1
(if (<= t_3 5e+299)
(*
(*
(*
(sqrt
(fma
(/ (/ U (- (cos K) -1.0)) (fabs J))
(/ U (+ (fabs J) (fabs J)))
1.0))
(fabs J))
-2.0)
t_0)
t_1)))))double code(double J, double K, double U) {
double t_0 = cos((-0.5 * K));
double t_1 = (sqrt((0.5 * (pow(U, 2.0) / (1.0 + cos(K))))) * -2.0) * t_0;
double t_2 = cos((K / 2.0));
double t_3 = ((-2.0 * fabs(J)) * t_2) * sqrt((1.0 + pow((U / ((2.0 * fabs(J)) * t_2)), 2.0)));
double tmp;
if (t_3 <= -((double) INFINITY)) {
tmp = t_1;
} else if (t_3 <= 5e+299) {
tmp = ((sqrt(fma(((U / (cos(K) - -1.0)) / fabs(J)), (U / (fabs(J) + fabs(J))), 1.0)) * fabs(J)) * -2.0) * t_0;
} else {
tmp = t_1;
}
return copysign(1.0, J) * tmp;
}
function code(J, K, U) t_0 = cos(Float64(-0.5 * K)) t_1 = Float64(Float64(sqrt(Float64(0.5 * Float64((U ^ 2.0) / Float64(1.0 + cos(K))))) * -2.0) * t_0) t_2 = cos(Float64(K / 2.0)) t_3 = Float64(Float64(Float64(-2.0 * abs(J)) * t_2) * sqrt(Float64(1.0 + (Float64(U / Float64(Float64(2.0 * abs(J)) * t_2)) ^ 2.0)))) tmp = 0.0 if (t_3 <= Float64(-Inf)) tmp = t_1; elseif (t_3 <= 5e+299) tmp = Float64(Float64(Float64(sqrt(fma(Float64(Float64(U / Float64(cos(K) - -1.0)) / abs(J)), Float64(U / Float64(abs(J) + abs(J))), 1.0)) * abs(J)) * -2.0) * t_0); else tmp = t_1; end return Float64(copysign(1.0, J) * tmp) end
code[J_, K_, U_] := Block[{t$95$0 = N[Cos[N[(-0.5 * K), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[Sqrt[N[(0.5 * N[(N[Power[U, 2.0], $MachinePrecision] / N[(1.0 + N[Cos[K], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * -2.0), $MachinePrecision] * t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(U / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[t$95$3, (-Infinity)], t$95$1, If[LessEqual[t$95$3, 5e+299], N[(N[(N[(N[Sqrt[N[(N[(N[(U / N[(N[Cos[K], $MachinePrecision] - -1.0), $MachinePrecision]), $MachinePrecision] / N[Abs[J], $MachinePrecision]), $MachinePrecision] * N[(U / N[(N[Abs[J], $MachinePrecision] + N[Abs[J], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]], $MachinePrecision] * N[Abs[J], $MachinePrecision]), $MachinePrecision] * -2.0), $MachinePrecision] * t$95$0), $MachinePrecision], t$95$1]]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := \cos \left(-0.5 \cdot K\right)\\
t_1 := \left(\sqrt{0.5 \cdot \frac{{U}^{2}}{1 + \cos K}} \cdot -2\right) \cdot t\_0\\
t_2 := \cos \left(\frac{K}{2}\right)\\
t_3 := \left(\left(-2 \cdot \left|J\right|\right) \cdot t\_2\right) \cdot \sqrt{1 + {\left(\frac{U}{\left(2 \cdot \left|J\right|\right) \cdot t\_2}\right)}^{2}}\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;t\_3 \leq -\infty:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;t\_3 \leq 5 \cdot 10^{+299}:\\
\;\;\;\;\left(\left(\sqrt{\mathsf{fma}\left(\frac{\frac{U}{\cos K - -1}}{\left|J\right|}, \frac{U}{\left|J\right| + \left|J\right|}, 1\right)} \cdot \left|J\right|\right) \cdot -2\right) \cdot t\_0\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < -inf.0 or 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-/.f64N/A
frac-timesN/A
associate-/l*N/A
lower-fma.f64N/A
Applied rewrites73.5%
Applied rewrites73.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites71.1%
Taylor expanded in J around 0
lower-sqrt.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-pow.f64N/A
lower-+.f64N/A
lower-cos.f6415.1%
Applied rewrites15.1%
if -inf.0 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-/.f64N/A
frac-timesN/A
associate-/l*N/A
lower-fma.f64N/A
Applied rewrites73.5%
Applied rewrites73.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites71.1%
lift--.f64N/A
sub-flipN/A
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
count-2-revN/A
lift-+.f64N/A
associate-/l/N/A
frac-timesN/A
metadata-evalN/A
lower-fma.f64N/A
lower-/.f64N/A
lower-/.f6473.5%
Applied rewrites73.5%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (+ (fabs J) (fabs J)))
(t_1 (+ 1.0 (* -0.125 (pow K 2.0))))
(t_2 (cos (/ K 2.0)))
(t_3
(*
(* (* -2.0 (fabs J)) t_2)
(sqrt (+ 1.0 (pow (/ U (* (* 2.0 (fabs J)) t_2)) 2.0)))))
(t_4 (cos (* -0.5 K))))
(*
(copysign 1.0 J)
(if (<= t_3 (- INFINITY))
(* (* (* t_4 (fabs J)) -2.0) (cosh (asinh (* 0.5 (/ U (fabs J))))))
(if (<= t_3 5e+299)
(*
(*
(*
(sqrt (fma (/ (/ U (- (cos K) -1.0)) (fabs J)) (/ U t_0) 1.0))
(fabs J))
-2.0)
t_4)
(* (* (* t_1 (fabs J)) -2.0) (cosh (asinh (/ U (* t_0 t_1))))))))))double code(double J, double K, double U) {
double t_0 = fabs(J) + fabs(J);
double t_1 = 1.0 + (-0.125 * pow(K, 2.0));
double t_2 = cos((K / 2.0));
double t_3 = ((-2.0 * fabs(J)) * t_2) * sqrt((1.0 + pow((U / ((2.0 * fabs(J)) * t_2)), 2.0)));
double t_4 = cos((-0.5 * K));
double tmp;
if (t_3 <= -((double) INFINITY)) {
tmp = ((t_4 * fabs(J)) * -2.0) * cosh(asinh((0.5 * (U / fabs(J)))));
} else if (t_3 <= 5e+299) {
tmp = ((sqrt(fma(((U / (cos(K) - -1.0)) / fabs(J)), (U / t_0), 1.0)) * fabs(J)) * -2.0) * t_4;
} else {
tmp = ((t_1 * fabs(J)) * -2.0) * cosh(asinh((U / (t_0 * t_1))));
}
return copysign(1.0, J) * tmp;
}
function code(J, K, U) t_0 = Float64(abs(J) + abs(J)) t_1 = Float64(1.0 + Float64(-0.125 * (K ^ 2.0))) t_2 = cos(Float64(K / 2.0)) t_3 = Float64(Float64(Float64(-2.0 * abs(J)) * t_2) * sqrt(Float64(1.0 + (Float64(U / Float64(Float64(2.0 * abs(J)) * t_2)) ^ 2.0)))) t_4 = cos(Float64(-0.5 * K)) tmp = 0.0 if (t_3 <= Float64(-Inf)) tmp = Float64(Float64(Float64(t_4 * abs(J)) * -2.0) * cosh(asinh(Float64(0.5 * Float64(U / abs(J)))))); elseif (t_3 <= 5e+299) tmp = Float64(Float64(Float64(sqrt(fma(Float64(Float64(U / Float64(cos(K) - -1.0)) / abs(J)), Float64(U / t_0), 1.0)) * abs(J)) * -2.0) * t_4); else tmp = Float64(Float64(Float64(t_1 * abs(J)) * -2.0) * cosh(asinh(Float64(U / Float64(t_0 * t_1))))); end return Float64(copysign(1.0, J) * tmp) end
code[J_, K_, U_] := Block[{t$95$0 = N[(N[Abs[J], $MachinePrecision] + N[Abs[J], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(1.0 + N[(-0.125 * N[Power[K, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(U / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[Cos[N[(-0.5 * K), $MachinePrecision]], $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[t$95$3, (-Infinity)], N[(N[(N[(t$95$4 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * -2.0), $MachinePrecision] * N[Cosh[N[ArcSinh[N[(0.5 * N[(U / N[Abs[J], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 5e+299], N[(N[(N[(N[Sqrt[N[(N[(N[(U / N[(N[Cos[K], $MachinePrecision] - -1.0), $MachinePrecision]), $MachinePrecision] / N[Abs[J], $MachinePrecision]), $MachinePrecision] * N[(U / t$95$0), $MachinePrecision] + 1.0), $MachinePrecision]], $MachinePrecision] * N[Abs[J], $MachinePrecision]), $MachinePrecision] * -2.0), $MachinePrecision] * t$95$4), $MachinePrecision], N[(N[(N[(t$95$1 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * -2.0), $MachinePrecision] * N[Cosh[N[ArcSinh[N[(U / N[(t$95$0 * t$95$1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]]]]]]
\begin{array}{l}
t_0 := \left|J\right| + \left|J\right|\\
t_1 := 1 + -0.125 \cdot {K}^{2}\\
t_2 := \cos \left(\frac{K}{2}\right)\\
t_3 := \left(\left(-2 \cdot \left|J\right|\right) \cdot t\_2\right) \cdot \sqrt{1 + {\left(\frac{U}{\left(2 \cdot \left|J\right|\right) \cdot t\_2}\right)}^{2}}\\
t_4 := \cos \left(-0.5 \cdot K\right)\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;t\_3 \leq -\infty:\\
\;\;\;\;\left(\left(t\_4 \cdot \left|J\right|\right) \cdot -2\right) \cdot \cosh \sinh^{-1} \left(0.5 \cdot \frac{U}{\left|J\right|}\right)\\
\mathbf{elif}\;t\_3 \leq 5 \cdot 10^{+299}:\\
\;\;\;\;\left(\left(\sqrt{\mathsf{fma}\left(\frac{\frac{U}{\cos K - -1}}{\left|J\right|}, \frac{U}{t\_0}, 1\right)} \cdot \left|J\right|\right) \cdot -2\right) \cdot t\_4\\
\mathbf{else}:\\
\;\;\;\;\left(\left(t\_1 \cdot \left|J\right|\right) \cdot -2\right) \cdot \cosh \sinh^{-1} \left(\frac{U}{t\_0 \cdot t\_1}\right)\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < -inf.0Initial program 73.6%
lift-sqrt.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
cosh-asinh-revN/A
lower-cosh.f64N/A
lower-asinh.f6485.0%
lift-*.f64N/A
count-2-revN/A
lower-+.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
distribute-neg-frac2N/A
metadata-evalN/A
mult-flip-revN/A
*-commutativeN/A
lower-*.f64N/A
metadata-eval85.0%
Applied rewrites85.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-neg-outN/A
metadata-evalN/A
lift-*.f6485.0%
Applied rewrites85.0%
Taylor expanded in K around 0
lower-*.f64N/A
lower-/.f6472.0%
Applied rewrites72.0%
if -inf.0 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-/.f64N/A
frac-timesN/A
associate-/l*N/A
lower-fma.f64N/A
Applied rewrites73.5%
Applied rewrites73.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites71.1%
lift--.f64N/A
sub-flipN/A
lift-/.f64N/A
lift-/.f64N/A
associate-/l/N/A
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
count-2-revN/A
lift-+.f64N/A
associate-/l/N/A
frac-timesN/A
metadata-evalN/A
lower-fma.f64N/A
lower-/.f64N/A
lower-/.f6473.5%
Applied rewrites73.5%
if 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
lift-sqrt.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
cosh-asinh-revN/A
lower-cosh.f64N/A
lower-asinh.f6485.0%
lift-*.f64N/A
count-2-revN/A
lower-+.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
distribute-neg-frac2N/A
metadata-evalN/A
mult-flip-revN/A
*-commutativeN/A
lower-*.f64N/A
metadata-eval85.0%
Applied rewrites85.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-neg-outN/A
metadata-evalN/A
lift-*.f6485.0%
Applied rewrites85.0%
Taylor expanded in K around 0
lower-+.f64N/A
lower-*.f64N/A
lower-pow.f6443.1%
Applied rewrites43.1%
Taylor expanded in K around 0
lower-+.f64N/A
lower-*.f64N/A
lower-pow.f6445.9%
Applied rewrites45.9%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (+ 1.0 (* -0.125 (pow K 2.0))))
(t_1 (cos (* -0.5 K)))
(t_2 (cos (/ K 2.0)))
(t_3
(*
(* (* -2.0 (fabs J)) t_2)
(sqrt (+ 1.0 (pow (/ U (* (* 2.0 (fabs J)) t_2)) 2.0))))))
(*
(copysign 1.0 J)
(if (<= t_3 -4e+254)
(* (* (* t_1 (fabs J)) -2.0) (cosh (asinh (* 0.5 (/ U (fabs J))))))
(if (<= t_3 5e+299)
(*
(*
(*
(sqrt
(fma
(* U (/ U (* (- (cos K) -1.0) (fabs J))))
(/ 0.5 (fabs J))
1.0))
(fabs J))
-2.0)
t_1)
(*
(* (* t_0 (fabs J)) -2.0)
(cosh (asinh (/ U (* (+ (fabs J) (fabs J)) t_0))))))))))double code(double J, double K, double U) {
double t_0 = 1.0 + (-0.125 * pow(K, 2.0));
double t_1 = cos((-0.5 * K));
double t_2 = cos((K / 2.0));
double t_3 = ((-2.0 * fabs(J)) * t_2) * sqrt((1.0 + pow((U / ((2.0 * fabs(J)) * t_2)), 2.0)));
double tmp;
if (t_3 <= -4e+254) {
tmp = ((t_1 * fabs(J)) * -2.0) * cosh(asinh((0.5 * (U / fabs(J)))));
} else if (t_3 <= 5e+299) {
tmp = ((sqrt(fma((U * (U / ((cos(K) - -1.0) * fabs(J)))), (0.5 / fabs(J)), 1.0)) * fabs(J)) * -2.0) * t_1;
} else {
tmp = ((t_0 * fabs(J)) * -2.0) * cosh(asinh((U / ((fabs(J) + fabs(J)) * t_0))));
}
return copysign(1.0, J) * tmp;
}
function code(J, K, U) t_0 = Float64(1.0 + Float64(-0.125 * (K ^ 2.0))) t_1 = cos(Float64(-0.5 * K)) t_2 = cos(Float64(K / 2.0)) t_3 = Float64(Float64(Float64(-2.0 * abs(J)) * t_2) * sqrt(Float64(1.0 + (Float64(U / Float64(Float64(2.0 * abs(J)) * t_2)) ^ 2.0)))) tmp = 0.0 if (t_3 <= -4e+254) tmp = Float64(Float64(Float64(t_1 * abs(J)) * -2.0) * cosh(asinh(Float64(0.5 * Float64(U / abs(J)))))); elseif (t_3 <= 5e+299) tmp = Float64(Float64(Float64(sqrt(fma(Float64(U * Float64(U / Float64(Float64(cos(K) - -1.0) * abs(J)))), Float64(0.5 / abs(J)), 1.0)) * abs(J)) * -2.0) * t_1); else tmp = Float64(Float64(Float64(t_0 * abs(J)) * -2.0) * cosh(asinh(Float64(U / Float64(Float64(abs(J) + abs(J)) * t_0))))); end return Float64(copysign(1.0, J) * tmp) end
code[J_, K_, U_] := Block[{t$95$0 = N[(1.0 + N[(-0.125 * N[Power[K, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Cos[N[(-0.5 * K), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(U / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[t$95$3, -4e+254], N[(N[(N[(t$95$1 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * -2.0), $MachinePrecision] * N[Cosh[N[ArcSinh[N[(0.5 * N[(U / N[Abs[J], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 5e+299], N[(N[(N[(N[Sqrt[N[(N[(U * N[(U / N[(N[(N[Cos[K], $MachinePrecision] - -1.0), $MachinePrecision] * N[Abs[J], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(0.5 / N[Abs[J], $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision]], $MachinePrecision] * N[Abs[J], $MachinePrecision]), $MachinePrecision] * -2.0), $MachinePrecision] * t$95$1), $MachinePrecision], N[(N[(N[(t$95$0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * -2.0), $MachinePrecision] * N[Cosh[N[ArcSinh[N[(U / N[(N[(N[Abs[J], $MachinePrecision] + N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := 1 + -0.125 \cdot {K}^{2}\\
t_1 := \cos \left(-0.5 \cdot K\right)\\
t_2 := \cos \left(\frac{K}{2}\right)\\
t_3 := \left(\left(-2 \cdot \left|J\right|\right) \cdot t\_2\right) \cdot \sqrt{1 + {\left(\frac{U}{\left(2 \cdot \left|J\right|\right) \cdot t\_2}\right)}^{2}}\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;t\_3 \leq -4 \cdot 10^{+254}:\\
\;\;\;\;\left(\left(t\_1 \cdot \left|J\right|\right) \cdot -2\right) \cdot \cosh \sinh^{-1} \left(0.5 \cdot \frac{U}{\left|J\right|}\right)\\
\mathbf{elif}\;t\_3 \leq 5 \cdot 10^{+299}:\\
\;\;\;\;\left(\left(\sqrt{\mathsf{fma}\left(U \cdot \frac{U}{\left(\cos K - -1\right) \cdot \left|J\right|}, \frac{0.5}{\left|J\right|}, 1\right)} \cdot \left|J\right|\right) \cdot -2\right) \cdot t\_1\\
\mathbf{else}:\\
\;\;\;\;\left(\left(t\_0 \cdot \left|J\right|\right) \cdot -2\right) \cdot \cosh \sinh^{-1} \left(\frac{U}{\left(\left|J\right| + \left|J\right|\right) \cdot t\_0}\right)\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < -3.9999999999999997e254Initial program 73.6%
lift-sqrt.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
cosh-asinh-revN/A
lower-cosh.f64N/A
lower-asinh.f6485.0%
lift-*.f64N/A
count-2-revN/A
lower-+.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
distribute-neg-frac2N/A
metadata-evalN/A
mult-flip-revN/A
*-commutativeN/A
lower-*.f64N/A
metadata-eval85.0%
Applied rewrites85.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-neg-outN/A
metadata-evalN/A
lift-*.f6485.0%
Applied rewrites85.0%
Taylor expanded in K around 0
lower-*.f64N/A
lower-/.f6472.0%
Applied rewrites72.0%
if -3.9999999999999997e254 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-/.f64N/A
frac-timesN/A
associate-/l*N/A
lower-fma.f64N/A
Applied rewrites73.5%
Applied rewrites73.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites71.1%
lift--.f64N/A
sub-flipN/A
lift-/.f64N/A
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
associate-/l*N/A
metadata-evalN/A
lower-fma.f64N/A
lift-*.f64N/A
lift-/.f64N/A
lift-/.f64N/A
frac-timesN/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-/.f6471.0%
Applied rewrites71.0%
if 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
lift-sqrt.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
cosh-asinh-revN/A
lower-cosh.f64N/A
lower-asinh.f6485.0%
lift-*.f64N/A
count-2-revN/A
lower-+.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
distribute-neg-frac2N/A
metadata-evalN/A
mult-flip-revN/A
*-commutativeN/A
lower-*.f64N/A
metadata-eval85.0%
Applied rewrites85.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-neg-outN/A
metadata-evalN/A
lift-*.f6485.0%
Applied rewrites85.0%
Taylor expanded in K around 0
lower-+.f64N/A
lower-*.f64N/A
lower-pow.f6443.1%
Applied rewrites43.1%
Taylor expanded in K around 0
lower-+.f64N/A
lower-*.f64N/A
lower-pow.f6445.9%
Applied rewrites45.9%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (+ 1.0 (* -0.125 (pow K 2.0)))) (t_1 (cos (/ K 2.0))))
(*
(copysign 1.0 J)
(if (<=
(*
(* (* -2.0 (fabs J)) t_1)
(sqrt (+ 1.0 (pow (/ U (* (* 2.0 (fabs J)) t_1)) 2.0))))
5e+299)
(*
(* (* (cos (* -0.5 K)) (fabs J)) -2.0)
(cosh (asinh (* 0.5 (/ U (fabs J))))))
(*
(* (* t_0 (fabs J)) -2.0)
(cosh (asinh (/ U (* (+ (fabs J) (fabs J)) t_0)))))))))double code(double J, double K, double U) {
double t_0 = 1.0 + (-0.125 * pow(K, 2.0));
double t_1 = cos((K / 2.0));
double tmp;
if ((((-2.0 * fabs(J)) * t_1) * sqrt((1.0 + pow((U / ((2.0 * fabs(J)) * t_1)), 2.0)))) <= 5e+299) {
tmp = ((cos((-0.5 * K)) * fabs(J)) * -2.0) * cosh(asinh((0.5 * (U / fabs(J)))));
} else {
tmp = ((t_0 * fabs(J)) * -2.0) * cosh(asinh((U / ((fabs(J) + fabs(J)) * t_0))));
}
return copysign(1.0, J) * tmp;
}
def code(J, K, U): t_0 = 1.0 + (-0.125 * math.pow(K, 2.0)) t_1 = math.cos((K / 2.0)) tmp = 0 if (((-2.0 * math.fabs(J)) * t_1) * math.sqrt((1.0 + math.pow((U / ((2.0 * math.fabs(J)) * t_1)), 2.0)))) <= 5e+299: tmp = ((math.cos((-0.5 * K)) * math.fabs(J)) * -2.0) * math.cosh(math.asinh((0.5 * (U / math.fabs(J))))) else: tmp = ((t_0 * math.fabs(J)) * -2.0) * math.cosh(math.asinh((U / ((math.fabs(J) + math.fabs(J)) * t_0)))) return math.copysign(1.0, J) * tmp
function code(J, K, U) t_0 = Float64(1.0 + Float64(-0.125 * (K ^ 2.0))) t_1 = cos(Float64(K / 2.0)) tmp = 0.0 if (Float64(Float64(Float64(-2.0 * abs(J)) * t_1) * sqrt(Float64(1.0 + (Float64(U / Float64(Float64(2.0 * abs(J)) * t_1)) ^ 2.0)))) <= 5e+299) tmp = Float64(Float64(Float64(cos(Float64(-0.5 * K)) * abs(J)) * -2.0) * cosh(asinh(Float64(0.5 * Float64(U / abs(J)))))); else tmp = Float64(Float64(Float64(t_0 * abs(J)) * -2.0) * cosh(asinh(Float64(U / Float64(Float64(abs(J) + abs(J)) * t_0))))); end return Float64(copysign(1.0, J) * tmp) end
function tmp_2 = code(J, K, U) t_0 = 1.0 + (-0.125 * (K ^ 2.0)); t_1 = cos((K / 2.0)); tmp = 0.0; if ((((-2.0 * abs(J)) * t_1) * sqrt((1.0 + ((U / ((2.0 * abs(J)) * t_1)) ^ 2.0)))) <= 5e+299) tmp = ((cos((-0.5 * K)) * abs(J)) * -2.0) * cosh(asinh((0.5 * (U / abs(J))))); else tmp = ((t_0 * abs(J)) * -2.0) * cosh(asinh((U / ((abs(J) + abs(J)) * t_0)))); end tmp_2 = (sign(J) * abs(1.0)) * tmp; end
code[J_, K_, U_] := Block[{t$95$0 = N[(1.0 + N[(-0.125 * N[Power[K, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[(N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(U / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 5e+299], N[(N[(N[(N[Cos[N[(-0.5 * K), $MachinePrecision]], $MachinePrecision] * N[Abs[J], $MachinePrecision]), $MachinePrecision] * -2.0), $MachinePrecision] * N[Cosh[N[ArcSinh[N[(0.5 * N[(U / N[Abs[J], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(N[(N[(t$95$0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * -2.0), $MachinePrecision] * N[Cosh[N[ArcSinh[N[(U / N[(N[(N[Abs[J], $MachinePrecision] + N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]]
\begin{array}{l}
t_0 := 1 + -0.125 \cdot {K}^{2}\\
t_1 := \cos \left(\frac{K}{2}\right)\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;\left(\left(-2 \cdot \left|J\right|\right) \cdot t\_1\right) \cdot \sqrt{1 + {\left(\frac{U}{\left(2 \cdot \left|J\right|\right) \cdot t\_1}\right)}^{2}} \leq 5 \cdot 10^{+299}:\\
\;\;\;\;\left(\left(\cos \left(-0.5 \cdot K\right) \cdot \left|J\right|\right) \cdot -2\right) \cdot \cosh \sinh^{-1} \left(0.5 \cdot \frac{U}{\left|J\right|}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(t\_0 \cdot \left|J\right|\right) \cdot -2\right) \cdot \cosh \sinh^{-1} \left(\frac{U}{\left(\left|J\right| + \left|J\right|\right) \cdot t\_0}\right)\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-sqrt.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
cosh-asinh-revN/A
lower-cosh.f64N/A
lower-asinh.f6485.0%
lift-*.f64N/A
count-2-revN/A
lower-+.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
distribute-neg-frac2N/A
metadata-evalN/A
mult-flip-revN/A
*-commutativeN/A
lower-*.f64N/A
metadata-eval85.0%
Applied rewrites85.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-neg-outN/A
metadata-evalN/A
lift-*.f6485.0%
Applied rewrites85.0%
Taylor expanded in K around 0
lower-*.f64N/A
lower-/.f6472.0%
Applied rewrites72.0%
if 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
lift-sqrt.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
cosh-asinh-revN/A
lower-cosh.f64N/A
lower-asinh.f6485.0%
lift-*.f64N/A
count-2-revN/A
lower-+.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
distribute-neg-frac2N/A
metadata-evalN/A
mult-flip-revN/A
*-commutativeN/A
lower-*.f64N/A
metadata-eval85.0%
Applied rewrites85.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-neg-outN/A
metadata-evalN/A
lift-*.f6485.0%
Applied rewrites85.0%
Taylor expanded in K around 0
lower-+.f64N/A
lower-*.f64N/A
lower-pow.f6443.1%
Applied rewrites43.1%
Taylor expanded in K around 0
lower-+.f64N/A
lower-*.f64N/A
lower-pow.f6445.9%
Applied rewrites45.9%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (cos (/ K 2.0))))
(*
(copysign 1.0 J)
(if (<=
(*
(* (* -2.0 (fabs J)) t_0)
(sqrt (+ 1.0 (pow (/ (fabs U) (* (* 2.0 (fabs J)) t_0)) 2.0))))
5e+299)
(*
(* (* (cos (* -0.5 K)) (fabs J)) -2.0)
(cosh (asinh (* 0.5 (/ (fabs U) (fabs J))))))
(* 2.0 (* (fabs J) (* (fabs U) (sqrt (/ 0.25 (pow (fabs J) 2.0))))))))))double code(double J, double K, double U) {
double t_0 = cos((K / 2.0));
double tmp;
if ((((-2.0 * fabs(J)) * t_0) * sqrt((1.0 + pow((fabs(U) / ((2.0 * fabs(J)) * t_0)), 2.0)))) <= 5e+299) {
tmp = ((cos((-0.5 * K)) * fabs(J)) * -2.0) * cosh(asinh((0.5 * (fabs(U) / fabs(J)))));
} else {
tmp = 2.0 * (fabs(J) * (fabs(U) * sqrt((0.25 / pow(fabs(J), 2.0)))));
}
return copysign(1.0, J) * tmp;
}
def code(J, K, U): t_0 = math.cos((K / 2.0)) tmp = 0 if (((-2.0 * math.fabs(J)) * t_0) * math.sqrt((1.0 + math.pow((math.fabs(U) / ((2.0 * math.fabs(J)) * t_0)), 2.0)))) <= 5e+299: tmp = ((math.cos((-0.5 * K)) * math.fabs(J)) * -2.0) * math.cosh(math.asinh((0.5 * (math.fabs(U) / math.fabs(J))))) else: tmp = 2.0 * (math.fabs(J) * (math.fabs(U) * math.sqrt((0.25 / math.pow(math.fabs(J), 2.0))))) return math.copysign(1.0, J) * tmp
function code(J, K, U) t_0 = cos(Float64(K / 2.0)) tmp = 0.0 if (Float64(Float64(Float64(-2.0 * abs(J)) * t_0) * sqrt(Float64(1.0 + (Float64(abs(U) / Float64(Float64(2.0 * abs(J)) * t_0)) ^ 2.0)))) <= 5e+299) tmp = Float64(Float64(Float64(cos(Float64(-0.5 * K)) * abs(J)) * -2.0) * cosh(asinh(Float64(0.5 * Float64(abs(U) / abs(J)))))); else tmp = Float64(2.0 * Float64(abs(J) * Float64(abs(U) * sqrt(Float64(0.25 / (abs(J) ^ 2.0)))))); end return Float64(copysign(1.0, J) * tmp) end
function tmp_2 = code(J, K, U) t_0 = cos((K / 2.0)); tmp = 0.0; if ((((-2.0 * abs(J)) * t_0) * sqrt((1.0 + ((abs(U) / ((2.0 * abs(J)) * t_0)) ^ 2.0)))) <= 5e+299) tmp = ((cos((-0.5 * K)) * abs(J)) * -2.0) * cosh(asinh((0.5 * (abs(U) / abs(J))))); else tmp = 2.0 * (abs(J) * (abs(U) * sqrt((0.25 / (abs(J) ^ 2.0))))); end tmp_2 = (sign(J) * abs(1.0)) * tmp; end
code[J_, K_, U_] := Block[{t$95$0 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[(N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(N[Abs[U], $MachinePrecision] / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 5e+299], N[(N[(N[(N[Cos[N[(-0.5 * K), $MachinePrecision]], $MachinePrecision] * N[Abs[J], $MachinePrecision]), $MachinePrecision] * -2.0), $MachinePrecision] * N[Cosh[N[ArcSinh[N[(0.5 * N[(N[Abs[U], $MachinePrecision] / N[Abs[J], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(2.0 * N[(N[Abs[J], $MachinePrecision] * N[(N[Abs[U], $MachinePrecision] * N[Sqrt[N[(0.25 / N[Power[N[Abs[J], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]
\begin{array}{l}
t_0 := \cos \left(\frac{K}{2}\right)\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;\left(\left(-2 \cdot \left|J\right|\right) \cdot t\_0\right) \cdot \sqrt{1 + {\left(\frac{\left|U\right|}{\left(2 \cdot \left|J\right|\right) \cdot t\_0}\right)}^{2}} \leq 5 \cdot 10^{+299}:\\
\;\;\;\;\left(\left(\cos \left(-0.5 \cdot K\right) \cdot \left|J\right|\right) \cdot -2\right) \cdot \cosh \sinh^{-1} \left(0.5 \cdot \frac{\left|U\right|}{\left|J\right|}\right)\\
\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\left|J\right| \cdot \left(\left|U\right| \cdot \sqrt{\frac{0.25}{{\left(\left|J\right|\right)}^{2}}}\right)\right)\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-sqrt.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
cosh-asinh-revN/A
lower-cosh.f64N/A
lower-asinh.f6485.0%
lift-*.f64N/A
count-2-revN/A
lower-+.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
distribute-neg-frac2N/A
metadata-evalN/A
mult-flip-revN/A
*-commutativeN/A
lower-*.f64N/A
metadata-eval85.0%
Applied rewrites85.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-neg-outN/A
metadata-evalN/A
lift-*.f6485.0%
Applied rewrites85.0%
Taylor expanded in K around 0
lower-*.f64N/A
lower-/.f6472.0%
Applied rewrites72.0%
if 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
Taylor expanded in U around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
Applied rewrites12.9%
Taylor expanded in K around 0
lower-sqrt.f64N/A
lower-/.f64N/A
lower-pow.f6413.4%
Applied rewrites13.4%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (/ (fabs U) (fabs J))) (t_1 (cos (/ K 2.0))))
(*
(copysign 1.0 J)
(if (<=
(*
(* (* -2.0 (fabs J)) t_1)
(sqrt (+ 1.0 (pow (/ (fabs U) (* (* 2.0 (fabs J)) t_1)) 2.0))))
5e+299)
(*
(* (sqrt (- (/ (* t_0 t_0) 4.0) -1.0)) (* (fabs J) -2.0))
(cos (* -0.5 K)))
(* 2.0 (* (fabs J) (* (fabs U) (sqrt (/ 0.25 (pow (fabs J) 2.0))))))))))double code(double J, double K, double U) {
double t_0 = fabs(U) / fabs(J);
double t_1 = cos((K / 2.0));
double tmp;
if ((((-2.0 * fabs(J)) * t_1) * sqrt((1.0 + pow((fabs(U) / ((2.0 * fabs(J)) * t_1)), 2.0)))) <= 5e+299) {
tmp = (sqrt((((t_0 * t_0) / 4.0) - -1.0)) * (fabs(J) * -2.0)) * cos((-0.5 * K));
} else {
tmp = 2.0 * (fabs(J) * (fabs(U) * sqrt((0.25 / pow(fabs(J), 2.0)))));
}
return copysign(1.0, J) * tmp;
}
public static double code(double J, double K, double U) {
double t_0 = Math.abs(U) / Math.abs(J);
double t_1 = Math.cos((K / 2.0));
double tmp;
if ((((-2.0 * Math.abs(J)) * t_1) * Math.sqrt((1.0 + Math.pow((Math.abs(U) / ((2.0 * Math.abs(J)) * t_1)), 2.0)))) <= 5e+299) {
tmp = (Math.sqrt((((t_0 * t_0) / 4.0) - -1.0)) * (Math.abs(J) * -2.0)) * Math.cos((-0.5 * K));
} else {
tmp = 2.0 * (Math.abs(J) * (Math.abs(U) * Math.sqrt((0.25 / Math.pow(Math.abs(J), 2.0)))));
}
return Math.copySign(1.0, J) * tmp;
}
def code(J, K, U): t_0 = math.fabs(U) / math.fabs(J) t_1 = math.cos((K / 2.0)) tmp = 0 if (((-2.0 * math.fabs(J)) * t_1) * math.sqrt((1.0 + math.pow((math.fabs(U) / ((2.0 * math.fabs(J)) * t_1)), 2.0)))) <= 5e+299: tmp = (math.sqrt((((t_0 * t_0) / 4.0) - -1.0)) * (math.fabs(J) * -2.0)) * math.cos((-0.5 * K)) else: tmp = 2.0 * (math.fabs(J) * (math.fabs(U) * math.sqrt((0.25 / math.pow(math.fabs(J), 2.0))))) return math.copysign(1.0, J) * tmp
function code(J, K, U) t_0 = Float64(abs(U) / abs(J)) t_1 = cos(Float64(K / 2.0)) tmp = 0.0 if (Float64(Float64(Float64(-2.0 * abs(J)) * t_1) * sqrt(Float64(1.0 + (Float64(abs(U) / Float64(Float64(2.0 * abs(J)) * t_1)) ^ 2.0)))) <= 5e+299) tmp = Float64(Float64(sqrt(Float64(Float64(Float64(t_0 * t_0) / 4.0) - -1.0)) * Float64(abs(J) * -2.0)) * cos(Float64(-0.5 * K))); else tmp = Float64(2.0 * Float64(abs(J) * Float64(abs(U) * sqrt(Float64(0.25 / (abs(J) ^ 2.0)))))); end return Float64(copysign(1.0, J) * tmp) end
function tmp_2 = code(J, K, U) t_0 = abs(U) / abs(J); t_1 = cos((K / 2.0)); tmp = 0.0; if ((((-2.0 * abs(J)) * t_1) * sqrt((1.0 + ((abs(U) / ((2.0 * abs(J)) * t_1)) ^ 2.0)))) <= 5e+299) tmp = (sqrt((((t_0 * t_0) / 4.0) - -1.0)) * (abs(J) * -2.0)) * cos((-0.5 * K)); else tmp = 2.0 * (abs(J) * (abs(U) * sqrt((0.25 / (abs(J) ^ 2.0))))); end tmp_2 = (sign(J) * abs(1.0)) * tmp; end
code[J_, K_, U_] := Block[{t$95$0 = N[(N[Abs[U], $MachinePrecision] / N[Abs[J], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[(N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(N[Abs[U], $MachinePrecision] / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 5e+299], N[(N[(N[Sqrt[N[(N[(N[(t$95$0 * t$95$0), $MachinePrecision] / 4.0), $MachinePrecision] - -1.0), $MachinePrecision]], $MachinePrecision] * N[(N[Abs[J], $MachinePrecision] * -2.0), $MachinePrecision]), $MachinePrecision] * N[Cos[N[(-0.5 * K), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(2.0 * N[(N[Abs[J], $MachinePrecision] * N[(N[Abs[U], $MachinePrecision] * N[Sqrt[N[(0.25 / N[Power[N[Abs[J], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]]
\begin{array}{l}
t_0 := \frac{\left|U\right|}{\left|J\right|}\\
t_1 := \cos \left(\frac{K}{2}\right)\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;\left(\left(-2 \cdot \left|J\right|\right) \cdot t\_1\right) \cdot \sqrt{1 + {\left(\frac{\left|U\right|}{\left(2 \cdot \left|J\right|\right) \cdot t\_1}\right)}^{2}} \leq 5 \cdot 10^{+299}:\\
\;\;\;\;\left(\sqrt{\frac{t\_0 \cdot t\_0}{4} - -1} \cdot \left(\left|J\right| \cdot -2\right)\right) \cdot \cos \left(-0.5 \cdot K\right)\\
\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\left|J\right| \cdot \left(\left|U\right| \cdot \sqrt{\frac{0.25}{{\left(\left|J\right|\right)}^{2}}}\right)\right)\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lift-/.f64N/A
frac-timesN/A
associate-/l*N/A
lower-fma.f64N/A
Applied rewrites73.5%
Applied rewrites73.5%
Taylor expanded in K around 0
Applied rewrites65.0%
if 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
Taylor expanded in U around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
Applied rewrites12.9%
Taylor expanded in K around 0
lower-sqrt.f64N/A
lower-/.f64N/A
lower-pow.f6413.4%
Applied rewrites13.4%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (* -2.0 (fabs J)))
(t_1 (cos (/ K 2.0)))
(t_2 (* t_0 t_1))
(t_3
(*
t_2
(sqrt (+ 1.0 (pow (/ (fabs U) (* (* 2.0 (fabs J)) t_1)) 2.0))))))
(*
(copysign 1.0 J)
(if (<= t_3 -1e-128)
(*
t_2
(sqrt (+ 1.0 (* (* (fabs U) (/ (fabs U) (* (fabs J) (fabs J)))) 0.25))))
(if (<= t_3 5e+299)
(* (cos (* 0.5 K)) t_0)
(*
2.0
(* (fabs J) (* (fabs U) (sqrt (/ 0.25 (pow (fabs J) 2.0)))))))))))double code(double J, double K, double U) {
double t_0 = -2.0 * fabs(J);
double t_1 = cos((K / 2.0));
double t_2 = t_0 * t_1;
double t_3 = t_2 * sqrt((1.0 + pow((fabs(U) / ((2.0 * fabs(J)) * t_1)), 2.0)));
double tmp;
if (t_3 <= -1e-128) {
tmp = t_2 * sqrt((1.0 + ((fabs(U) * (fabs(U) / (fabs(J) * fabs(J)))) * 0.25)));
} else if (t_3 <= 5e+299) {
tmp = cos((0.5 * K)) * t_0;
} else {
tmp = 2.0 * (fabs(J) * (fabs(U) * sqrt((0.25 / pow(fabs(J), 2.0)))));
}
return copysign(1.0, J) * tmp;
}
public static double code(double J, double K, double U) {
double t_0 = -2.0 * Math.abs(J);
double t_1 = Math.cos((K / 2.0));
double t_2 = t_0 * t_1;
double t_3 = t_2 * Math.sqrt((1.0 + Math.pow((Math.abs(U) / ((2.0 * Math.abs(J)) * t_1)), 2.0)));
double tmp;
if (t_3 <= -1e-128) {
tmp = t_2 * Math.sqrt((1.0 + ((Math.abs(U) * (Math.abs(U) / (Math.abs(J) * Math.abs(J)))) * 0.25)));
} else if (t_3 <= 5e+299) {
tmp = Math.cos((0.5 * K)) * t_0;
} else {
tmp = 2.0 * (Math.abs(J) * (Math.abs(U) * Math.sqrt((0.25 / Math.pow(Math.abs(J), 2.0)))));
}
return Math.copySign(1.0, J) * tmp;
}
def code(J, K, U): t_0 = -2.0 * math.fabs(J) t_1 = math.cos((K / 2.0)) t_2 = t_0 * t_1 t_3 = t_2 * math.sqrt((1.0 + math.pow((math.fabs(U) / ((2.0 * math.fabs(J)) * t_1)), 2.0))) tmp = 0 if t_3 <= -1e-128: tmp = t_2 * math.sqrt((1.0 + ((math.fabs(U) * (math.fabs(U) / (math.fabs(J) * math.fabs(J)))) * 0.25))) elif t_3 <= 5e+299: tmp = math.cos((0.5 * K)) * t_0 else: tmp = 2.0 * (math.fabs(J) * (math.fabs(U) * math.sqrt((0.25 / math.pow(math.fabs(J), 2.0))))) return math.copysign(1.0, J) * tmp
function code(J, K, U) t_0 = Float64(-2.0 * abs(J)) t_1 = cos(Float64(K / 2.0)) t_2 = Float64(t_0 * t_1) t_3 = Float64(t_2 * sqrt(Float64(1.0 + (Float64(abs(U) / Float64(Float64(2.0 * abs(J)) * t_1)) ^ 2.0)))) tmp = 0.0 if (t_3 <= -1e-128) tmp = Float64(t_2 * sqrt(Float64(1.0 + Float64(Float64(abs(U) * Float64(abs(U) / Float64(abs(J) * abs(J)))) * 0.25)))); elseif (t_3 <= 5e+299) tmp = Float64(cos(Float64(0.5 * K)) * t_0); else tmp = Float64(2.0 * Float64(abs(J) * Float64(abs(U) * sqrt(Float64(0.25 / (abs(J) ^ 2.0)))))); end return Float64(copysign(1.0, J) * tmp) end
function tmp_2 = code(J, K, U) t_0 = -2.0 * abs(J); t_1 = cos((K / 2.0)); t_2 = t_0 * t_1; t_3 = t_2 * sqrt((1.0 + ((abs(U) / ((2.0 * abs(J)) * t_1)) ^ 2.0))); tmp = 0.0; if (t_3 <= -1e-128) tmp = t_2 * sqrt((1.0 + ((abs(U) * (abs(U) / (abs(J) * abs(J)))) * 0.25))); elseif (t_3 <= 5e+299) tmp = cos((0.5 * K)) * t_0; else tmp = 2.0 * (abs(J) * (abs(U) * sqrt((0.25 / (abs(J) ^ 2.0))))); end tmp_2 = (sign(J) * abs(1.0)) * tmp; end
code[J_, K_, U_] := Block[{t$95$0 = N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(t$95$0 * t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 * N[Sqrt[N[(1.0 + N[Power[N[(N[Abs[U], $MachinePrecision] / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[t$95$3, -1e-128], N[(t$95$2 * N[Sqrt[N[(1.0 + N[(N[(N[Abs[U], $MachinePrecision] * N[(N[Abs[U], $MachinePrecision] / N[(N[Abs[J], $MachinePrecision] * N[Abs[J], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 0.25), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 5e+299], N[(N[Cos[N[(0.5 * K), $MachinePrecision]], $MachinePrecision] * t$95$0), $MachinePrecision], N[(2.0 * N[(N[Abs[J], $MachinePrecision] * N[(N[Abs[U], $MachinePrecision] * N[Sqrt[N[(0.25 / N[Power[N[Abs[J], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := -2 \cdot \left|J\right|\\
t_1 := \cos \left(\frac{K}{2}\right)\\
t_2 := t\_0 \cdot t\_1\\
t_3 := t\_2 \cdot \sqrt{1 + {\left(\frac{\left|U\right|}{\left(2 \cdot \left|J\right|\right) \cdot t\_1}\right)}^{2}}\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;t\_3 \leq -1 \cdot 10^{-128}:\\
\;\;\;\;t\_2 \cdot \sqrt{1 + \left(\left|U\right| \cdot \frac{\left|U\right|}{\left|J\right| \cdot \left|J\right|}\right) \cdot 0.25}\\
\mathbf{elif}\;t\_3 \leq 5 \cdot 10^{+299}:\\
\;\;\;\;\cos \left(0.5 \cdot K\right) \cdot t\_0\\
\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\left|J\right| \cdot \left(\left|U\right| \cdot \sqrt{\frac{0.25}{{\left(\left|J\right|\right)}^{2}}}\right)\right)\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < -1.0000000000000001e-128Initial program 73.6%
Taylor expanded in K around 0
lower-*.f64N/A
lower-/.f64N/A
lower-pow.f64N/A
lower-pow.f6452.6%
Applied rewrites52.6%
lift-*.f64N/A
*-commutativeN/A
lower-*.f6452.6%
lift-/.f64N/A
lift-pow.f64N/A
unpow2N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f6457.6%
lift-pow.f64N/A
unpow2N/A
lower-*.f6457.6%
Applied rewrites57.6%
if -1.0000000000000001e-128 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-sqrt.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
cosh-asinh-revN/A
lower-cosh.f64N/A
lower-asinh.f6485.0%
lift-*.f64N/A
count-2-revN/A
lower-+.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
distribute-neg-frac2N/A
metadata-evalN/A
mult-flip-revN/A
*-commutativeN/A
lower-*.f64N/A
metadata-eval85.0%
Applied rewrites85.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-neg-outN/A
metadata-evalN/A
lift-*.f6485.0%
Applied rewrites85.0%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites85.0%
Taylor expanded in J around inf
lower-cos.f64N/A
lower-*.f6453.3%
Applied rewrites53.3%
if 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
Taylor expanded in U around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
Applied rewrites12.9%
Taylor expanded in K around 0
lower-sqrt.f64N/A
lower-/.f64N/A
lower-pow.f6413.4%
Applied rewrites13.4%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (cos (* 0.5 K)))
(t_1 (cos (/ K 2.0)))
(t_2 (* -2.0 (fabs J)))
(t_3
(*
(* t_2 t_1)
(sqrt (+ 1.0 (pow (/ (fabs U) (* (* 2.0 (fabs J)) t_1)) 2.0)))))
(t_4 (* t_0 t_2)))
(*
(copysign 1.0 J)
(if (<= t_3 -5e+157)
t_4
(if (<= t_3 -1e-128)
(*
(* (* -2.0 t_0) (fabs J))
(sqrt
(- (/ (* (* (fabs U) (fabs U)) 0.25) (* (fabs J) (fabs J))) -1.0)))
(if (<= t_3 5e+299)
t_4
(*
2.0
(* (fabs J) (* (fabs U) (sqrt (/ 0.25 (pow (fabs J) 2.0))))))))))))double code(double J, double K, double U) {
double t_0 = cos((0.5 * K));
double t_1 = cos((K / 2.0));
double t_2 = -2.0 * fabs(J);
double t_3 = (t_2 * t_1) * sqrt((1.0 + pow((fabs(U) / ((2.0 * fabs(J)) * t_1)), 2.0)));
double t_4 = t_0 * t_2;
double tmp;
if (t_3 <= -5e+157) {
tmp = t_4;
} else if (t_3 <= -1e-128) {
tmp = ((-2.0 * t_0) * fabs(J)) * sqrt(((((fabs(U) * fabs(U)) * 0.25) / (fabs(J) * fabs(J))) - -1.0));
} else if (t_3 <= 5e+299) {
tmp = t_4;
} else {
tmp = 2.0 * (fabs(J) * (fabs(U) * sqrt((0.25 / pow(fabs(J), 2.0)))));
}
return copysign(1.0, J) * tmp;
}
public static double code(double J, double K, double U) {
double t_0 = Math.cos((0.5 * K));
double t_1 = Math.cos((K / 2.0));
double t_2 = -2.0 * Math.abs(J);
double t_3 = (t_2 * t_1) * Math.sqrt((1.0 + Math.pow((Math.abs(U) / ((2.0 * Math.abs(J)) * t_1)), 2.0)));
double t_4 = t_0 * t_2;
double tmp;
if (t_3 <= -5e+157) {
tmp = t_4;
} else if (t_3 <= -1e-128) {
tmp = ((-2.0 * t_0) * Math.abs(J)) * Math.sqrt(((((Math.abs(U) * Math.abs(U)) * 0.25) / (Math.abs(J) * Math.abs(J))) - -1.0));
} else if (t_3 <= 5e+299) {
tmp = t_4;
} else {
tmp = 2.0 * (Math.abs(J) * (Math.abs(U) * Math.sqrt((0.25 / Math.pow(Math.abs(J), 2.0)))));
}
return Math.copySign(1.0, J) * tmp;
}
def code(J, K, U): t_0 = math.cos((0.5 * K)) t_1 = math.cos((K / 2.0)) t_2 = -2.0 * math.fabs(J) t_3 = (t_2 * t_1) * math.sqrt((1.0 + math.pow((math.fabs(U) / ((2.0 * math.fabs(J)) * t_1)), 2.0))) t_4 = t_0 * t_2 tmp = 0 if t_3 <= -5e+157: tmp = t_4 elif t_3 <= -1e-128: tmp = ((-2.0 * t_0) * math.fabs(J)) * math.sqrt(((((math.fabs(U) * math.fabs(U)) * 0.25) / (math.fabs(J) * math.fabs(J))) - -1.0)) elif t_3 <= 5e+299: tmp = t_4 else: tmp = 2.0 * (math.fabs(J) * (math.fabs(U) * math.sqrt((0.25 / math.pow(math.fabs(J), 2.0))))) return math.copysign(1.0, J) * tmp
function code(J, K, U) t_0 = cos(Float64(0.5 * K)) t_1 = cos(Float64(K / 2.0)) t_2 = Float64(-2.0 * abs(J)) t_3 = Float64(Float64(t_2 * t_1) * sqrt(Float64(1.0 + (Float64(abs(U) / Float64(Float64(2.0 * abs(J)) * t_1)) ^ 2.0)))) t_4 = Float64(t_0 * t_2) tmp = 0.0 if (t_3 <= -5e+157) tmp = t_4; elseif (t_3 <= -1e-128) tmp = Float64(Float64(Float64(-2.0 * t_0) * abs(J)) * sqrt(Float64(Float64(Float64(Float64(abs(U) * abs(U)) * 0.25) / Float64(abs(J) * abs(J))) - -1.0))); elseif (t_3 <= 5e+299) tmp = t_4; else tmp = Float64(2.0 * Float64(abs(J) * Float64(abs(U) * sqrt(Float64(0.25 / (abs(J) ^ 2.0)))))); end return Float64(copysign(1.0, J) * tmp) end
function tmp_2 = code(J, K, U) t_0 = cos((0.5 * K)); t_1 = cos((K / 2.0)); t_2 = -2.0 * abs(J); t_3 = (t_2 * t_1) * sqrt((1.0 + ((abs(U) / ((2.0 * abs(J)) * t_1)) ^ 2.0))); t_4 = t_0 * t_2; tmp = 0.0; if (t_3 <= -5e+157) tmp = t_4; elseif (t_3 <= -1e-128) tmp = ((-2.0 * t_0) * abs(J)) * sqrt(((((abs(U) * abs(U)) * 0.25) / (abs(J) * abs(J))) - -1.0)); elseif (t_3 <= 5e+299) tmp = t_4; else tmp = 2.0 * (abs(J) * (abs(U) * sqrt((0.25 / (abs(J) ^ 2.0))))); end tmp_2 = (sign(J) * abs(1.0)) * tmp; end
code[J_, K_, U_] := Block[{t$95$0 = N[Cos[N[(0.5 * K), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(t$95$2 * t$95$1), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(N[Abs[U], $MachinePrecision] / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$0 * t$95$2), $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[t$95$3, -5e+157], t$95$4, If[LessEqual[t$95$3, -1e-128], N[(N[(N[(-2.0 * t$95$0), $MachinePrecision] * N[Abs[J], $MachinePrecision]), $MachinePrecision] * N[Sqrt[N[(N[(N[(N[(N[Abs[U], $MachinePrecision] * N[Abs[U], $MachinePrecision]), $MachinePrecision] * 0.25), $MachinePrecision] / N[(N[Abs[J], $MachinePrecision] * N[Abs[J], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - -1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 5e+299], t$95$4, N[(2.0 * N[(N[Abs[J], $MachinePrecision] * N[(N[Abs[U], $MachinePrecision] * N[Sqrt[N[(0.25 / N[Power[N[Abs[J], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]), $MachinePrecision]]]]]]
\begin{array}{l}
t_0 := \cos \left(0.5 \cdot K\right)\\
t_1 := \cos \left(\frac{K}{2}\right)\\
t_2 := -2 \cdot \left|J\right|\\
t_3 := \left(t\_2 \cdot t\_1\right) \cdot \sqrt{1 + {\left(\frac{\left|U\right|}{\left(2 \cdot \left|J\right|\right) \cdot t\_1}\right)}^{2}}\\
t_4 := t\_0 \cdot t\_2\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;t\_3 \leq -5 \cdot 10^{+157}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;t\_3 \leq -1 \cdot 10^{-128}:\\
\;\;\;\;\left(\left(-2 \cdot t\_0\right) \cdot \left|J\right|\right) \cdot \sqrt{\frac{\left(\left|U\right| \cdot \left|U\right|\right) \cdot 0.25}{\left|J\right| \cdot \left|J\right|} - -1}\\
\mathbf{elif}\;t\_3 \leq 5 \cdot 10^{+299}:\\
\;\;\;\;t\_4\\
\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\left|J\right| \cdot \left(\left|U\right| \cdot \sqrt{\frac{0.25}{{\left(\left|J\right|\right)}^{2}}}\right)\right)\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < -4.9999999999999998e157 or -1.0000000000000001e-128 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-sqrt.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
cosh-asinh-revN/A
lower-cosh.f64N/A
lower-asinh.f6485.0%
lift-*.f64N/A
count-2-revN/A
lower-+.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
distribute-neg-frac2N/A
metadata-evalN/A
mult-flip-revN/A
*-commutativeN/A
lower-*.f64N/A
metadata-eval85.0%
Applied rewrites85.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-neg-outN/A
metadata-evalN/A
lift-*.f6485.0%
Applied rewrites85.0%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites85.0%
Taylor expanded in J around inf
lower-cos.f64N/A
lower-*.f6453.3%
Applied rewrites53.3%
if -4.9999999999999998e157 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < -1.0000000000000001e-128Initial program 73.6%
Taylor expanded in K around 0
lower-*.f64N/A
lower-/.f64N/A
lower-pow.f64N/A
lower-pow.f6452.6%
Applied rewrites52.6%
Applied rewrites52.6%
if 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
Taylor expanded in U around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
Applied rewrites12.9%
Taylor expanded in K around 0
lower-sqrt.f64N/A
lower-/.f64N/A
lower-pow.f6413.4%
Applied rewrites13.4%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (pow (fabs J) 2.0))
(t_1 (cos (/ K 2.0)))
(t_2 (* -2.0 (fabs J)))
(t_3
(*
(* t_2 t_1)
(sqrt (+ 1.0 (pow (/ (fabs U) (* (* 2.0 (fabs J)) t_1)) 2.0)))))
(t_4 (* (cos (* 0.5 K)) t_2)))
(*
(copysign 1.0 J)
(if (<= t_3 -3e+102)
t_4
(if (<= t_3 -1e-76)
(*
-2.0
(* (fabs J) (sqrt (+ 1.0 (* 0.25 (/ (pow (fabs U) 2.0) t_0))))))
(if (<= t_3 5e+299)
t_4
(* 2.0 (* (fabs J) (* (fabs U) (sqrt (/ 0.25 t_0)))))))))))double code(double J, double K, double U) {
double t_0 = pow(fabs(J), 2.0);
double t_1 = cos((K / 2.0));
double t_2 = -2.0 * fabs(J);
double t_3 = (t_2 * t_1) * sqrt((1.0 + pow((fabs(U) / ((2.0 * fabs(J)) * t_1)), 2.0)));
double t_4 = cos((0.5 * K)) * t_2;
double tmp;
if (t_3 <= -3e+102) {
tmp = t_4;
} else if (t_3 <= -1e-76) {
tmp = -2.0 * (fabs(J) * sqrt((1.0 + (0.25 * (pow(fabs(U), 2.0) / t_0)))));
} else if (t_3 <= 5e+299) {
tmp = t_4;
} else {
tmp = 2.0 * (fabs(J) * (fabs(U) * sqrt((0.25 / t_0))));
}
return copysign(1.0, J) * tmp;
}
public static double code(double J, double K, double U) {
double t_0 = Math.pow(Math.abs(J), 2.0);
double t_1 = Math.cos((K / 2.0));
double t_2 = -2.0 * Math.abs(J);
double t_3 = (t_2 * t_1) * Math.sqrt((1.0 + Math.pow((Math.abs(U) / ((2.0 * Math.abs(J)) * t_1)), 2.0)));
double t_4 = Math.cos((0.5 * K)) * t_2;
double tmp;
if (t_3 <= -3e+102) {
tmp = t_4;
} else if (t_3 <= -1e-76) {
tmp = -2.0 * (Math.abs(J) * Math.sqrt((1.0 + (0.25 * (Math.pow(Math.abs(U), 2.0) / t_0)))));
} else if (t_3 <= 5e+299) {
tmp = t_4;
} else {
tmp = 2.0 * (Math.abs(J) * (Math.abs(U) * Math.sqrt((0.25 / t_0))));
}
return Math.copySign(1.0, J) * tmp;
}
def code(J, K, U): t_0 = math.pow(math.fabs(J), 2.0) t_1 = math.cos((K / 2.0)) t_2 = -2.0 * math.fabs(J) t_3 = (t_2 * t_1) * math.sqrt((1.0 + math.pow((math.fabs(U) / ((2.0 * math.fabs(J)) * t_1)), 2.0))) t_4 = math.cos((0.5 * K)) * t_2 tmp = 0 if t_3 <= -3e+102: tmp = t_4 elif t_3 <= -1e-76: tmp = -2.0 * (math.fabs(J) * math.sqrt((1.0 + (0.25 * (math.pow(math.fabs(U), 2.0) / t_0))))) elif t_3 <= 5e+299: tmp = t_4 else: tmp = 2.0 * (math.fabs(J) * (math.fabs(U) * math.sqrt((0.25 / t_0)))) return math.copysign(1.0, J) * tmp
function code(J, K, U) t_0 = abs(J) ^ 2.0 t_1 = cos(Float64(K / 2.0)) t_2 = Float64(-2.0 * abs(J)) t_3 = Float64(Float64(t_2 * t_1) * sqrt(Float64(1.0 + (Float64(abs(U) / Float64(Float64(2.0 * abs(J)) * t_1)) ^ 2.0)))) t_4 = Float64(cos(Float64(0.5 * K)) * t_2) tmp = 0.0 if (t_3 <= -3e+102) tmp = t_4; elseif (t_3 <= -1e-76) tmp = Float64(-2.0 * Float64(abs(J) * sqrt(Float64(1.0 + Float64(0.25 * Float64((abs(U) ^ 2.0) / t_0)))))); elseif (t_3 <= 5e+299) tmp = t_4; else tmp = Float64(2.0 * Float64(abs(J) * Float64(abs(U) * sqrt(Float64(0.25 / t_0))))); end return Float64(copysign(1.0, J) * tmp) end
function tmp_2 = code(J, K, U) t_0 = abs(J) ^ 2.0; t_1 = cos((K / 2.0)); t_2 = -2.0 * abs(J); t_3 = (t_2 * t_1) * sqrt((1.0 + ((abs(U) / ((2.0 * abs(J)) * t_1)) ^ 2.0))); t_4 = cos((0.5 * K)) * t_2; tmp = 0.0; if (t_3 <= -3e+102) tmp = t_4; elseif (t_3 <= -1e-76) tmp = -2.0 * (abs(J) * sqrt((1.0 + (0.25 * ((abs(U) ^ 2.0) / t_0))))); elseif (t_3 <= 5e+299) tmp = t_4; else tmp = 2.0 * (abs(J) * (abs(U) * sqrt((0.25 / t_0)))); end tmp_2 = (sign(J) * abs(1.0)) * tmp; end
code[J_, K_, U_] := Block[{t$95$0 = N[Power[N[Abs[J], $MachinePrecision], 2.0], $MachinePrecision]}, Block[{t$95$1 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(t$95$2 * t$95$1), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(N[Abs[U], $MachinePrecision] / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[Cos[N[(0.5 * K), $MachinePrecision]], $MachinePrecision] * t$95$2), $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[t$95$3, -3e+102], t$95$4, If[LessEqual[t$95$3, -1e-76], N[(-2.0 * N[(N[Abs[J], $MachinePrecision] * N[Sqrt[N[(1.0 + N[(0.25 * N[(N[Power[N[Abs[U], $MachinePrecision], 2.0], $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 5e+299], t$95$4, N[(2.0 * N[(N[Abs[J], $MachinePrecision] * N[(N[Abs[U], $MachinePrecision] * N[Sqrt[N[(0.25 / t$95$0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]), $MachinePrecision]]]]]]
\begin{array}{l}
t_0 := {\left(\left|J\right|\right)}^{2}\\
t_1 := \cos \left(\frac{K}{2}\right)\\
t_2 := -2 \cdot \left|J\right|\\
t_3 := \left(t\_2 \cdot t\_1\right) \cdot \sqrt{1 + {\left(\frac{\left|U\right|}{\left(2 \cdot \left|J\right|\right) \cdot t\_1}\right)}^{2}}\\
t_4 := \cos \left(0.5 \cdot K\right) \cdot t\_2\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;t\_3 \leq -3 \cdot 10^{+102}:\\
\;\;\;\;t\_4\\
\mathbf{elif}\;t\_3 \leq -1 \cdot 10^{-76}:\\
\;\;\;\;-2 \cdot \left(\left|J\right| \cdot \sqrt{1 + 0.25 \cdot \frac{{\left(\left|U\right|\right)}^{2}}{t\_0}}\right)\\
\mathbf{elif}\;t\_3 \leq 5 \cdot 10^{+299}:\\
\;\;\;\;t\_4\\
\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\left|J\right| \cdot \left(\left|U\right| \cdot \sqrt{\frac{0.25}{t\_0}}\right)\right)\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < -2.9999999999999998e102 or -9.9999999999999993e-77 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-sqrt.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
cosh-asinh-revN/A
lower-cosh.f64N/A
lower-asinh.f6485.0%
lift-*.f64N/A
count-2-revN/A
lower-+.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
distribute-neg-frac2N/A
metadata-evalN/A
mult-flip-revN/A
*-commutativeN/A
lower-*.f64N/A
metadata-eval85.0%
Applied rewrites85.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-neg-outN/A
metadata-evalN/A
lift-*.f6485.0%
Applied rewrites85.0%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites85.0%
Taylor expanded in J around inf
lower-cos.f64N/A
lower-*.f6453.3%
Applied rewrites53.3%
if -2.9999999999999998e102 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < -9.9999999999999993e-77Initial program 73.6%
Taylor expanded in K around 0
lower-*.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-+.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-pow.f64N/A
lower-pow.f6432.4%
Applied rewrites32.4%
if 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
Taylor expanded in U around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
Applied rewrites12.9%
Taylor expanded in K around 0
lower-sqrt.f64N/A
lower-/.f64N/A
lower-pow.f6413.4%
Applied rewrites13.4%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (* -2.0 (fabs J))) (t_1 (cos (/ K 2.0))))
(*
(copysign 1.0 J)
(if (<=
(*
(* t_0 t_1)
(sqrt (+ 1.0 (pow (/ (fabs U) (* (* 2.0 (fabs J)) t_1)) 2.0))))
5e+299)
(* (cos (* 0.5 K)) t_0)
(* 2.0 (* (fabs J) (* (fabs U) (sqrt (/ 0.25 (pow (fabs J) 2.0))))))))))double code(double J, double K, double U) {
double t_0 = -2.0 * fabs(J);
double t_1 = cos((K / 2.0));
double tmp;
if (((t_0 * t_1) * sqrt((1.0 + pow((fabs(U) / ((2.0 * fabs(J)) * t_1)), 2.0)))) <= 5e+299) {
tmp = cos((0.5 * K)) * t_0;
} else {
tmp = 2.0 * (fabs(J) * (fabs(U) * sqrt((0.25 / pow(fabs(J), 2.0)))));
}
return copysign(1.0, J) * tmp;
}
public static double code(double J, double K, double U) {
double t_0 = -2.0 * Math.abs(J);
double t_1 = Math.cos((K / 2.0));
double tmp;
if (((t_0 * t_1) * Math.sqrt((1.0 + Math.pow((Math.abs(U) / ((2.0 * Math.abs(J)) * t_1)), 2.0)))) <= 5e+299) {
tmp = Math.cos((0.5 * K)) * t_0;
} else {
tmp = 2.0 * (Math.abs(J) * (Math.abs(U) * Math.sqrt((0.25 / Math.pow(Math.abs(J), 2.0)))));
}
return Math.copySign(1.0, J) * tmp;
}
def code(J, K, U): t_0 = -2.0 * math.fabs(J) t_1 = math.cos((K / 2.0)) tmp = 0 if ((t_0 * t_1) * math.sqrt((1.0 + math.pow((math.fabs(U) / ((2.0 * math.fabs(J)) * t_1)), 2.0)))) <= 5e+299: tmp = math.cos((0.5 * K)) * t_0 else: tmp = 2.0 * (math.fabs(J) * (math.fabs(U) * math.sqrt((0.25 / math.pow(math.fabs(J), 2.0))))) return math.copysign(1.0, J) * tmp
function code(J, K, U) t_0 = Float64(-2.0 * abs(J)) t_1 = cos(Float64(K / 2.0)) tmp = 0.0 if (Float64(Float64(t_0 * t_1) * sqrt(Float64(1.0 + (Float64(abs(U) / Float64(Float64(2.0 * abs(J)) * t_1)) ^ 2.0)))) <= 5e+299) tmp = Float64(cos(Float64(0.5 * K)) * t_0); else tmp = Float64(2.0 * Float64(abs(J) * Float64(abs(U) * sqrt(Float64(0.25 / (abs(J) ^ 2.0)))))); end return Float64(copysign(1.0, J) * tmp) end
function tmp_2 = code(J, K, U) t_0 = -2.0 * abs(J); t_1 = cos((K / 2.0)); tmp = 0.0; if (((t_0 * t_1) * sqrt((1.0 + ((abs(U) / ((2.0 * abs(J)) * t_1)) ^ 2.0)))) <= 5e+299) tmp = cos((0.5 * K)) * t_0; else tmp = 2.0 * (abs(J) * (abs(U) * sqrt((0.25 / (abs(J) ^ 2.0))))); end tmp_2 = (sign(J) * abs(1.0)) * tmp; end
code[J_, K_, U_] := Block[{t$95$0 = N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[(t$95$0 * t$95$1), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(N[Abs[U], $MachinePrecision] / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 5e+299], N[(N[Cos[N[(0.5 * K), $MachinePrecision]], $MachinePrecision] * t$95$0), $MachinePrecision], N[(2.0 * N[(N[Abs[J], $MachinePrecision] * N[(N[Abs[U], $MachinePrecision] * N[Sqrt[N[(0.25 / N[Power[N[Abs[J], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]]
\begin{array}{l}
t_0 := -2 \cdot \left|J\right|\\
t_1 := \cos \left(\frac{K}{2}\right)\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;\left(t\_0 \cdot t\_1\right) \cdot \sqrt{1 + {\left(\frac{\left|U\right|}{\left(2 \cdot \left|J\right|\right) \cdot t\_1}\right)}^{2}} \leq 5 \cdot 10^{+299}:\\
\;\;\;\;\cos \left(0.5 \cdot K\right) \cdot t\_0\\
\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\left|J\right| \cdot \left(\left|U\right| \cdot \sqrt{\frac{0.25}{{\left(\left|J\right|\right)}^{2}}}\right)\right)\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < 5.0000000000000003e299Initial program 73.6%
lift-sqrt.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-pow.f64N/A
unpow2N/A
cosh-asinh-revN/A
lower-cosh.f64N/A
lower-asinh.f6485.0%
lift-*.f64N/A
count-2-revN/A
lower-+.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
distribute-neg-frac2N/A
metadata-evalN/A
mult-flip-revN/A
*-commutativeN/A
lower-*.f64N/A
metadata-eval85.0%
Applied rewrites85.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6485.0%
lift-cos.f64N/A
cos-neg-revN/A
lower-cos.f64N/A
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-neg-outN/A
metadata-evalN/A
lift-*.f6485.0%
Applied rewrites85.0%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites85.0%
Taylor expanded in J around inf
lower-cos.f64N/A
lower-*.f6453.3%
Applied rewrites53.3%
if 5.0000000000000003e299 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
Taylor expanded in U around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
Applied rewrites12.9%
Taylor expanded in K around 0
lower-sqrt.f64N/A
lower-/.f64N/A
lower-pow.f6413.4%
Applied rewrites13.4%
(FPCore (J K U)
:precision binary64
(let* ((t_0 (cos (/ K 2.0))))
(*
(copysign 1.0 J)
(if (<=
(*
(* (* -2.0 (fabs J)) t_0)
(sqrt (+ 1.0 (pow (/ (fabs U) (* (* 2.0 (fabs J)) t_0)) 2.0))))
-5e-232)
(*
(*
(*
(fma (fma 0.0026041666666666665 (* K K) -0.125) (* K K) 1.0)
(fabs J))
-2.0)
1.0)
(* 2.0 (* (fabs J) (* (fabs U) (sqrt (/ 0.25 (pow (fabs J) 2.0))))))))))double code(double J, double K, double U) {
double t_0 = cos((K / 2.0));
double tmp;
if ((((-2.0 * fabs(J)) * t_0) * sqrt((1.0 + pow((fabs(U) / ((2.0 * fabs(J)) * t_0)), 2.0)))) <= -5e-232) {
tmp = ((fma(fma(0.0026041666666666665, (K * K), -0.125), (K * K), 1.0) * fabs(J)) * -2.0) * 1.0;
} else {
tmp = 2.0 * (fabs(J) * (fabs(U) * sqrt((0.25 / pow(fabs(J), 2.0)))));
}
return copysign(1.0, J) * tmp;
}
function code(J, K, U) t_0 = cos(Float64(K / 2.0)) tmp = 0.0 if (Float64(Float64(Float64(-2.0 * abs(J)) * t_0) * sqrt(Float64(1.0 + (Float64(abs(U) / Float64(Float64(2.0 * abs(J)) * t_0)) ^ 2.0)))) <= -5e-232) tmp = Float64(Float64(Float64(fma(fma(0.0026041666666666665, Float64(K * K), -0.125), Float64(K * K), 1.0) * abs(J)) * -2.0) * 1.0); else tmp = Float64(2.0 * Float64(abs(J) * Float64(abs(U) * sqrt(Float64(0.25 / (abs(J) ^ 2.0)))))); end return Float64(copysign(1.0, J) * tmp) end
code[J_, K_, U_] := Block[{t$95$0 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, N[(N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision] * If[LessEqual[N[(N[(N[(-2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision] * N[Sqrt[N[(1.0 + N[Power[N[(N[Abs[U], $MachinePrecision] / N[(N[(2.0 * N[Abs[J], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], -5e-232], N[(N[(N[(N[(N[(0.0026041666666666665 * N[(K * K), $MachinePrecision] + -0.125), $MachinePrecision] * N[(K * K), $MachinePrecision] + 1.0), $MachinePrecision] * N[Abs[J], $MachinePrecision]), $MachinePrecision] * -2.0), $MachinePrecision] * 1.0), $MachinePrecision], N[(2.0 * N[(N[Abs[J], $MachinePrecision] * N[(N[Abs[U], $MachinePrecision] * N[Sqrt[N[(0.25 / N[Power[N[Abs[J], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]
\begin{array}{l}
t_0 := \cos \left(\frac{K}{2}\right)\\
\mathsf{copysign}\left(1, J\right) \cdot \begin{array}{l}
\mathbf{if}\;\left(\left(-2 \cdot \left|J\right|\right) \cdot t\_0\right) \cdot \sqrt{1 + {\left(\frac{\left|U\right|}{\left(2 \cdot \left|J\right|\right) \cdot t\_0}\right)}^{2}} \leq -5 \cdot 10^{-232}:\\
\;\;\;\;\left(\left(\mathsf{fma}\left(\mathsf{fma}\left(0.0026041666666666665, K \cdot K, -0.125\right), K \cdot K, 1\right) \cdot \left|J\right|\right) \cdot -2\right) \cdot 1\\
\mathbf{else}:\\
\;\;\;\;2 \cdot \left(\left|J\right| \cdot \left(\left|U\right| \cdot \sqrt{\frac{0.25}{{\left(\left|J\right|\right)}^{2}}}\right)\right)\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) < -4.9999999999999999e-232Initial program 73.6%
Taylor expanded in J around inf
Applied rewrites53.3%
Taylor expanded in K around 0
lower-+.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower--.f64N/A
lower-*.f64N/A
lower-pow.f6427.3%
Applied rewrites27.3%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-*.f64N/A
Applied rewrites27.3%
if -4.9999999999999999e-232 < (*.f64 (*.f64 (*.f64 #s(literal -2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64)))) (sqrt.f64 (+.f64 #s(literal 1 binary64) (pow.f64 (/.f64 U (*.f64 (*.f64 #s(literal 2 binary64) J) (cos.f64 (/.f64 K #s(literal 2 binary64))))) #s(literal 2 binary64))))) Initial program 73.6%
Taylor expanded in U around -inf
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-cos.f64N/A
lower-*.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
Applied rewrites12.9%
Taylor expanded in K around 0
lower-sqrt.f64N/A
lower-/.f64N/A
lower-pow.f6413.4%
Applied rewrites13.4%
(FPCore (J K U) :precision binary64 (* (fma (* (* 0.25 J) K) K (* -2.0 J)) 1.0))
double code(double J, double K, double U) {
return fma(((0.25 * J) * K), K, (-2.0 * J)) * 1.0;
}
function code(J, K, U) return Float64(fma(Float64(Float64(0.25 * J) * K), K, Float64(-2.0 * J)) * 1.0) end
code[J_, K_, U_] := N[(N[(N[(N[(0.25 * J), $MachinePrecision] * K), $MachinePrecision] * K + N[(-2.0 * J), $MachinePrecision]), $MachinePrecision] * 1.0), $MachinePrecision]
\mathsf{fma}\left(\left(0.25 \cdot J\right) \cdot K, K, -2 \cdot J\right) \cdot 1
Initial program 73.6%
Taylor expanded in J around inf
Applied rewrites53.3%
Taylor expanded in K around 0
lower-fma.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f6427.4%
Applied rewrites27.4%
lift-fma.f64N/A
lift-*.f64N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
associate-*r*N/A
lower-fma.f64N/A
lower-*.f64N/A
lower-*.f6427.4%
Applied rewrites27.4%
(FPCore (J K U) :precision binary64 (* (* (fma (* K K) 0.25 -2.0) J) 1.0))
double code(double J, double K, double U) {
return (fma((K * K), 0.25, -2.0) * J) * 1.0;
}
function code(J, K, U) return Float64(Float64(fma(Float64(K * K), 0.25, -2.0) * J) * 1.0) end
code[J_, K_, U_] := N[(N[(N[(N[(K * K), $MachinePrecision] * 0.25 + -2.0), $MachinePrecision] * J), $MachinePrecision] * 1.0), $MachinePrecision]
\left(\mathsf{fma}\left(K \cdot K, 0.25, -2\right) \cdot J\right) \cdot 1
Initial program 73.6%
Taylor expanded in J around inf
Applied rewrites53.3%
Taylor expanded in K around 0
lower-fma.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f6427.4%
Applied rewrites27.4%
lift-fma.f64N/A
lift-*.f64N/A
+-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lower-fma.f64N/A
lower-*.f6427.4%
lift-pow.f64N/A
unpow2N/A
lower-*.f6427.4%
Applied rewrites27.4%
lift-fma.f64N/A
lift-*.f64N/A
distribute-rgt-outN/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-fma.f6427.4%
Applied rewrites27.4%
herbie shell --seed 2025187
(FPCore (J K U)
:name "Maksimov and Kolovsky, Equation (3)"
:precision binary64
(* (* (* -2.0 J) (cos (/ K 2.0))) (sqrt (+ 1.0 (pow (/ U (* (* 2.0 J) (cos (/ K 2.0)))) 2.0)))))