\[\left(\left(cosTheta_i > 0.9999 \land cosTheta_i \leq 1\right) \land \left(2.328306437 \cdot 10^{-10} \leq u1 \land u1 \leq 1\right)\right) \land \left(2.328306437 \cdot 10^{-10} \leq u2 \land u2 \leq 1\right)\]
\[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)
\]
↓
\[\begin{array}{l}
t_0 := \frac{u1}{u1 - 1}\\
t_1 := \frac{u1}{1 - u1}\\
\sqrt{\begin{array}{l}
\mathbf{if}\;t_0 \ne 0:\\
\;\;\;\;\frac{{t_0}^{2}}{t_1}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}} \cdot \sin \left(6.28318530718 \cdot u2\right)
\end{array}
\]
(FPCore (cosTheta_i u1 u2)
:precision binary64
(* (sqrt (/ u1 (- 1.0 u1))) (sin (* 6.28318530718 u2))))
↓
(FPCore (cosTheta_i u1 u2)
:precision binary64
(let* ((t_0 (/ u1 (- u1 1.0))) (t_1 (/ u1 (- 1.0 u1))))
(*
(sqrt (if (!= t_0 0.0) (/ (pow t_0 2.0) t_1) t_1))
(sin (* 6.28318530718 u2)))))double code(double cosTheta_i, double u1, double u2) {
return sqrt((u1 / (1.0 - u1))) * sin((6.28318530718 * u2));
}
↓
double code(double cosTheta_i, double u1, double u2) {
double t_0 = u1 / (u1 - 1.0);
double t_1 = u1 / (1.0 - u1);
double tmp;
if (t_0 != 0.0) {
tmp = pow(t_0, 2.0) / t_1;
} else {
tmp = t_1;
}
return sqrt(tmp) * sin((6.28318530718 * u2));
}
real(8) function code(costheta_i, u1, u2)
real(8), intent (in) :: costheta_i
real(8), intent (in) :: u1
real(8), intent (in) :: u2
code = sqrt((u1 / (1.0d0 - u1))) * sin((6.28318530718d0 * u2))
end function
↓
real(8) function code(costheta_i, u1, u2)
real(8), intent (in) :: costheta_i
real(8), intent (in) :: u1
real(8), intent (in) :: u2
real(8) :: t_0
real(8) :: t_1
real(8) :: tmp
t_0 = u1 / (u1 - 1.0d0)
t_1 = u1 / (1.0d0 - u1)
if (t_0 /= 0.0d0) then
tmp = (t_0 ** 2.0d0) / t_1
else
tmp = t_1
end if
code = sqrt(tmp) * sin((6.28318530718d0 * u2))
end function
public static double code(double cosTheta_i, double u1, double u2) {
return Math.sqrt((u1 / (1.0 - u1))) * Math.sin((6.28318530718 * u2));
}
↓
public static double code(double cosTheta_i, double u1, double u2) {
double t_0 = u1 / (u1 - 1.0);
double t_1 = u1 / (1.0 - u1);
double tmp;
if (t_0 != 0.0) {
tmp = Math.pow(t_0, 2.0) / t_1;
} else {
tmp = t_1;
}
return Math.sqrt(tmp) * Math.sin((6.28318530718 * u2));
}
def code(cosTheta_i, u1, u2):
return math.sqrt((u1 / (1.0 - u1))) * math.sin((6.28318530718 * u2))
↓
def code(cosTheta_i, u1, u2):
t_0 = u1 / (u1 - 1.0)
t_1 = u1 / (1.0 - u1)
tmp = 0
if t_0 != 0.0:
tmp = math.pow(t_0, 2.0) / t_1
else:
tmp = t_1
return math.sqrt(tmp) * math.sin((6.28318530718 * u2))
function code(cosTheta_i, u1, u2)
return Float64(sqrt(Float64(u1 / Float64(1.0 - u1))) * sin(Float64(6.28318530718 * u2)))
end
↓
function code(cosTheta_i, u1, u2)
t_0 = Float64(u1 / Float64(u1 - 1.0))
t_1 = Float64(u1 / Float64(1.0 - u1))
tmp = 0.0
if (t_0 != 0.0)
tmp = Float64((t_0 ^ 2.0) / t_1);
else
tmp = t_1;
end
return Float64(sqrt(tmp) * sin(Float64(6.28318530718 * u2)))
end
function tmp = code(cosTheta_i, u1, u2)
tmp = sqrt((u1 / (1.0 - u1))) * sin((6.28318530718 * u2));
end
↓
function tmp_2 = code(cosTheta_i, u1, u2)
t_0 = u1 / (u1 - 1.0);
t_1 = u1 / (1.0 - u1);
tmp = 0.0;
if (t_0 ~= 0.0)
tmp = (t_0 ^ 2.0) / t_1;
else
tmp = t_1;
end
tmp_2 = sqrt(tmp) * sin((6.28318530718 * u2));
end
code[cosTheta$95$i_, u1_, u2_] := N[(N[Sqrt[N[(u1 / N[(1.0 - u1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[Sin[N[(6.28318530718 * u2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
↓
code[cosTheta$95$i_, u1_, u2_] := Block[{t$95$0 = N[(u1 / N[(u1 - 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(u1 / N[(1.0 - u1), $MachinePrecision]), $MachinePrecision]}, N[(N[Sqrt[If[Unequal[t$95$0, 0.0], N[(N[Power[t$95$0, 2.0], $MachinePrecision] / t$95$1), $MachinePrecision], t$95$1]], $MachinePrecision] * N[Sin[N[(6.28318530718 * u2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]
\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)
↓
\begin{array}{l}
t_0 := \frac{u1}{u1 - 1}\\
t_1 := \frac{u1}{1 - u1}\\
\sqrt{\begin{array}{l}
\mathbf{if}\;t_0 \ne 0:\\
\;\;\;\;\frac{{t_0}^{2}}{t_1}\\
\mathbf{else}:\\
\;\;\;\;t_1\\
\end{array}} \cdot \sin \left(6.28318530718 \cdot u2\right)
\end{array}
Alternatives
| Alternative 1 |
|---|
| Error | 0.5 |
|---|
| Cost | 14532 |
|---|
\[\begin{array}{l}
t_0 := \frac{u1}{1 - u1}\\
\sqrt{\begin{array}{l}
\mathbf{if}\;\frac{u1}{u1 - 1} \ne 0:\\
\;\;\;\;\frac{u1 \cdot \frac{t_0}{1 - u1}}{t_0}\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}} \cdot \sin \left(6.28318530718 \cdot u2\right)
\end{array}
\]
| Alternative 2 |
|---|
| Error | 14.6 |
|---|
| Cost | 13636 |
|---|
\[\begin{array}{l}
t_0 := \frac{u1}{1 - u1}\\
\mathbf{if}\;6.28318530718 \cdot u2 \leq 4.8 \cdot 10^{-5}:\\
\;\;\;\;6.28318530718 \cdot \left(u2 \cdot \begin{array}{l}
\mathbf{if}\;t_0 \ne 0:\\
\;\;\;\;\frac{1}{{t_0}^{-0.5}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{t_0}\\
\end{array}\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt{\left(u1 - -1\right) \cdot u1} \cdot \sin \left(6.28318530718 \cdot u2\right)\\
\end{array}
\]
| Alternative 3 |
|---|
| Error | 21.0 |
|---|
| Cost | 13380 |
|---|
\[\begin{array}{l}
t_0 := \frac{u1}{1 - u1}\\
\mathbf{if}\;6.28318530718 \cdot u2 \leq 0.01055:\\
\;\;\;\;6.28318530718 \cdot \left(u2 \cdot \begin{array}{l}
\mathbf{if}\;t_0 \ne 0:\\
\;\;\;\;\frac{1}{{t_0}^{-0.5}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{t_0}\\
\end{array}\right)\\
\mathbf{else}:\\
\;\;\;\;\sqrt{u1} \cdot \sin \left(6.28318530718 \cdot u2\right)\\
\end{array}
\]
| Alternative 4 |
|---|
| Error | 0.5 |
|---|
| Cost | 13376 |
|---|
\[\sqrt{\frac{u1}{1 - u1}} \cdot \sin \left(6.28318530718 \cdot u2\right)
\]
| Alternative 5 |
|---|
| Error | 24.4 |
|---|
| Cost | 7556 |
|---|
\[\begin{array}{l}
t_0 := \frac{u1}{1 - u1}\\
6.28318530718 \cdot \left(u2 \cdot \begin{array}{l}
\mathbf{if}\;t_0 \ne 0:\\
\;\;\;\;\frac{1}{{t_0}^{-0.5}}\\
\mathbf{else}:\\
\;\;\;\;\sqrt{t_0}\\
\end{array}\right)
\end{array}
\]
| Alternative 6 |
|---|
| Error | 24.4 |
|---|
| Cost | 7104 |
|---|
\[6.28318530718 \cdot \left(u2 \cdot \sqrt{\frac{-1}{u1 + -1} \cdot u1}\right)
\]
| Alternative 7 |
|---|
| Error | 24.4 |
|---|
| Cost | 6976 |
|---|
\[6.28318530718 \cdot \left(u2 \cdot \sqrt{\frac{u1}{1 - u1}}\right)
\]
| Alternative 8 |
|---|
| Error | 24.4 |
|---|
| Cost | 6976 |
|---|
\[\left(\sqrt{\frac{u1}{1 - u1}} \cdot 6.28318530718\right) \cdot u2
\]
| Alternative 9 |
|---|
| Error | 39.4 |
|---|
| Cost | 6720 |
|---|
\[6.28318530718 \cdot \left(u2 \cdot \sqrt{u1}\right)
\]
| Alternative 10 |
|---|
| Error | 39.4 |
|---|
| Cost | 6720 |
|---|
\[\left(6.28318530718 \cdot u2\right) \cdot \sqrt{u1}
\]
| Alternative 11 |
|---|
| Error | 39.4 |
|---|
| Cost | 6720 |
|---|
\[\left(\sqrt{u1} \cdot 6.28318530718\right) \cdot u2
\]