
(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)));
}
real(8) function code(j, k, u)
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}
\\
\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}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 10 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)));
}
real(8) function code(j, k, u)
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}
\\
\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}
\end{array}
U_m = (fabs.f64 U)
J\_m = (fabs.f64 J)
J\_s = (copysign.f64 #s(literal 1 binary64) J)
(FPCore (J_s J_m K U_m)
:precision binary64
(let* ((t_0 (cos (/ K 2.0)))
(t_1 (/ U_m (* t_0 (* J_m 2.0))))
(t_2 (* (* -2.0 J_m) t_0))
(t_3 (* t_2 (sqrt (+ 1.0 (pow t_1 2.0))))))
(*
J_s
(if (<= t_3 (- INFINITY))
(- 0.0 U_m)
(if (<= t_3 2e+294) (* t_2 (hypot 1.0 t_1)) U_m)))))U_m = fabs(U);
J\_m = fabs(J);
J\_s = copysign(1.0, J);
double code(double J_s, double J_m, double K, double U_m) {
double t_0 = cos((K / 2.0));
double t_1 = U_m / (t_0 * (J_m * 2.0));
double t_2 = (-2.0 * J_m) * t_0;
double t_3 = t_2 * sqrt((1.0 + pow(t_1, 2.0)));
double tmp;
if (t_3 <= -((double) INFINITY)) {
tmp = 0.0 - U_m;
} else if (t_3 <= 2e+294) {
tmp = t_2 * hypot(1.0, t_1);
} else {
tmp = U_m;
}
return J_s * tmp;
}
U_m = Math.abs(U);
J\_m = Math.abs(J);
J\_s = Math.copySign(1.0, J);
public static double code(double J_s, double J_m, double K, double U_m) {
double t_0 = Math.cos((K / 2.0));
double t_1 = U_m / (t_0 * (J_m * 2.0));
double t_2 = (-2.0 * J_m) * t_0;
double t_3 = t_2 * Math.sqrt((1.0 + Math.pow(t_1, 2.0)));
double tmp;
if (t_3 <= -Double.POSITIVE_INFINITY) {
tmp = 0.0 - U_m;
} else if (t_3 <= 2e+294) {
tmp = t_2 * Math.hypot(1.0, t_1);
} else {
tmp = U_m;
}
return J_s * tmp;
}
U_m = math.fabs(U) J\_m = math.fabs(J) J\_s = math.copysign(1.0, J) def code(J_s, J_m, K, U_m): t_0 = math.cos((K / 2.0)) t_1 = U_m / (t_0 * (J_m * 2.0)) t_2 = (-2.0 * J_m) * t_0 t_3 = t_2 * math.sqrt((1.0 + math.pow(t_1, 2.0))) tmp = 0 if t_3 <= -math.inf: tmp = 0.0 - U_m elif t_3 <= 2e+294: tmp = t_2 * math.hypot(1.0, t_1) else: tmp = U_m return J_s * tmp
U_m = abs(U) J\_m = abs(J) J\_s = copysign(1.0, J) function code(J_s, J_m, K, U_m) t_0 = cos(Float64(K / 2.0)) t_1 = Float64(U_m / Float64(t_0 * Float64(J_m * 2.0))) t_2 = Float64(Float64(-2.0 * J_m) * t_0) t_3 = Float64(t_2 * sqrt(Float64(1.0 + (t_1 ^ 2.0)))) tmp = 0.0 if (t_3 <= Float64(-Inf)) tmp = Float64(0.0 - U_m); elseif (t_3 <= 2e+294) tmp = Float64(t_2 * hypot(1.0, t_1)); else tmp = U_m; end return Float64(J_s * tmp) end
U_m = abs(U); J\_m = abs(J); J\_s = sign(J) * abs(1.0); function tmp_2 = code(J_s, J_m, K, U_m) t_0 = cos((K / 2.0)); t_1 = U_m / (t_0 * (J_m * 2.0)); t_2 = (-2.0 * J_m) * t_0; t_3 = t_2 * sqrt((1.0 + (t_1 ^ 2.0))); tmp = 0.0; if (t_3 <= -Inf) tmp = 0.0 - U_m; elseif (t_3 <= 2e+294) tmp = t_2 * hypot(1.0, t_1); else tmp = U_m; end tmp_2 = J_s * tmp; end
U_m = N[Abs[U], $MachinePrecision]
J\_m = N[Abs[J], $MachinePrecision]
J\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[J$95$s_, J$95$m_, K_, U$95$m_] := Block[{t$95$0 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(U$95$m / N[(t$95$0 * N[(J$95$m * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(-2.0 * J$95$m), $MachinePrecision] * t$95$0), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 * N[Sqrt[N[(1.0 + N[Power[t$95$1, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, N[(J$95$s * If[LessEqual[t$95$3, (-Infinity)], N[(0.0 - U$95$m), $MachinePrecision], If[LessEqual[t$95$3, 2e+294], N[(t$95$2 * N[Sqrt[1.0 ^ 2 + t$95$1 ^ 2], $MachinePrecision]), $MachinePrecision], U$95$m]]), $MachinePrecision]]]]]
\begin{array}{l}
U_m = \left|U\right|
\\
J\_m = \left|J\right|
\\
J\_s = \mathsf{copysign}\left(1, J\right)
\\
\begin{array}{l}
t_0 := \cos \left(\frac{K}{2}\right)\\
t_1 := \frac{U\_m}{t\_0 \cdot \left(J\_m \cdot 2\right)}\\
t_2 := \left(-2 \cdot J\_m\right) \cdot t\_0\\
t_3 := t\_2 \cdot \sqrt{1 + {t\_1}^{2}}\\
J\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_3 \leq -\infty:\\
\;\;\;\;0 - U\_m\\
\mathbf{elif}\;t\_3 \leq 2 \cdot 10^{+294}:\\
\;\;\;\;t\_2 \cdot \mathsf{hypot}\left(1, t\_1\right)\\
\mathbf{else}:\\
\;\;\;\;U\_m\\
\end{array}
\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 5.1%
Taylor expanded in J around 0
mul-1-negN/A
neg-sub0N/A
--lowering--.f6463.5%
Simplified63.5%
sub0-negN/A
neg-lowering-neg.f6463.5%
Applied egg-rr63.5%
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))))) < 2.00000000000000013e294Initial program 99.8%
*-commutativeN/A
sqr-powN/A
hypot-1-defN/A
associate-/r*N/A
*-commutativeN/A
metadata-evalN/A
unpow1N/A
hypot-undefineN/A
associate-*l*N/A
Applied egg-rr99.8%
if 2.00000000000000013e294 < (*.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 11.1%
Taylor expanded in U around -inf
Simplified32.9%
Final simplification84.8%
U_m = (fabs.f64 U)
J\_m = (fabs.f64 J)
J\_s = (copysign.f64 #s(literal 1 binary64) J)
(FPCore (J_s J_m K U_m)
:precision binary64
(let* ((t_0 (cos (/ K 2.0))))
(*
J_s
(if (<= t_0 -0.39)
U_m
(if (<= t_0 0.52)
(* t_0 (+ (* -2.0 J_m) (* -0.25 (/ (* U_m U_m) J_m))))
(if (<= t_0 0.9995)
(- 0.0 U_m)
(* (* -2.0 J_m) (hypot 1.0 (* 0.5 (/ U_m J_m))))))))))U_m = fabs(U);
J\_m = fabs(J);
J\_s = copysign(1.0, J);
double code(double J_s, double J_m, double K, double U_m) {
double t_0 = cos((K / 2.0));
double tmp;
if (t_0 <= -0.39) {
tmp = U_m;
} else if (t_0 <= 0.52) {
tmp = t_0 * ((-2.0 * J_m) + (-0.25 * ((U_m * U_m) / J_m)));
} else if (t_0 <= 0.9995) {
tmp = 0.0 - U_m;
} else {
tmp = (-2.0 * J_m) * hypot(1.0, (0.5 * (U_m / J_m)));
}
return J_s * tmp;
}
U_m = Math.abs(U);
J\_m = Math.abs(J);
J\_s = Math.copySign(1.0, J);
public static double code(double J_s, double J_m, double K, double U_m) {
double t_0 = Math.cos((K / 2.0));
double tmp;
if (t_0 <= -0.39) {
tmp = U_m;
} else if (t_0 <= 0.52) {
tmp = t_0 * ((-2.0 * J_m) + (-0.25 * ((U_m * U_m) / J_m)));
} else if (t_0 <= 0.9995) {
tmp = 0.0 - U_m;
} else {
tmp = (-2.0 * J_m) * Math.hypot(1.0, (0.5 * (U_m / J_m)));
}
return J_s * tmp;
}
U_m = math.fabs(U) J\_m = math.fabs(J) J\_s = math.copysign(1.0, J) def code(J_s, J_m, K, U_m): t_0 = math.cos((K / 2.0)) tmp = 0 if t_0 <= -0.39: tmp = U_m elif t_0 <= 0.52: tmp = t_0 * ((-2.0 * J_m) + (-0.25 * ((U_m * U_m) / J_m))) elif t_0 <= 0.9995: tmp = 0.0 - U_m else: tmp = (-2.0 * J_m) * math.hypot(1.0, (0.5 * (U_m / J_m))) return J_s * tmp
U_m = abs(U) J\_m = abs(J) J\_s = copysign(1.0, J) function code(J_s, J_m, K, U_m) t_0 = cos(Float64(K / 2.0)) tmp = 0.0 if (t_0 <= -0.39) tmp = U_m; elseif (t_0 <= 0.52) tmp = Float64(t_0 * Float64(Float64(-2.0 * J_m) + Float64(-0.25 * Float64(Float64(U_m * U_m) / J_m)))); elseif (t_0 <= 0.9995) tmp = Float64(0.0 - U_m); else tmp = Float64(Float64(-2.0 * J_m) * hypot(1.0, Float64(0.5 * Float64(U_m / J_m)))); end return Float64(J_s * tmp) end
U_m = abs(U); J\_m = abs(J); J\_s = sign(J) * abs(1.0); function tmp_2 = code(J_s, J_m, K, U_m) t_0 = cos((K / 2.0)); tmp = 0.0; if (t_0 <= -0.39) tmp = U_m; elseif (t_0 <= 0.52) tmp = t_0 * ((-2.0 * J_m) + (-0.25 * ((U_m * U_m) / J_m))); elseif (t_0 <= 0.9995) tmp = 0.0 - U_m; else tmp = (-2.0 * J_m) * hypot(1.0, (0.5 * (U_m / J_m))); end tmp_2 = J_s * tmp; end
U_m = N[Abs[U], $MachinePrecision]
J\_m = N[Abs[J], $MachinePrecision]
J\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[J$95$s_, J$95$m_, K_, U$95$m_] := Block[{t$95$0 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, N[(J$95$s * If[LessEqual[t$95$0, -0.39], U$95$m, If[LessEqual[t$95$0, 0.52], N[(t$95$0 * N[(N[(-2.0 * J$95$m), $MachinePrecision] + N[(-0.25 * N[(N[(U$95$m * U$95$m), $MachinePrecision] / J$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 0.9995], N[(0.0 - U$95$m), $MachinePrecision], N[(N[(-2.0 * J$95$m), $MachinePrecision] * N[Sqrt[1.0 ^ 2 + N[(0.5 * N[(U$95$m / J$95$m), $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision]]]]), $MachinePrecision]]
\begin{array}{l}
U_m = \left|U\right|
\\
J\_m = \left|J\right|
\\
J\_s = \mathsf{copysign}\left(1, J\right)
\\
\begin{array}{l}
t_0 := \cos \left(\frac{K}{2}\right)\\
J\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_0 \leq -0.39:\\
\;\;\;\;U\_m\\
\mathbf{elif}\;t\_0 \leq 0.52:\\
\;\;\;\;t\_0 \cdot \left(-2 \cdot J\_m + -0.25 \cdot \frac{U\_m \cdot U\_m}{J\_m}\right)\\
\mathbf{elif}\;t\_0 \leq 0.9995:\\
\;\;\;\;0 - U\_m\\
\mathbf{else}:\\
\;\;\;\;\left(-2 \cdot J\_m\right) \cdot \mathsf{hypot}\left(1, 0.5 \cdot \frac{U\_m}{J\_m}\right)\\
\end{array}
\end{array}
\end{array}
if (cos.f64 (/.f64 K #s(literal 2 binary64))) < -0.39000000000000001Initial program 61.5%
Taylor expanded in U around -inf
Simplified30.3%
if -0.39000000000000001 < (cos.f64 (/.f64 K #s(literal 2 binary64))) < 0.52000000000000002Initial program 81.2%
*-commutativeN/A
sqr-powN/A
hypot-1-defN/A
associate-/r*N/A
*-commutativeN/A
metadata-evalN/A
unpow1N/A
hypot-undefineN/A
metadata-evalN/A
distribute-lft-neg-inN/A
*-commutativeN/A
Applied egg-rr86.5%
Taylor expanded in K around 0
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f6466.6%
Simplified66.6%
Taylor expanded in U around 0
+-lowering-+.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
/-lowering-/.f64N/A
unpow2N/A
*-lowering-*.f6464.5%
Simplified64.5%
if 0.52000000000000002 < (cos.f64 (/.f64 K #s(literal 2 binary64))) < 0.99950000000000006Initial program 62.5%
Taylor expanded in J around 0
mul-1-negN/A
neg-sub0N/A
--lowering--.f6436.3%
Simplified36.3%
sub0-negN/A
neg-lowering-neg.f6436.3%
Applied egg-rr36.3%
if 0.99950000000000006 < (cos.f64 (/.f64 K #s(literal 2 binary64))) Initial program 74.1%
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
/-lowering-/.f64N/A
unpow2N/A
hypot-1-defN/A
hypot-lowering-hypot.f64N/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
/-lowering-/.f6491.3%
Simplified91.3%
Taylor expanded in K around 0
*-lowering-*.f64N/A
/-lowering-/.f6490.0%
Simplified90.0%
Taylor expanded in K around 0
*-lowering-*.f6490.7%
Simplified90.7%
Final simplification67.2%
U_m = (fabs.f64 U)
J\_m = (fabs.f64 J)
J\_s = (copysign.f64 #s(literal 1 binary64) J)
(FPCore (J_s J_m K U_m)
:precision binary64
(let* ((t_0 (cos (/ K 2.0))))
(*
J_s
(if (<= t_0 -0.39)
U_m
(if (<= t_0 0.205)
(* (* -2.0 J_m) (cos (* K 0.5)))
(if (<= t_0 0.9995)
(- 0.0 U_m)
(* (* -2.0 J_m) (hypot 1.0 (* 0.5 (/ U_m J_m))))))))))U_m = fabs(U);
J\_m = fabs(J);
J\_s = copysign(1.0, J);
double code(double J_s, double J_m, double K, double U_m) {
double t_0 = cos((K / 2.0));
double tmp;
if (t_0 <= -0.39) {
tmp = U_m;
} else if (t_0 <= 0.205) {
tmp = (-2.0 * J_m) * cos((K * 0.5));
} else if (t_0 <= 0.9995) {
tmp = 0.0 - U_m;
} else {
tmp = (-2.0 * J_m) * hypot(1.0, (0.5 * (U_m / J_m)));
}
return J_s * tmp;
}
U_m = Math.abs(U);
J\_m = Math.abs(J);
J\_s = Math.copySign(1.0, J);
public static double code(double J_s, double J_m, double K, double U_m) {
double t_0 = Math.cos((K / 2.0));
double tmp;
if (t_0 <= -0.39) {
tmp = U_m;
} else if (t_0 <= 0.205) {
tmp = (-2.0 * J_m) * Math.cos((K * 0.5));
} else if (t_0 <= 0.9995) {
tmp = 0.0 - U_m;
} else {
tmp = (-2.0 * J_m) * Math.hypot(1.0, (0.5 * (U_m / J_m)));
}
return J_s * tmp;
}
U_m = math.fabs(U) J\_m = math.fabs(J) J\_s = math.copysign(1.0, J) def code(J_s, J_m, K, U_m): t_0 = math.cos((K / 2.0)) tmp = 0 if t_0 <= -0.39: tmp = U_m elif t_0 <= 0.205: tmp = (-2.0 * J_m) * math.cos((K * 0.5)) elif t_0 <= 0.9995: tmp = 0.0 - U_m else: tmp = (-2.0 * J_m) * math.hypot(1.0, (0.5 * (U_m / J_m))) return J_s * tmp
U_m = abs(U) J\_m = abs(J) J\_s = copysign(1.0, J) function code(J_s, J_m, K, U_m) t_0 = cos(Float64(K / 2.0)) tmp = 0.0 if (t_0 <= -0.39) tmp = U_m; elseif (t_0 <= 0.205) tmp = Float64(Float64(-2.0 * J_m) * cos(Float64(K * 0.5))); elseif (t_0 <= 0.9995) tmp = Float64(0.0 - U_m); else tmp = Float64(Float64(-2.0 * J_m) * hypot(1.0, Float64(0.5 * Float64(U_m / J_m)))); end return Float64(J_s * tmp) end
U_m = abs(U); J\_m = abs(J); J\_s = sign(J) * abs(1.0); function tmp_2 = code(J_s, J_m, K, U_m) t_0 = cos((K / 2.0)); tmp = 0.0; if (t_0 <= -0.39) tmp = U_m; elseif (t_0 <= 0.205) tmp = (-2.0 * J_m) * cos((K * 0.5)); elseif (t_0 <= 0.9995) tmp = 0.0 - U_m; else tmp = (-2.0 * J_m) * hypot(1.0, (0.5 * (U_m / J_m))); end tmp_2 = J_s * tmp; end
U_m = N[Abs[U], $MachinePrecision]
J\_m = N[Abs[J], $MachinePrecision]
J\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[J$95$s_, J$95$m_, K_, U$95$m_] := Block[{t$95$0 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, N[(J$95$s * If[LessEqual[t$95$0, -0.39], U$95$m, If[LessEqual[t$95$0, 0.205], N[(N[(-2.0 * J$95$m), $MachinePrecision] * N[Cos[N[(K * 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$0, 0.9995], N[(0.0 - U$95$m), $MachinePrecision], N[(N[(-2.0 * J$95$m), $MachinePrecision] * N[Sqrt[1.0 ^ 2 + N[(0.5 * N[(U$95$m / J$95$m), $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision]]]]), $MachinePrecision]]
\begin{array}{l}
U_m = \left|U\right|
\\
J\_m = \left|J\right|
\\
J\_s = \mathsf{copysign}\left(1, J\right)
\\
\begin{array}{l}
t_0 := \cos \left(\frac{K}{2}\right)\\
J\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_0 \leq -0.39:\\
\;\;\;\;U\_m\\
\mathbf{elif}\;t\_0 \leq 0.205:\\
\;\;\;\;\left(-2 \cdot J\_m\right) \cdot \cos \left(K \cdot 0.5\right)\\
\mathbf{elif}\;t\_0 \leq 0.9995:\\
\;\;\;\;0 - U\_m\\
\mathbf{else}:\\
\;\;\;\;\left(-2 \cdot J\_m\right) \cdot \mathsf{hypot}\left(1, 0.5 \cdot \frac{U\_m}{J\_m}\right)\\
\end{array}
\end{array}
\end{array}
if (cos.f64 (/.f64 K #s(literal 2 binary64))) < -0.39000000000000001Initial program 61.5%
Taylor expanded in U around -inf
Simplified30.3%
if -0.39000000000000001 < (cos.f64 (/.f64 K #s(literal 2 binary64))) < 0.204999999999999988Initial program 87.7%
Taylor expanded in J around inf
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6470.3%
Simplified70.3%
if 0.204999999999999988 < (cos.f64 (/.f64 K #s(literal 2 binary64))) < 0.99950000000000006Initial program 63.8%
Taylor expanded in J around 0
mul-1-negN/A
neg-sub0N/A
--lowering--.f6437.8%
Simplified37.8%
sub0-negN/A
neg-lowering-neg.f6437.8%
Applied egg-rr37.8%
if 0.99950000000000006 < (cos.f64 (/.f64 K #s(literal 2 binary64))) Initial program 74.1%
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
/-lowering-/.f64N/A
unpow2N/A
hypot-1-defN/A
hypot-lowering-hypot.f64N/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
/-lowering-/.f6491.3%
Simplified91.3%
Taylor expanded in K around 0
*-lowering-*.f64N/A
/-lowering-/.f6490.0%
Simplified90.0%
Taylor expanded in K around 0
*-lowering-*.f6490.7%
Simplified90.7%
Final simplification66.8%
U_m = (fabs.f64 U)
J\_m = (fabs.f64 J)
J\_s = (copysign.f64 #s(literal 1 binary64) J)
(FPCore (J_s J_m K U_m)
:precision binary64
(let* ((t_0 (cos (/ K 2.0))))
(*
J_s
(if (<= U_m 1.25e+120)
(* t_0 (* (* -2.0 J_m) (hypot 1.0 (/ U_m (* t_0 (* J_m 2.0))))))
(- 0.0 U_m)))))U_m = fabs(U);
J\_m = fabs(J);
J\_s = copysign(1.0, J);
double code(double J_s, double J_m, double K, double U_m) {
double t_0 = cos((K / 2.0));
double tmp;
if (U_m <= 1.25e+120) {
tmp = t_0 * ((-2.0 * J_m) * hypot(1.0, (U_m / (t_0 * (J_m * 2.0)))));
} else {
tmp = 0.0 - U_m;
}
return J_s * tmp;
}
U_m = Math.abs(U);
J\_m = Math.abs(J);
J\_s = Math.copySign(1.0, J);
public static double code(double J_s, double J_m, double K, double U_m) {
double t_0 = Math.cos((K / 2.0));
double tmp;
if (U_m <= 1.25e+120) {
tmp = t_0 * ((-2.0 * J_m) * Math.hypot(1.0, (U_m / (t_0 * (J_m * 2.0)))));
} else {
tmp = 0.0 - U_m;
}
return J_s * tmp;
}
U_m = math.fabs(U) J\_m = math.fabs(J) J\_s = math.copysign(1.0, J) def code(J_s, J_m, K, U_m): t_0 = math.cos((K / 2.0)) tmp = 0 if U_m <= 1.25e+120: tmp = t_0 * ((-2.0 * J_m) * math.hypot(1.0, (U_m / (t_0 * (J_m * 2.0))))) else: tmp = 0.0 - U_m return J_s * tmp
U_m = abs(U) J\_m = abs(J) J\_s = copysign(1.0, J) function code(J_s, J_m, K, U_m) t_0 = cos(Float64(K / 2.0)) tmp = 0.0 if (U_m <= 1.25e+120) tmp = Float64(t_0 * Float64(Float64(-2.0 * J_m) * hypot(1.0, Float64(U_m / Float64(t_0 * Float64(J_m * 2.0)))))); else tmp = Float64(0.0 - U_m); end return Float64(J_s * tmp) end
U_m = abs(U); J\_m = abs(J); J\_s = sign(J) * abs(1.0); function tmp_2 = code(J_s, J_m, K, U_m) t_0 = cos((K / 2.0)); tmp = 0.0; if (U_m <= 1.25e+120) tmp = t_0 * ((-2.0 * J_m) * hypot(1.0, (U_m / (t_0 * (J_m * 2.0))))); else tmp = 0.0 - U_m; end tmp_2 = J_s * tmp; end
U_m = N[Abs[U], $MachinePrecision]
J\_m = N[Abs[J], $MachinePrecision]
J\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[J$95$s_, J$95$m_, K_, U$95$m_] := Block[{t$95$0 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, N[(J$95$s * If[LessEqual[U$95$m, 1.25e+120], N[(t$95$0 * N[(N[(-2.0 * J$95$m), $MachinePrecision] * N[Sqrt[1.0 ^ 2 + N[(U$95$m / N[(t$95$0 * N[(J$95$m * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.0 - U$95$m), $MachinePrecision]]), $MachinePrecision]]
\begin{array}{l}
U_m = \left|U\right|
\\
J\_m = \left|J\right|
\\
J\_s = \mathsf{copysign}\left(1, J\right)
\\
\begin{array}{l}
t_0 := \cos \left(\frac{K}{2}\right)\\
J\_s \cdot \begin{array}{l}
\mathbf{if}\;U\_m \leq 1.25 \cdot 10^{+120}:\\
\;\;\;\;t\_0 \cdot \left(\left(-2 \cdot J\_m\right) \cdot \mathsf{hypot}\left(1, \frac{U\_m}{t\_0 \cdot \left(J\_m \cdot 2\right)}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;0 - U\_m\\
\end{array}
\end{array}
\end{array}
if U < 1.25000000000000005e120Initial program 75.8%
*-commutativeN/A
sqr-powN/A
hypot-1-defN/A
associate-/r*N/A
*-commutativeN/A
metadata-evalN/A
unpow1N/A
hypot-undefineN/A
metadata-evalN/A
distribute-lft-neg-inN/A
*-commutativeN/A
Applied egg-rr90.8%
if 1.25000000000000005e120 < U Initial program 39.3%
Taylor expanded in J around 0
mul-1-negN/A
neg-sub0N/A
--lowering--.f6459.2%
Simplified59.2%
sub0-negN/A
neg-lowering-neg.f6459.2%
Applied egg-rr59.2%
Final simplification86.6%
U_m = (fabs.f64 U)
J\_m = (fabs.f64 J)
J\_s = (copysign.f64 #s(literal 1 binary64) J)
(FPCore (J_s J_m K U_m)
:precision binary64
(let* ((t_0 (cos (/ K 2.0))))
(*
J_s
(if (<= U_m 8.5e+119)
(* (* (* -2.0 J_m) t_0) (hypot 1.0 (/ (/ U_m (* J_m 2.0)) t_0)))
(- 0.0 U_m)))))U_m = fabs(U);
J\_m = fabs(J);
J\_s = copysign(1.0, J);
double code(double J_s, double J_m, double K, double U_m) {
double t_0 = cos((K / 2.0));
double tmp;
if (U_m <= 8.5e+119) {
tmp = ((-2.0 * J_m) * t_0) * hypot(1.0, ((U_m / (J_m * 2.0)) / t_0));
} else {
tmp = 0.0 - U_m;
}
return J_s * tmp;
}
U_m = Math.abs(U);
J\_m = Math.abs(J);
J\_s = Math.copySign(1.0, J);
public static double code(double J_s, double J_m, double K, double U_m) {
double t_0 = Math.cos((K / 2.0));
double tmp;
if (U_m <= 8.5e+119) {
tmp = ((-2.0 * J_m) * t_0) * Math.hypot(1.0, ((U_m / (J_m * 2.0)) / t_0));
} else {
tmp = 0.0 - U_m;
}
return J_s * tmp;
}
U_m = math.fabs(U) J\_m = math.fabs(J) J\_s = math.copysign(1.0, J) def code(J_s, J_m, K, U_m): t_0 = math.cos((K / 2.0)) tmp = 0 if U_m <= 8.5e+119: tmp = ((-2.0 * J_m) * t_0) * math.hypot(1.0, ((U_m / (J_m * 2.0)) / t_0)) else: tmp = 0.0 - U_m return J_s * tmp
U_m = abs(U) J\_m = abs(J) J\_s = copysign(1.0, J) function code(J_s, J_m, K, U_m) t_0 = cos(Float64(K / 2.0)) tmp = 0.0 if (U_m <= 8.5e+119) tmp = Float64(Float64(Float64(-2.0 * J_m) * t_0) * hypot(1.0, Float64(Float64(U_m / Float64(J_m * 2.0)) / t_0))); else tmp = Float64(0.0 - U_m); end return Float64(J_s * tmp) end
U_m = abs(U); J\_m = abs(J); J\_s = sign(J) * abs(1.0); function tmp_2 = code(J_s, J_m, K, U_m) t_0 = cos((K / 2.0)); tmp = 0.0; if (U_m <= 8.5e+119) tmp = ((-2.0 * J_m) * t_0) * hypot(1.0, ((U_m / (J_m * 2.0)) / t_0)); else tmp = 0.0 - U_m; end tmp_2 = J_s * tmp; end
U_m = N[Abs[U], $MachinePrecision]
J\_m = N[Abs[J], $MachinePrecision]
J\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[J$95$s_, J$95$m_, K_, U$95$m_] := Block[{t$95$0 = N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]}, N[(J$95$s * If[LessEqual[U$95$m, 8.5e+119], N[(N[(N[(-2.0 * J$95$m), $MachinePrecision] * t$95$0), $MachinePrecision] * N[Sqrt[1.0 ^ 2 + N[(N[(U$95$m / N[(J$95$m * 2.0), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision], N[(0.0 - U$95$m), $MachinePrecision]]), $MachinePrecision]]
\begin{array}{l}
U_m = \left|U\right|
\\
J\_m = \left|J\right|
\\
J\_s = \mathsf{copysign}\left(1, J\right)
\\
\begin{array}{l}
t_0 := \cos \left(\frac{K}{2}\right)\\
J\_s \cdot \begin{array}{l}
\mathbf{if}\;U\_m \leq 8.5 \cdot 10^{+119}:\\
\;\;\;\;\left(\left(-2 \cdot J\_m\right) \cdot t\_0\right) \cdot \mathsf{hypot}\left(1, \frac{\frac{U\_m}{J\_m \cdot 2}}{t\_0}\right)\\
\mathbf{else}:\\
\;\;\;\;0 - U\_m\\
\end{array}
\end{array}
\end{array}
if U < 8.49999999999999997e119Initial program 75.8%
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
/-lowering-/.f64N/A
unpow2N/A
hypot-1-defN/A
hypot-lowering-hypot.f64N/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
/-lowering-/.f6490.8%
Simplified90.8%
if 8.49999999999999997e119 < U Initial program 39.3%
Taylor expanded in J around 0
mul-1-negN/A
neg-sub0N/A
--lowering--.f6459.2%
Simplified59.2%
sub0-negN/A
neg-lowering-neg.f6459.2%
Applied egg-rr59.2%
Final simplification86.6%
U_m = (fabs.f64 U)
J\_m = (fabs.f64 J)
J\_s = (copysign.f64 #s(literal 1 binary64) J)
(FPCore (J_s J_m K U_m)
:precision binary64
(*
J_s
(if (<= U_m 3e+104)
(* (* (* -2.0 J_m) (cos (/ K 2.0))) (hypot 1.0 (* 0.5 (/ U_m J_m))))
(- 0.0 U_m))))U_m = fabs(U);
J\_m = fabs(J);
J\_s = copysign(1.0, J);
double code(double J_s, double J_m, double K, double U_m) {
double tmp;
if (U_m <= 3e+104) {
tmp = ((-2.0 * J_m) * cos((K / 2.0))) * hypot(1.0, (0.5 * (U_m / J_m)));
} else {
tmp = 0.0 - U_m;
}
return J_s * tmp;
}
U_m = Math.abs(U);
J\_m = Math.abs(J);
J\_s = Math.copySign(1.0, J);
public static double code(double J_s, double J_m, double K, double U_m) {
double tmp;
if (U_m <= 3e+104) {
tmp = ((-2.0 * J_m) * Math.cos((K / 2.0))) * Math.hypot(1.0, (0.5 * (U_m / J_m)));
} else {
tmp = 0.0 - U_m;
}
return J_s * tmp;
}
U_m = math.fabs(U) J\_m = math.fabs(J) J\_s = math.copysign(1.0, J) def code(J_s, J_m, K, U_m): tmp = 0 if U_m <= 3e+104: tmp = ((-2.0 * J_m) * math.cos((K / 2.0))) * math.hypot(1.0, (0.5 * (U_m / J_m))) else: tmp = 0.0 - U_m return J_s * tmp
U_m = abs(U) J\_m = abs(J) J\_s = copysign(1.0, J) function code(J_s, J_m, K, U_m) tmp = 0.0 if (U_m <= 3e+104) tmp = Float64(Float64(Float64(-2.0 * J_m) * cos(Float64(K / 2.0))) * hypot(1.0, Float64(0.5 * Float64(U_m / J_m)))); else tmp = Float64(0.0 - U_m); end return Float64(J_s * tmp) end
U_m = abs(U); J\_m = abs(J); J\_s = sign(J) * abs(1.0); function tmp_2 = code(J_s, J_m, K, U_m) tmp = 0.0; if (U_m <= 3e+104) tmp = ((-2.0 * J_m) * cos((K / 2.0))) * hypot(1.0, (0.5 * (U_m / J_m))); else tmp = 0.0 - U_m; end tmp_2 = J_s * tmp; end
U_m = N[Abs[U], $MachinePrecision]
J\_m = N[Abs[J], $MachinePrecision]
J\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[J$95$s_, J$95$m_, K_, U$95$m_] := N[(J$95$s * If[LessEqual[U$95$m, 3e+104], N[(N[(N[(-2.0 * J$95$m), $MachinePrecision] * N[Cos[N[(K / 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Sqrt[1.0 ^ 2 + N[(0.5 * N[(U$95$m / J$95$m), $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision], N[(0.0 - U$95$m), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
U_m = \left|U\right|
\\
J\_m = \left|J\right|
\\
J\_s = \mathsf{copysign}\left(1, J\right)
\\
J\_s \cdot \begin{array}{l}
\mathbf{if}\;U\_m \leq 3 \cdot 10^{+104}:\\
\;\;\;\;\left(\left(-2 \cdot J\_m\right) \cdot \cos \left(\frac{K}{2}\right)\right) \cdot \mathsf{hypot}\left(1, 0.5 \cdot \frac{U\_m}{J\_m}\right)\\
\mathbf{else}:\\
\;\;\;\;0 - U\_m\\
\end{array}
\end{array}
if U < 2.99999999999999969e104Initial program 76.1%
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
/-lowering-/.f64N/A
unpow2N/A
hypot-1-defN/A
hypot-lowering-hypot.f64N/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
/-lowering-/.f6490.7%
Simplified90.7%
Taylor expanded in K around 0
*-lowering-*.f64N/A
/-lowering-/.f6474.3%
Simplified74.3%
if 2.99999999999999969e104 < U Initial program 38.3%
Taylor expanded in J around 0
mul-1-negN/A
neg-sub0N/A
--lowering--.f6460.3%
Simplified60.3%
sub0-negN/A
neg-lowering-neg.f6460.3%
Applied egg-rr60.3%
Final simplification72.4%
U_m = (fabs.f64 U) J\_m = (fabs.f64 J) J\_s = (copysign.f64 #s(literal 1 binary64) J) (FPCore (J_s J_m K U_m) :precision binary64 (* J_s (if (<= U_m 1.35e+104) (* (* -2.0 J_m) (cos (* K 0.5))) (- 0.0 U_m))))
U_m = fabs(U);
J\_m = fabs(J);
J\_s = copysign(1.0, J);
double code(double J_s, double J_m, double K, double U_m) {
double tmp;
if (U_m <= 1.35e+104) {
tmp = (-2.0 * J_m) * cos((K * 0.5));
} else {
tmp = 0.0 - U_m;
}
return J_s * tmp;
}
U_m = abs(u)
J\_m = abs(j)
J\_s = copysign(1.0d0, j)
real(8) function code(j_s, j_m, k, u_m)
real(8), intent (in) :: j_s
real(8), intent (in) :: j_m
real(8), intent (in) :: k
real(8), intent (in) :: u_m
real(8) :: tmp
if (u_m <= 1.35d+104) then
tmp = ((-2.0d0) * j_m) * cos((k * 0.5d0))
else
tmp = 0.0d0 - u_m
end if
code = j_s * tmp
end function
U_m = Math.abs(U);
J\_m = Math.abs(J);
J\_s = Math.copySign(1.0, J);
public static double code(double J_s, double J_m, double K, double U_m) {
double tmp;
if (U_m <= 1.35e+104) {
tmp = (-2.0 * J_m) * Math.cos((K * 0.5));
} else {
tmp = 0.0 - U_m;
}
return J_s * tmp;
}
U_m = math.fabs(U) J\_m = math.fabs(J) J\_s = math.copysign(1.0, J) def code(J_s, J_m, K, U_m): tmp = 0 if U_m <= 1.35e+104: tmp = (-2.0 * J_m) * math.cos((K * 0.5)) else: tmp = 0.0 - U_m return J_s * tmp
U_m = abs(U) J\_m = abs(J) J\_s = copysign(1.0, J) function code(J_s, J_m, K, U_m) tmp = 0.0 if (U_m <= 1.35e+104) tmp = Float64(Float64(-2.0 * J_m) * cos(Float64(K * 0.5))); else tmp = Float64(0.0 - U_m); end return Float64(J_s * tmp) end
U_m = abs(U); J\_m = abs(J); J\_s = sign(J) * abs(1.0); function tmp_2 = code(J_s, J_m, K, U_m) tmp = 0.0; if (U_m <= 1.35e+104) tmp = (-2.0 * J_m) * cos((K * 0.5)); else tmp = 0.0 - U_m; end tmp_2 = J_s * tmp; end
U_m = N[Abs[U], $MachinePrecision]
J\_m = N[Abs[J], $MachinePrecision]
J\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[J$95$s_, J$95$m_, K_, U$95$m_] := N[(J$95$s * If[LessEqual[U$95$m, 1.35e+104], N[(N[(-2.0 * J$95$m), $MachinePrecision] * N[Cos[N[(K * 0.5), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(0.0 - U$95$m), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
U_m = \left|U\right|
\\
J\_m = \left|J\right|
\\
J\_s = \mathsf{copysign}\left(1, J\right)
\\
J\_s \cdot \begin{array}{l}
\mathbf{if}\;U\_m \leq 1.35 \cdot 10^{+104}:\\
\;\;\;\;\left(-2 \cdot J\_m\right) \cdot \cos \left(K \cdot 0.5\right)\\
\mathbf{else}:\\
\;\;\;\;0 - U\_m\\
\end{array}
\end{array}
if U < 1.34999999999999992e104Initial program 76.1%
Taylor expanded in J around inf
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f6456.1%
Simplified56.1%
if 1.34999999999999992e104 < U Initial program 38.3%
Taylor expanded in J around 0
mul-1-negN/A
neg-sub0N/A
--lowering--.f6460.3%
Simplified60.3%
sub0-negN/A
neg-lowering-neg.f6460.3%
Applied egg-rr60.3%
Final simplification56.7%
U_m = (fabs.f64 U) J\_m = (fabs.f64 J) J\_s = (copysign.f64 #s(literal 1 binary64) J) (FPCore (J_s J_m K U_m) :precision binary64 (* J_s (if (<= K 5.8e+25) (- 0.0 U_m) (if (<= K 1.75e+99) U_m (- 0.0 U_m)))))
U_m = fabs(U);
J\_m = fabs(J);
J\_s = copysign(1.0, J);
double code(double J_s, double J_m, double K, double U_m) {
double tmp;
if (K <= 5.8e+25) {
tmp = 0.0 - U_m;
} else if (K <= 1.75e+99) {
tmp = U_m;
} else {
tmp = 0.0 - U_m;
}
return J_s * tmp;
}
U_m = abs(u)
J\_m = abs(j)
J\_s = copysign(1.0d0, j)
real(8) function code(j_s, j_m, k, u_m)
real(8), intent (in) :: j_s
real(8), intent (in) :: j_m
real(8), intent (in) :: k
real(8), intent (in) :: u_m
real(8) :: tmp
if (k <= 5.8d+25) then
tmp = 0.0d0 - u_m
else if (k <= 1.75d+99) then
tmp = u_m
else
tmp = 0.0d0 - u_m
end if
code = j_s * tmp
end function
U_m = Math.abs(U);
J\_m = Math.abs(J);
J\_s = Math.copySign(1.0, J);
public static double code(double J_s, double J_m, double K, double U_m) {
double tmp;
if (K <= 5.8e+25) {
tmp = 0.0 - U_m;
} else if (K <= 1.75e+99) {
tmp = U_m;
} else {
tmp = 0.0 - U_m;
}
return J_s * tmp;
}
U_m = math.fabs(U) J\_m = math.fabs(J) J\_s = math.copysign(1.0, J) def code(J_s, J_m, K, U_m): tmp = 0 if K <= 5.8e+25: tmp = 0.0 - U_m elif K <= 1.75e+99: tmp = U_m else: tmp = 0.0 - U_m return J_s * tmp
U_m = abs(U) J\_m = abs(J) J\_s = copysign(1.0, J) function code(J_s, J_m, K, U_m) tmp = 0.0 if (K <= 5.8e+25) tmp = Float64(0.0 - U_m); elseif (K <= 1.75e+99) tmp = U_m; else tmp = Float64(0.0 - U_m); end return Float64(J_s * tmp) end
U_m = abs(U); J\_m = abs(J); J\_s = sign(J) * abs(1.0); function tmp_2 = code(J_s, J_m, K, U_m) tmp = 0.0; if (K <= 5.8e+25) tmp = 0.0 - U_m; elseif (K <= 1.75e+99) tmp = U_m; else tmp = 0.0 - U_m; end tmp_2 = J_s * tmp; end
U_m = N[Abs[U], $MachinePrecision]
J\_m = N[Abs[J], $MachinePrecision]
J\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[J$95$s_, J$95$m_, K_, U$95$m_] := N[(J$95$s * If[LessEqual[K, 5.8e+25], N[(0.0 - U$95$m), $MachinePrecision], If[LessEqual[K, 1.75e+99], U$95$m, N[(0.0 - U$95$m), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
U_m = \left|U\right|
\\
J\_m = \left|J\right|
\\
J\_s = \mathsf{copysign}\left(1, J\right)
\\
J\_s \cdot \begin{array}{l}
\mathbf{if}\;K \leq 5.8 \cdot 10^{+25}:\\
\;\;\;\;0 - U\_m\\
\mathbf{elif}\;K \leq 1.75 \cdot 10^{+99}:\\
\;\;\;\;U\_m\\
\mathbf{else}:\\
\;\;\;\;0 - U\_m\\
\end{array}
\end{array}
if K < 5.7999999999999998e25 or 1.7499999999999999e99 < K Initial program 70.7%
Taylor expanded in J around 0
mul-1-negN/A
neg-sub0N/A
--lowering--.f6431.9%
Simplified31.9%
sub0-negN/A
neg-lowering-neg.f6431.9%
Applied egg-rr31.9%
if 5.7999999999999998e25 < K < 1.7499999999999999e99Initial program 74.5%
Taylor expanded in U around -inf
Simplified22.1%
Final simplification31.3%
U_m = (fabs.f64 U) J\_m = (fabs.f64 J) J\_s = (copysign.f64 #s(literal 1 binary64) J) (FPCore (J_s J_m K U_m) :precision binary64 (* J_s (if (<= U_m 1.02e-49) (* -2.0 J_m) (- 0.0 U_m))))
U_m = fabs(U);
J\_m = fabs(J);
J\_s = copysign(1.0, J);
double code(double J_s, double J_m, double K, double U_m) {
double tmp;
if (U_m <= 1.02e-49) {
tmp = -2.0 * J_m;
} else {
tmp = 0.0 - U_m;
}
return J_s * tmp;
}
U_m = abs(u)
J\_m = abs(j)
J\_s = copysign(1.0d0, j)
real(8) function code(j_s, j_m, k, u_m)
real(8), intent (in) :: j_s
real(8), intent (in) :: j_m
real(8), intent (in) :: k
real(8), intent (in) :: u_m
real(8) :: tmp
if (u_m <= 1.02d-49) then
tmp = (-2.0d0) * j_m
else
tmp = 0.0d0 - u_m
end if
code = j_s * tmp
end function
U_m = Math.abs(U);
J\_m = Math.abs(J);
J\_s = Math.copySign(1.0, J);
public static double code(double J_s, double J_m, double K, double U_m) {
double tmp;
if (U_m <= 1.02e-49) {
tmp = -2.0 * J_m;
} else {
tmp = 0.0 - U_m;
}
return J_s * tmp;
}
U_m = math.fabs(U) J\_m = math.fabs(J) J\_s = math.copysign(1.0, J) def code(J_s, J_m, K, U_m): tmp = 0 if U_m <= 1.02e-49: tmp = -2.0 * J_m else: tmp = 0.0 - U_m return J_s * tmp
U_m = abs(U) J\_m = abs(J) J\_s = copysign(1.0, J) function code(J_s, J_m, K, U_m) tmp = 0.0 if (U_m <= 1.02e-49) tmp = Float64(-2.0 * J_m); else tmp = Float64(0.0 - U_m); end return Float64(J_s * tmp) end
U_m = abs(U); J\_m = abs(J); J\_s = sign(J) * abs(1.0); function tmp_2 = code(J_s, J_m, K, U_m) tmp = 0.0; if (U_m <= 1.02e-49) tmp = -2.0 * J_m; else tmp = 0.0 - U_m; end tmp_2 = J_s * tmp; end
U_m = N[Abs[U], $MachinePrecision]
J\_m = N[Abs[J], $MachinePrecision]
J\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[J$95$s_, J$95$m_, K_, U$95$m_] := N[(J$95$s * If[LessEqual[U$95$m, 1.02e-49], N[(-2.0 * J$95$m), $MachinePrecision], N[(0.0 - U$95$m), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
U_m = \left|U\right|
\\
J\_m = \left|J\right|
\\
J\_s = \mathsf{copysign}\left(1, J\right)
\\
J\_s \cdot \begin{array}{l}
\mathbf{if}\;U\_m \leq 1.02 \cdot 10^{-49}:\\
\;\;\;\;-2 \cdot J\_m\\
\mathbf{else}:\\
\;\;\;\;0 - U\_m\\
\end{array}
\end{array}
if U < 1.02000000000000009e-49Initial program 78.2%
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
/-lowering-/.f64N/A
unpow2N/A
hypot-1-defN/A
hypot-lowering-hypot.f64N/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
/-lowering-/.f6490.0%
Simplified90.0%
Taylor expanded in K around 0
*-lowering-*.f64N/A
/-lowering-/.f6474.4%
Simplified74.4%
Taylor expanded in K around 0
*-lowering-*.f6455.8%
Simplified55.8%
Taylor expanded in J around inf
*-lowering-*.f6435.1%
Simplified35.1%
if 1.02000000000000009e-49 < U Initial program 52.4%
Taylor expanded in J around 0
mul-1-negN/A
neg-sub0N/A
--lowering--.f6452.6%
Simplified52.6%
sub0-negN/A
neg-lowering-neg.f6452.6%
Applied egg-rr52.6%
Final simplification40.0%
U_m = (fabs.f64 U) J\_m = (fabs.f64 J) J\_s = (copysign.f64 #s(literal 1 binary64) J) (FPCore (J_s J_m K U_m) :precision binary64 (* J_s U_m))
U_m = fabs(U);
J\_m = fabs(J);
J\_s = copysign(1.0, J);
double code(double J_s, double J_m, double K, double U_m) {
return J_s * U_m;
}
U_m = abs(u)
J\_m = abs(j)
J\_s = copysign(1.0d0, j)
real(8) function code(j_s, j_m, k, u_m)
real(8), intent (in) :: j_s
real(8), intent (in) :: j_m
real(8), intent (in) :: k
real(8), intent (in) :: u_m
code = j_s * u_m
end function
U_m = Math.abs(U);
J\_m = Math.abs(J);
J\_s = Math.copySign(1.0, J);
public static double code(double J_s, double J_m, double K, double U_m) {
return J_s * U_m;
}
U_m = math.fabs(U) J\_m = math.fabs(J) J\_s = math.copysign(1.0, J) def code(J_s, J_m, K, U_m): return J_s * U_m
U_m = abs(U) J\_m = abs(J) J\_s = copysign(1.0, J) function code(J_s, J_m, K, U_m) return Float64(J_s * U_m) end
U_m = abs(U); J\_m = abs(J); J\_s = sign(J) * abs(1.0); function tmp = code(J_s, J_m, K, U_m) tmp = J_s * U_m; end
U_m = N[Abs[U], $MachinePrecision]
J\_m = N[Abs[J], $MachinePrecision]
J\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[J]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[J$95$s_, J$95$m_, K_, U$95$m_] := N[(J$95$s * U$95$m), $MachinePrecision]
\begin{array}{l}
U_m = \left|U\right|
\\
J\_m = \left|J\right|
\\
J\_s = \mathsf{copysign}\left(1, J\right)
\\
J\_s \cdot U\_m
\end{array}
Initial program 70.9%
Taylor expanded in U around -inf
Simplified22.6%
herbie shell --seed 2024163
(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)))))