
(FPCore (A B C) :precision binary64 (* 180.0 (/ (atan (* (/ 1.0 B) (- (- C A) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0)))))) PI)))
double code(double A, double B, double C) {
return 180.0 * (atan(((1.0 / B) * ((C - A) - sqrt((pow((A - C), 2.0) + pow(B, 2.0)))))) / ((double) M_PI));
}
public static double code(double A, double B, double C) {
return 180.0 * (Math.atan(((1.0 / B) * ((C - A) - Math.sqrt((Math.pow((A - C), 2.0) + Math.pow(B, 2.0)))))) / Math.PI);
}
def code(A, B, C): return 180.0 * (math.atan(((1.0 / B) * ((C - A) - math.sqrt((math.pow((A - C), 2.0) + math.pow(B, 2.0)))))) / math.pi)
function code(A, B, C) return Float64(180.0 * Float64(atan(Float64(Float64(1.0 / B) * Float64(Float64(C - A) - sqrt(Float64((Float64(A - C) ^ 2.0) + (B ^ 2.0)))))) / pi)) end
function tmp = code(A, B, C) tmp = 180.0 * (atan(((1.0 / B) * ((C - A) - sqrt((((A - C) ^ 2.0) + (B ^ 2.0)))))) / pi); end
code[A_, B_, C_] := N[(180.0 * N[(N[ArcTan[N[(N[(1.0 / B), $MachinePrecision] * N[(N[(C - A), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(A - C), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[B, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
180 \cdot \frac{\tan^{-1} \left(\frac{1}{B} \cdot \left(\left(C - A\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)\right)}{\pi}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 17 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (A B C) :precision binary64 (* 180.0 (/ (atan (* (/ 1.0 B) (- (- C A) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0)))))) PI)))
double code(double A, double B, double C) {
return 180.0 * (atan(((1.0 / B) * ((C - A) - sqrt((pow((A - C), 2.0) + pow(B, 2.0)))))) / ((double) M_PI));
}
public static double code(double A, double B, double C) {
return 180.0 * (Math.atan(((1.0 / B) * ((C - A) - Math.sqrt((Math.pow((A - C), 2.0) + Math.pow(B, 2.0)))))) / Math.PI);
}
def code(A, B, C): return 180.0 * (math.atan(((1.0 / B) * ((C - A) - math.sqrt((math.pow((A - C), 2.0) + math.pow(B, 2.0)))))) / math.pi)
function code(A, B, C) return Float64(180.0 * Float64(atan(Float64(Float64(1.0 / B) * Float64(Float64(C - A) - sqrt(Float64((Float64(A - C) ^ 2.0) + (B ^ 2.0)))))) / pi)) end
function tmp = code(A, B, C) tmp = 180.0 * (atan(((1.0 / B) * ((C - A) - sqrt((((A - C) ^ 2.0) + (B ^ 2.0)))))) / pi); end
code[A_, B_, C_] := N[(180.0 * N[(N[ArcTan[N[(N[(1.0 / B), $MachinePrecision] * N[(N[(C - A), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(A - C), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[B, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
180 \cdot \frac{\tan^{-1} \left(\frac{1}{B} \cdot \left(\left(C - A\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)\right)}{\pi}
\end{array}
(FPCore (A B C) :precision binary64 (if (<= A -4.8e+33) (* (atan (* -0.5 (/ B (- C A)))) (/ 180.0 PI)) (* (/ 180.0 PI) (atan (/ (- C (+ A (hypot B (- C A)))) B)))))
double code(double A, double B, double C) {
double tmp;
if (A <= -4.8e+33) {
tmp = atan((-0.5 * (B / (C - A)))) * (180.0 / ((double) M_PI));
} else {
tmp = (180.0 / ((double) M_PI)) * atan(((C - (A + hypot(B, (C - A)))) / B));
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (A <= -4.8e+33) {
tmp = Math.atan((-0.5 * (B / (C - A)))) * (180.0 / Math.PI);
} else {
tmp = (180.0 / Math.PI) * Math.atan(((C - (A + Math.hypot(B, (C - A)))) / B));
}
return tmp;
}
def code(A, B, C): tmp = 0 if A <= -4.8e+33: tmp = math.atan((-0.5 * (B / (C - A)))) * (180.0 / math.pi) else: tmp = (180.0 / math.pi) * math.atan(((C - (A + math.hypot(B, (C - A)))) / B)) return tmp
function code(A, B, C) tmp = 0.0 if (A <= -4.8e+33) tmp = Float64(atan(Float64(-0.5 * Float64(B / Float64(C - A)))) * Float64(180.0 / pi)); else tmp = Float64(Float64(180.0 / pi) * atan(Float64(Float64(C - Float64(A + hypot(B, Float64(C - A)))) / B))); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (A <= -4.8e+33) tmp = atan((-0.5 * (B / (C - A)))) * (180.0 / pi); else tmp = (180.0 / pi) * atan(((C - (A + hypot(B, (C - A)))) / B)); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[A, -4.8e+33], N[(N[ArcTan[N[(-0.5 * N[(B / N[(C - A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(180.0 / Pi), $MachinePrecision]), $MachinePrecision], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[N[(N[(C - N[(A + N[Sqrt[B ^ 2 + N[(C - A), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / B), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;A \leq -4.8 \cdot 10^{+33}:\\
\;\;\;\;\tan^{-1} \left(-0.5 \cdot \frac{B}{C - A}\right) \cdot \frac{180}{\pi}\\
\mathbf{else}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} \left(\frac{C - \left(A + \mathsf{hypot}\left(B, C - A\right)\right)}{B}\right)\\
\end{array}
\end{array}
if A < -4.8e33Initial program 10.1%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified13.5%
Taylor expanded in B around 0
*-lowering-*.f64N/A
/-lowering-/.f64N/A
--lowering--.f6491.3%
Simplified91.3%
if -4.8e33 < A Initial program 68.2%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified88.4%
Final simplification89.1%
(FPCore (A B C)
:precision binary64
(if (<= A -3.2e+33)
(* (atan (* -0.5 (/ B (- C A)))) (/ 180.0 PI))
(if (<= A 7e+40)
(* (/ 180.0 PI) (atan (/ (- C (hypot C B)) B)))
(/ (atan (/ (- (- C A) (+ A (* B (/ (* B 0.5) A)))) B)) (/ PI 180.0)))))
double code(double A, double B, double C) {
double tmp;
if (A <= -3.2e+33) {
tmp = atan((-0.5 * (B / (C - A)))) * (180.0 / ((double) M_PI));
} else if (A <= 7e+40) {
tmp = (180.0 / ((double) M_PI)) * atan(((C - hypot(C, B)) / B));
} else {
tmp = atan((((C - A) - (A + (B * ((B * 0.5) / A)))) / B)) / (((double) M_PI) / 180.0);
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (A <= -3.2e+33) {
tmp = Math.atan((-0.5 * (B / (C - A)))) * (180.0 / Math.PI);
} else if (A <= 7e+40) {
tmp = (180.0 / Math.PI) * Math.atan(((C - Math.hypot(C, B)) / B));
} else {
tmp = Math.atan((((C - A) - (A + (B * ((B * 0.5) / A)))) / B)) / (Math.PI / 180.0);
}
return tmp;
}
def code(A, B, C): tmp = 0 if A <= -3.2e+33: tmp = math.atan((-0.5 * (B / (C - A)))) * (180.0 / math.pi) elif A <= 7e+40: tmp = (180.0 / math.pi) * math.atan(((C - math.hypot(C, B)) / B)) else: tmp = math.atan((((C - A) - (A + (B * ((B * 0.5) / A)))) / B)) / (math.pi / 180.0) return tmp
function code(A, B, C) tmp = 0.0 if (A <= -3.2e+33) tmp = Float64(atan(Float64(-0.5 * Float64(B / Float64(C - A)))) * Float64(180.0 / pi)); elseif (A <= 7e+40) tmp = Float64(Float64(180.0 / pi) * atan(Float64(Float64(C - hypot(C, B)) / B))); else tmp = Float64(atan(Float64(Float64(Float64(C - A) - Float64(A + Float64(B * Float64(Float64(B * 0.5) / A)))) / B)) / Float64(pi / 180.0)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (A <= -3.2e+33) tmp = atan((-0.5 * (B / (C - A)))) * (180.0 / pi); elseif (A <= 7e+40) tmp = (180.0 / pi) * atan(((C - hypot(C, B)) / B)); else tmp = atan((((C - A) - (A + (B * ((B * 0.5) / A)))) / B)) / (pi / 180.0); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[A, -3.2e+33], N[(N[ArcTan[N[(-0.5 * N[(B / N[(C - A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(180.0 / Pi), $MachinePrecision]), $MachinePrecision], If[LessEqual[A, 7e+40], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[N[(N[(C - N[Sqrt[C ^ 2 + B ^ 2], $MachinePrecision]), $MachinePrecision] / B), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(N[ArcTan[N[(N[(N[(C - A), $MachinePrecision] - N[(A + N[(B * N[(N[(B * 0.5), $MachinePrecision] / A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / B), $MachinePrecision]], $MachinePrecision] / N[(Pi / 180.0), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;A \leq -3.2 \cdot 10^{+33}:\\
\;\;\;\;\tan^{-1} \left(-0.5 \cdot \frac{B}{C - A}\right) \cdot \frac{180}{\pi}\\
\mathbf{elif}\;A \leq 7 \cdot 10^{+40}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} \left(\frac{C - \mathsf{hypot}\left(C, B\right)}{B}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\tan^{-1} \left(\frac{\left(C - A\right) - \left(A + B \cdot \frac{B \cdot 0.5}{A}\right)}{B}\right)}{\frac{\pi}{180}}\\
\end{array}
\end{array}
if A < -3.20000000000000017e33Initial program 10.1%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified13.5%
Taylor expanded in B around 0
*-lowering-*.f64N/A
/-lowering-/.f64N/A
--lowering--.f6491.3%
Simplified91.3%
if -3.20000000000000017e33 < A < 6.9999999999999998e40Initial program 59.7%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified85.8%
Taylor expanded in A around 0
/-lowering-/.f64N/A
--lowering--.f64N/A
+-commutativeN/A
unpow2N/A
unpow2N/A
hypot-defineN/A
hypot-lowering-hypot.f6481.7%
Simplified81.7%
if 6.9999999999999998e40 < A Initial program 92.2%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified95.5%
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
associate--r+N/A
--lowering--.f64N/A
--lowering--.f64N/A
hypot-defineN/A
hypot-lowering-hypot.f64N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
PI-lowering-PI.f6495.5%
Applied egg-rr95.5%
Taylor expanded in C around 0
unpow2N/A
unpow2N/A
hypot-defineN/A
hypot-lowering-hypot.f6494.3%
Simplified94.3%
Taylor expanded in B around 0
associate-*r/N/A
*-commutativeN/A
associate-*r/N/A
metadata-evalN/A
associate-*r/N/A
+-lowering-+.f64N/A
unpow2N/A
associate-*l*N/A
associate-*r/N/A
metadata-evalN/A
associate-/l*N/A
*-commutativeN/A
associate-*r/N/A
*-lowering-*.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6491.3%
Simplified91.3%
Final simplification85.9%
(FPCore (A B C) :precision binary64 (if (<= A -1.02e+34) (* (atan (* -0.5 (/ B (- C A)))) (/ 180.0 PI)) (* (/ 180.0 PI) (atan (/ (- C (+ A (hypot A B))) B)))))
double code(double A, double B, double C) {
double tmp;
if (A <= -1.02e+34) {
tmp = atan((-0.5 * (B / (C - A)))) * (180.0 / ((double) M_PI));
} else {
tmp = (180.0 / ((double) M_PI)) * atan(((C - (A + hypot(A, B))) / B));
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (A <= -1.02e+34) {
tmp = Math.atan((-0.5 * (B / (C - A)))) * (180.0 / Math.PI);
} else {
tmp = (180.0 / Math.PI) * Math.atan(((C - (A + Math.hypot(A, B))) / B));
}
return tmp;
}
def code(A, B, C): tmp = 0 if A <= -1.02e+34: tmp = math.atan((-0.5 * (B / (C - A)))) * (180.0 / math.pi) else: tmp = (180.0 / math.pi) * math.atan(((C - (A + math.hypot(A, B))) / B)) return tmp
function code(A, B, C) tmp = 0.0 if (A <= -1.02e+34) tmp = Float64(atan(Float64(-0.5 * Float64(B / Float64(C - A)))) * Float64(180.0 / pi)); else tmp = Float64(Float64(180.0 / pi) * atan(Float64(Float64(C - Float64(A + hypot(A, B))) / B))); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (A <= -1.02e+34) tmp = atan((-0.5 * (B / (C - A)))) * (180.0 / pi); else tmp = (180.0 / pi) * atan(((C - (A + hypot(A, B))) / B)); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[A, -1.02e+34], N[(N[ArcTan[N[(-0.5 * N[(B / N[(C - A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(180.0 / Pi), $MachinePrecision]), $MachinePrecision], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[N[(N[(C - N[(A + N[Sqrt[A ^ 2 + B ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / B), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;A \leq -1.02 \cdot 10^{+34}:\\
\;\;\;\;\tan^{-1} \left(-0.5 \cdot \frac{B}{C - A}\right) \cdot \frac{180}{\pi}\\
\mathbf{else}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} \left(\frac{C - \left(A + \mathsf{hypot}\left(A, B\right)\right)}{B}\right)\\
\end{array}
\end{array}
if A < -1.02e34Initial program 10.1%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified13.5%
Taylor expanded in B around 0
*-lowering-*.f64N/A
/-lowering-/.f64N/A
--lowering--.f6491.3%
Simplified91.3%
if -1.02e34 < A Initial program 68.2%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified88.4%
Taylor expanded in C around 0
+-lowering-+.f64N/A
unpow2N/A
unpow2N/A
hypot-defineN/A
hypot-lowering-hypot.f6484.0%
Simplified84.0%
Final simplification85.7%
(FPCore (A B C)
:precision binary64
(let* ((t_0 (/ (- C A) B)))
(if (<= A -1.75e-5)
(* (atan (* -0.5 (/ B (- C A)))) (/ 180.0 PI))
(if (<= A 1.85e-135)
(* (/ 180.0 PI) (atan (+ t_0 -1.0)))
(* 180.0 (/ (atan (+ t_0 1.0)) PI))))))
double code(double A, double B, double C) {
double t_0 = (C - A) / B;
double tmp;
if (A <= -1.75e-5) {
tmp = atan((-0.5 * (B / (C - A)))) * (180.0 / ((double) M_PI));
} else if (A <= 1.85e-135) {
tmp = (180.0 / ((double) M_PI)) * atan((t_0 + -1.0));
} else {
tmp = 180.0 * (atan((t_0 + 1.0)) / ((double) M_PI));
}
return tmp;
}
public static double code(double A, double B, double C) {
double t_0 = (C - A) / B;
double tmp;
if (A <= -1.75e-5) {
tmp = Math.atan((-0.5 * (B / (C - A)))) * (180.0 / Math.PI);
} else if (A <= 1.85e-135) {
tmp = (180.0 / Math.PI) * Math.atan((t_0 + -1.0));
} else {
tmp = 180.0 * (Math.atan((t_0 + 1.0)) / Math.PI);
}
return tmp;
}
def code(A, B, C): t_0 = (C - A) / B tmp = 0 if A <= -1.75e-5: tmp = math.atan((-0.5 * (B / (C - A)))) * (180.0 / math.pi) elif A <= 1.85e-135: tmp = (180.0 / math.pi) * math.atan((t_0 + -1.0)) else: tmp = 180.0 * (math.atan((t_0 + 1.0)) / math.pi) return tmp
function code(A, B, C) t_0 = Float64(Float64(C - A) / B) tmp = 0.0 if (A <= -1.75e-5) tmp = Float64(atan(Float64(-0.5 * Float64(B / Float64(C - A)))) * Float64(180.0 / pi)); elseif (A <= 1.85e-135) tmp = Float64(Float64(180.0 / pi) * atan(Float64(t_0 + -1.0))); else tmp = Float64(180.0 * Float64(atan(Float64(t_0 + 1.0)) / pi)); end return tmp end
function tmp_2 = code(A, B, C) t_0 = (C - A) / B; tmp = 0.0; if (A <= -1.75e-5) tmp = atan((-0.5 * (B / (C - A)))) * (180.0 / pi); elseif (A <= 1.85e-135) tmp = (180.0 / pi) * atan((t_0 + -1.0)); else tmp = 180.0 * (atan((t_0 + 1.0)) / pi); end tmp_2 = tmp; end
code[A_, B_, C_] := Block[{t$95$0 = N[(N[(C - A), $MachinePrecision] / B), $MachinePrecision]}, If[LessEqual[A, -1.75e-5], N[(N[ArcTan[N[(-0.5 * N[(B / N[(C - A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(180.0 / Pi), $MachinePrecision]), $MachinePrecision], If[LessEqual[A, 1.85e-135], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[N[(t$95$0 + -1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(t$95$0 + 1.0), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{C - A}{B}\\
\mathbf{if}\;A \leq -1.75 \cdot 10^{-5}:\\
\;\;\;\;\tan^{-1} \left(-0.5 \cdot \frac{B}{C - A}\right) \cdot \frac{180}{\pi}\\
\mathbf{elif}\;A \leq 1.85 \cdot 10^{-135}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} \left(t\_0 + -1\right)\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(t\_0 + 1\right)}{\pi}\\
\end{array}
\end{array}
if A < -1.7499999999999998e-5Initial program 11.5%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified20.6%
Taylor expanded in B around 0
*-lowering-*.f64N/A
/-lowering-/.f64N/A
--lowering--.f6486.3%
Simplified86.3%
if -1.7499999999999998e-5 < A < 1.8499999999999999e-135Initial program 62.3%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified87.4%
Taylor expanded in B around inf
+-commutativeN/A
associate--r+N/A
div-subN/A
--lowering--.f64N/A
/-lowering-/.f64N/A
--lowering--.f6461.2%
Simplified61.2%
if 1.8499999999999999e-135 < A Initial program 78.8%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6479.8%
Simplified79.8%
Final simplification74.7%
(FPCore (A B C)
:precision binary64
(if (<= A -4.2e-6)
(* (atan (* -0.5 (/ B (- C A)))) (/ 180.0 PI))
(if (<= A 1.9e-135)
(* (/ 180.0 PI) (atan (/ (- C B) B)))
(* 180.0 (/ (atan (+ (/ (- C A) B) 1.0)) PI)))))
double code(double A, double B, double C) {
double tmp;
if (A <= -4.2e-6) {
tmp = atan((-0.5 * (B / (C - A)))) * (180.0 / ((double) M_PI));
} else if (A <= 1.9e-135) {
tmp = (180.0 / ((double) M_PI)) * atan(((C - B) / B));
} else {
tmp = 180.0 * (atan((((C - A) / B) + 1.0)) / ((double) M_PI));
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (A <= -4.2e-6) {
tmp = Math.atan((-0.5 * (B / (C - A)))) * (180.0 / Math.PI);
} else if (A <= 1.9e-135) {
tmp = (180.0 / Math.PI) * Math.atan(((C - B) / B));
} else {
tmp = 180.0 * (Math.atan((((C - A) / B) + 1.0)) / Math.PI);
}
return tmp;
}
def code(A, B, C): tmp = 0 if A <= -4.2e-6: tmp = math.atan((-0.5 * (B / (C - A)))) * (180.0 / math.pi) elif A <= 1.9e-135: tmp = (180.0 / math.pi) * math.atan(((C - B) / B)) else: tmp = 180.0 * (math.atan((((C - A) / B) + 1.0)) / math.pi) return tmp
function code(A, B, C) tmp = 0.0 if (A <= -4.2e-6) tmp = Float64(atan(Float64(-0.5 * Float64(B / Float64(C - A)))) * Float64(180.0 / pi)); elseif (A <= 1.9e-135) tmp = Float64(Float64(180.0 / pi) * atan(Float64(Float64(C - B) / B))); else tmp = Float64(180.0 * Float64(atan(Float64(Float64(Float64(C - A) / B) + 1.0)) / pi)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (A <= -4.2e-6) tmp = atan((-0.5 * (B / (C - A)))) * (180.0 / pi); elseif (A <= 1.9e-135) tmp = (180.0 / pi) * atan(((C - B) / B)); else tmp = 180.0 * (atan((((C - A) / B) + 1.0)) / pi); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[A, -4.2e-6], N[(N[ArcTan[N[(-0.5 * N[(B / N[(C - A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(180.0 / Pi), $MachinePrecision]), $MachinePrecision], If[LessEqual[A, 1.9e-135], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[N[(N[(C - B), $MachinePrecision] / B), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(N[(N[(C - A), $MachinePrecision] / B), $MachinePrecision] + 1.0), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;A \leq -4.2 \cdot 10^{-6}:\\
\;\;\;\;\tan^{-1} \left(-0.5 \cdot \frac{B}{C - A}\right) \cdot \frac{180}{\pi}\\
\mathbf{elif}\;A \leq 1.9 \cdot 10^{-135}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} \left(\frac{C - B}{B}\right)\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(\frac{C - A}{B} + 1\right)}{\pi}\\
\end{array}
\end{array}
if A < -4.1999999999999996e-6Initial program 11.5%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified20.6%
Taylor expanded in B around 0
*-lowering-*.f64N/A
/-lowering-/.f64N/A
--lowering--.f6486.3%
Simplified86.3%
if -4.1999999999999996e-6 < A < 1.9000000000000001e-135Initial program 62.3%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified87.4%
Taylor expanded in B around inf
Simplified60.8%
if 1.9000000000000001e-135 < A Initial program 78.8%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6479.8%
Simplified79.8%
Final simplification74.6%
(FPCore (A B C)
:precision binary64
(if (<= A -2.35e-7)
(* (/ 180.0 PI) (atan (/ (* B 0.5) A)))
(if (<= A 1.05e-135)
(* (/ 180.0 PI) (atan (/ (- C B) B)))
(* 180.0 (/ (atan (+ (/ (- C A) B) 1.0)) PI)))))
double code(double A, double B, double C) {
double tmp;
if (A <= -2.35e-7) {
tmp = (180.0 / ((double) M_PI)) * atan(((B * 0.5) / A));
} else if (A <= 1.05e-135) {
tmp = (180.0 / ((double) M_PI)) * atan(((C - B) / B));
} else {
tmp = 180.0 * (atan((((C - A) / B) + 1.0)) / ((double) M_PI));
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (A <= -2.35e-7) {
tmp = (180.0 / Math.PI) * Math.atan(((B * 0.5) / A));
} else if (A <= 1.05e-135) {
tmp = (180.0 / Math.PI) * Math.atan(((C - B) / B));
} else {
tmp = 180.0 * (Math.atan((((C - A) / B) + 1.0)) / Math.PI);
}
return tmp;
}
def code(A, B, C): tmp = 0 if A <= -2.35e-7: tmp = (180.0 / math.pi) * math.atan(((B * 0.5) / A)) elif A <= 1.05e-135: tmp = (180.0 / math.pi) * math.atan(((C - B) / B)) else: tmp = 180.0 * (math.atan((((C - A) / B) + 1.0)) / math.pi) return tmp
function code(A, B, C) tmp = 0.0 if (A <= -2.35e-7) tmp = Float64(Float64(180.0 / pi) * atan(Float64(Float64(B * 0.5) / A))); elseif (A <= 1.05e-135) tmp = Float64(Float64(180.0 / pi) * atan(Float64(Float64(C - B) / B))); else tmp = Float64(180.0 * Float64(atan(Float64(Float64(Float64(C - A) / B) + 1.0)) / pi)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (A <= -2.35e-7) tmp = (180.0 / pi) * atan(((B * 0.5) / A)); elseif (A <= 1.05e-135) tmp = (180.0 / pi) * atan(((C - B) / B)); else tmp = 180.0 * (atan((((C - A) / B) + 1.0)) / pi); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[A, -2.35e-7], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[N[(N[(B * 0.5), $MachinePrecision] / A), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[A, 1.05e-135], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[N[(N[(C - B), $MachinePrecision] / B), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(N[(N[(C - A), $MachinePrecision] / B), $MachinePrecision] + 1.0), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;A \leq -2.35 \cdot 10^{-7}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} \left(\frac{B \cdot 0.5}{A}\right)\\
\mathbf{elif}\;A \leq 1.05 \cdot 10^{-135}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} \left(\frac{C - B}{B}\right)\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(\frac{C - A}{B} + 1\right)}{\pi}\\
\end{array}
\end{array}
if A < -2.35e-7Initial program 11.5%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified20.6%
Taylor expanded in A around -inf
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f6478.6%
Simplified78.6%
if -2.35e-7 < A < 1.05e-135Initial program 62.3%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified87.4%
Taylor expanded in B around inf
Simplified60.8%
if 1.05e-135 < A Initial program 78.8%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6479.8%
Simplified79.8%
Final simplification72.5%
(FPCore (A B C)
:precision binary64
(if (<= A -4e-6)
(* (/ 180.0 PI) (atan (/ (* B 0.5) A)))
(if (<= A 3.4e-135)
(* (/ 180.0 PI) (atan (/ (- C B) B)))
(* 180.0 (/ (atan (- 1.0 (/ A B))) PI)))))
double code(double A, double B, double C) {
double tmp;
if (A <= -4e-6) {
tmp = (180.0 / ((double) M_PI)) * atan(((B * 0.5) / A));
} else if (A <= 3.4e-135) {
tmp = (180.0 / ((double) M_PI)) * atan(((C - B) / B));
} else {
tmp = 180.0 * (atan((1.0 - (A / B))) / ((double) M_PI));
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (A <= -4e-6) {
tmp = (180.0 / Math.PI) * Math.atan(((B * 0.5) / A));
} else if (A <= 3.4e-135) {
tmp = (180.0 / Math.PI) * Math.atan(((C - B) / B));
} else {
tmp = 180.0 * (Math.atan((1.0 - (A / B))) / Math.PI);
}
return tmp;
}
def code(A, B, C): tmp = 0 if A <= -4e-6: tmp = (180.0 / math.pi) * math.atan(((B * 0.5) / A)) elif A <= 3.4e-135: tmp = (180.0 / math.pi) * math.atan(((C - B) / B)) else: tmp = 180.0 * (math.atan((1.0 - (A / B))) / math.pi) return tmp
function code(A, B, C) tmp = 0.0 if (A <= -4e-6) tmp = Float64(Float64(180.0 / pi) * atan(Float64(Float64(B * 0.5) / A))); elseif (A <= 3.4e-135) tmp = Float64(Float64(180.0 / pi) * atan(Float64(Float64(C - B) / B))); else tmp = Float64(180.0 * Float64(atan(Float64(1.0 - Float64(A / B))) / pi)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (A <= -4e-6) tmp = (180.0 / pi) * atan(((B * 0.5) / A)); elseif (A <= 3.4e-135) tmp = (180.0 / pi) * atan(((C - B) / B)); else tmp = 180.0 * (atan((1.0 - (A / B))) / pi); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[A, -4e-6], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[N[(N[(B * 0.5), $MachinePrecision] / A), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[A, 3.4e-135], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[N[(N[(C - B), $MachinePrecision] / B), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(1.0 - N[(A / B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;A \leq -4 \cdot 10^{-6}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} \left(\frac{B \cdot 0.5}{A}\right)\\
\mathbf{elif}\;A \leq 3.4 \cdot 10^{-135}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} \left(\frac{C - B}{B}\right)\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(1 - \frac{A}{B}\right)}{\pi}\\
\end{array}
\end{array}
if A < -3.99999999999999982e-6Initial program 11.5%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified20.6%
Taylor expanded in A around -inf
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f6478.6%
Simplified78.6%
if -3.99999999999999982e-6 < A < 3.39999999999999989e-135Initial program 62.3%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified87.4%
Taylor expanded in B around inf
Simplified60.8%
if 3.39999999999999989e-135 < A Initial program 78.8%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6479.8%
Simplified79.8%
Taylor expanded in C around 0
--lowering--.f64N/A
/-lowering-/.f6478.6%
Simplified78.6%
Final simplification72.1%
(FPCore (A B C)
:precision binary64
(if (<= A -3.4e+16)
(* (/ 180.0 PI) (atan (/ (* B 0.5) A)))
(if (<= A 8e-166)
(* 180.0 (/ (atan (+ 1.0 (/ C B))) PI))
(* 180.0 (/ (atan (- 1.0 (/ A B))) PI)))))
double code(double A, double B, double C) {
double tmp;
if (A <= -3.4e+16) {
tmp = (180.0 / ((double) M_PI)) * atan(((B * 0.5) / A));
} else if (A <= 8e-166) {
tmp = 180.0 * (atan((1.0 + (C / B))) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((1.0 - (A / B))) / ((double) M_PI));
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (A <= -3.4e+16) {
tmp = (180.0 / Math.PI) * Math.atan(((B * 0.5) / A));
} else if (A <= 8e-166) {
tmp = 180.0 * (Math.atan((1.0 + (C / B))) / Math.PI);
} else {
tmp = 180.0 * (Math.atan((1.0 - (A / B))) / Math.PI);
}
return tmp;
}
def code(A, B, C): tmp = 0 if A <= -3.4e+16: tmp = (180.0 / math.pi) * math.atan(((B * 0.5) / A)) elif A <= 8e-166: tmp = 180.0 * (math.atan((1.0 + (C / B))) / math.pi) else: tmp = 180.0 * (math.atan((1.0 - (A / B))) / math.pi) return tmp
function code(A, B, C) tmp = 0.0 if (A <= -3.4e+16) tmp = Float64(Float64(180.0 / pi) * atan(Float64(Float64(B * 0.5) / A))); elseif (A <= 8e-166) tmp = Float64(180.0 * Float64(atan(Float64(1.0 + Float64(C / B))) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(1.0 - Float64(A / B))) / pi)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (A <= -3.4e+16) tmp = (180.0 / pi) * atan(((B * 0.5) / A)); elseif (A <= 8e-166) tmp = 180.0 * (atan((1.0 + (C / B))) / pi); else tmp = 180.0 * (atan((1.0 - (A / B))) / pi); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[A, -3.4e+16], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[N[(N[(B * 0.5), $MachinePrecision] / A), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[A, 8e-166], N[(180.0 * N[(N[ArcTan[N[(1.0 + N[(C / B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(1.0 - N[(A / B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;A \leq -3.4 \cdot 10^{+16}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} \left(\frac{B \cdot 0.5}{A}\right)\\
\mathbf{elif}\;A \leq 8 \cdot 10^{-166}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(1 + \frac{C}{B}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(1 - \frac{A}{B}\right)}{\pi}\\
\end{array}
\end{array}
if A < -3.4e16Initial program 10.4%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified16.3%
Taylor expanded in A around -inf
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f6483.1%
Simplified83.1%
if -3.4e16 < A < 8.00000000000000032e-166Initial program 60.2%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6457.3%
Simplified57.3%
Taylor expanded in A around 0
+-lowering-+.f64N/A
/-lowering-/.f6457.5%
Simplified57.5%
if 8.00000000000000032e-166 < A Initial program 76.7%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6474.7%
Simplified74.7%
Taylor expanded in C around 0
--lowering--.f64N/A
/-lowering-/.f6473.6%
Simplified73.6%
Final simplification70.0%
(FPCore (A B C)
:precision binary64
(if (<= A -5.5e+18)
(* (/ 180.0 PI) (atan (* B (/ 0.5 A))))
(if (<= A 1.4e-165)
(* 180.0 (/ (atan (+ 1.0 (/ C B))) PI))
(* 180.0 (/ (atan (- 1.0 (/ A B))) PI)))))
double code(double A, double B, double C) {
double tmp;
if (A <= -5.5e+18) {
tmp = (180.0 / ((double) M_PI)) * atan((B * (0.5 / A)));
} else if (A <= 1.4e-165) {
tmp = 180.0 * (atan((1.0 + (C / B))) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((1.0 - (A / B))) / ((double) M_PI));
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (A <= -5.5e+18) {
tmp = (180.0 / Math.PI) * Math.atan((B * (0.5 / A)));
} else if (A <= 1.4e-165) {
tmp = 180.0 * (Math.atan((1.0 + (C / B))) / Math.PI);
} else {
tmp = 180.0 * (Math.atan((1.0 - (A / B))) / Math.PI);
}
return tmp;
}
def code(A, B, C): tmp = 0 if A <= -5.5e+18: tmp = (180.0 / math.pi) * math.atan((B * (0.5 / A))) elif A <= 1.4e-165: tmp = 180.0 * (math.atan((1.0 + (C / B))) / math.pi) else: tmp = 180.0 * (math.atan((1.0 - (A / B))) / math.pi) return tmp
function code(A, B, C) tmp = 0.0 if (A <= -5.5e+18) tmp = Float64(Float64(180.0 / pi) * atan(Float64(B * Float64(0.5 / A)))); elseif (A <= 1.4e-165) tmp = Float64(180.0 * Float64(atan(Float64(1.0 + Float64(C / B))) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(1.0 - Float64(A / B))) / pi)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (A <= -5.5e+18) tmp = (180.0 / pi) * atan((B * (0.5 / A))); elseif (A <= 1.4e-165) tmp = 180.0 * (atan((1.0 + (C / B))) / pi); else tmp = 180.0 * (atan((1.0 - (A / B))) / pi); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[A, -5.5e+18], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[N[(B * N[(0.5 / A), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[A, 1.4e-165], N[(180.0 * N[(N[ArcTan[N[(1.0 + N[(C / B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(1.0 - N[(A / B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;A \leq -5.5 \cdot 10^{+18}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} \left(B \cdot \frac{0.5}{A}\right)\\
\mathbf{elif}\;A \leq 1.4 \cdot 10^{-165}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(1 + \frac{C}{B}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(1 - \frac{A}{B}\right)}{\pi}\\
\end{array}
\end{array}
if A < -5.5e18Initial program 10.4%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified16.3%
Taylor expanded in A around -inf
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f6483.1%
Simplified83.1%
*-commutativeN/A
associate-/l*N/A
*-lowering-*.f64N/A
/-lowering-/.f6483.0%
Applied egg-rr83.0%
if -5.5e18 < A < 1.4e-165Initial program 60.2%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6457.3%
Simplified57.3%
Taylor expanded in A around 0
+-lowering-+.f64N/A
/-lowering-/.f6457.5%
Simplified57.5%
if 1.4e-165 < A Initial program 76.7%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6474.7%
Simplified74.7%
Taylor expanded in C around 0
--lowering--.f64N/A
/-lowering-/.f6473.6%
Simplified73.6%
Final simplification70.0%
(FPCore (A B C)
:precision binary64
(if (<= A -6.2e+15)
(* 180.0 (/ (atan (/ (* B 0.5) A)) PI))
(if (<= A 4.1e-165)
(* 180.0 (/ (atan (+ 1.0 (/ C B))) PI))
(* 180.0 (/ (atan (- 1.0 (/ A B))) PI)))))
double code(double A, double B, double C) {
double tmp;
if (A <= -6.2e+15) {
tmp = 180.0 * (atan(((B * 0.5) / A)) / ((double) M_PI));
} else if (A <= 4.1e-165) {
tmp = 180.0 * (atan((1.0 + (C / B))) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((1.0 - (A / B))) / ((double) M_PI));
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (A <= -6.2e+15) {
tmp = 180.0 * (Math.atan(((B * 0.5) / A)) / Math.PI);
} else if (A <= 4.1e-165) {
tmp = 180.0 * (Math.atan((1.0 + (C / B))) / Math.PI);
} else {
tmp = 180.0 * (Math.atan((1.0 - (A / B))) / Math.PI);
}
return tmp;
}
def code(A, B, C): tmp = 0 if A <= -6.2e+15: tmp = 180.0 * (math.atan(((B * 0.5) / A)) / math.pi) elif A <= 4.1e-165: tmp = 180.0 * (math.atan((1.0 + (C / B))) / math.pi) else: tmp = 180.0 * (math.atan((1.0 - (A / B))) / math.pi) return tmp
function code(A, B, C) tmp = 0.0 if (A <= -6.2e+15) tmp = Float64(180.0 * Float64(atan(Float64(Float64(B * 0.5) / A)) / pi)); elseif (A <= 4.1e-165) tmp = Float64(180.0 * Float64(atan(Float64(1.0 + Float64(C / B))) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(1.0 - Float64(A / B))) / pi)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (A <= -6.2e+15) tmp = 180.0 * (atan(((B * 0.5) / A)) / pi); elseif (A <= 4.1e-165) tmp = 180.0 * (atan((1.0 + (C / B))) / pi); else tmp = 180.0 * (atan((1.0 - (A / B))) / pi); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[A, -6.2e+15], N[(180.0 * N[(N[ArcTan[N[(N[(B * 0.5), $MachinePrecision] / A), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], If[LessEqual[A, 4.1e-165], N[(180.0 * N[(N[ArcTan[N[(1.0 + N[(C / B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(1.0 - N[(A / B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;A \leq -6.2 \cdot 10^{+15}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(\frac{B \cdot 0.5}{A}\right)}{\pi}\\
\mathbf{elif}\;A \leq 4.1 \cdot 10^{-165}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(1 + \frac{C}{B}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(1 - \frac{A}{B}\right)}{\pi}\\
\end{array}
\end{array}
if A < -6.2e15Initial program 10.4%
Taylor expanded in A around -inf
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f6482.8%
Simplified82.8%
if -6.2e15 < A < 4.1000000000000002e-165Initial program 60.2%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6457.3%
Simplified57.3%
Taylor expanded in A around 0
+-lowering-+.f64N/A
/-lowering-/.f6457.5%
Simplified57.5%
if 4.1000000000000002e-165 < A Initial program 76.7%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6474.7%
Simplified74.7%
Taylor expanded in C around 0
--lowering--.f64N/A
/-lowering-/.f6473.6%
Simplified73.6%
Final simplification69.9%
(FPCore (A B C)
:precision binary64
(if (<= A -7e+155)
(/ (/ (atan 0.0) PI) 0.005555555555555556)
(if (<= A 1.3e-165)
(* 180.0 (/ (atan (+ 1.0 (/ C B))) PI))
(* 180.0 (/ (atan (- 1.0 (/ A B))) PI)))))
double code(double A, double B, double C) {
double tmp;
if (A <= -7e+155) {
tmp = (atan(0.0) / ((double) M_PI)) / 0.005555555555555556;
} else if (A <= 1.3e-165) {
tmp = 180.0 * (atan((1.0 + (C / B))) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((1.0 - (A / B))) / ((double) M_PI));
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (A <= -7e+155) {
tmp = (Math.atan(0.0) / Math.PI) / 0.005555555555555556;
} else if (A <= 1.3e-165) {
tmp = 180.0 * (Math.atan((1.0 + (C / B))) / Math.PI);
} else {
tmp = 180.0 * (Math.atan((1.0 - (A / B))) / Math.PI);
}
return tmp;
}
def code(A, B, C): tmp = 0 if A <= -7e+155: tmp = (math.atan(0.0) / math.pi) / 0.005555555555555556 elif A <= 1.3e-165: tmp = 180.0 * (math.atan((1.0 + (C / B))) / math.pi) else: tmp = 180.0 * (math.atan((1.0 - (A / B))) / math.pi) return tmp
function code(A, B, C) tmp = 0.0 if (A <= -7e+155) tmp = Float64(Float64(atan(0.0) / pi) / 0.005555555555555556); elseif (A <= 1.3e-165) tmp = Float64(180.0 * Float64(atan(Float64(1.0 + Float64(C / B))) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(1.0 - Float64(A / B))) / pi)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (A <= -7e+155) tmp = (atan(0.0) / pi) / 0.005555555555555556; elseif (A <= 1.3e-165) tmp = 180.0 * (atan((1.0 + (C / B))) / pi); else tmp = 180.0 * (atan((1.0 - (A / B))) / pi); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[A, -7e+155], N[(N[(N[ArcTan[0.0], $MachinePrecision] / Pi), $MachinePrecision] / 0.005555555555555556), $MachinePrecision], If[LessEqual[A, 1.3e-165], N[(180.0 * N[(N[ArcTan[N[(1.0 + N[(C / B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(1.0 - N[(A / B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;A \leq -7 \cdot 10^{+155}:\\
\;\;\;\;\frac{\frac{\tan^{-1} 0}{\pi}}{0.005555555555555556}\\
\mathbf{elif}\;A \leq 1.3 \cdot 10^{-165}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(1 + \frac{C}{B}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(1 - \frac{A}{B}\right)}{\pi}\\
\end{array}
\end{array}
if A < -6.99999999999999969e155Initial program 7.0%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified8.5%
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
associate--r+N/A
--lowering--.f64N/A
--lowering--.f64N/A
hypot-defineN/A
hypot-lowering-hypot.f64N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
PI-lowering-PI.f6444.1%
Applied egg-rr44.1%
Taylor expanded in C around inf
associate-*r/N/A
mul-1-negN/A
distribute-rgt1-inN/A
metadata-evalN/A
mul0-lftN/A
metadata-evalN/A
/-lowering-/.f6439.5%
Simplified39.5%
div-invN/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
div0N/A
atan-lowering-atan.f64N/A
PI-lowering-PI.f64N/A
metadata-eval39.5%
Applied egg-rr39.5%
if -6.99999999999999969e155 < A < 1.30000000000000004e-165Initial program 52.4%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6449.7%
Simplified49.7%
Taylor expanded in A around 0
+-lowering-+.f64N/A
/-lowering-/.f6450.0%
Simplified50.0%
if 1.30000000000000004e-165 < A Initial program 76.7%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6474.7%
Simplified74.7%
Taylor expanded in C around 0
--lowering--.f64N/A
/-lowering-/.f6473.6%
Simplified73.6%
(FPCore (A B C)
:precision binary64
(if (<= C -255.0)
(/ (atan (/ C B)) (/ PI 180.0))
(if (<= C 1.22e-294)
(* (/ 180.0 PI) (atan -1.0))
(* 180.0 (/ (atan (* B (/ -0.5 C))) PI)))))
double code(double A, double B, double C) {
double tmp;
if (C <= -255.0) {
tmp = atan((C / B)) / (((double) M_PI) / 180.0);
} else if (C <= 1.22e-294) {
tmp = (180.0 / ((double) M_PI)) * atan(-1.0);
} else {
tmp = 180.0 * (atan((B * (-0.5 / C))) / ((double) M_PI));
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (C <= -255.0) {
tmp = Math.atan((C / B)) / (Math.PI / 180.0);
} else if (C <= 1.22e-294) {
tmp = (180.0 / Math.PI) * Math.atan(-1.0);
} else {
tmp = 180.0 * (Math.atan((B * (-0.5 / C))) / Math.PI);
}
return tmp;
}
def code(A, B, C): tmp = 0 if C <= -255.0: tmp = math.atan((C / B)) / (math.pi / 180.0) elif C <= 1.22e-294: tmp = (180.0 / math.pi) * math.atan(-1.0) else: tmp = 180.0 * (math.atan((B * (-0.5 / C))) / math.pi) return tmp
function code(A, B, C) tmp = 0.0 if (C <= -255.0) tmp = Float64(atan(Float64(C / B)) / Float64(pi / 180.0)); elseif (C <= 1.22e-294) tmp = Float64(Float64(180.0 / pi) * atan(-1.0)); else tmp = Float64(180.0 * Float64(atan(Float64(B * Float64(-0.5 / C))) / pi)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (C <= -255.0) tmp = atan((C / B)) / (pi / 180.0); elseif (C <= 1.22e-294) tmp = (180.0 / pi) * atan(-1.0); else tmp = 180.0 * (atan((B * (-0.5 / C))) / pi); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[C, -255.0], N[(N[ArcTan[N[(C / B), $MachinePrecision]], $MachinePrecision] / N[(Pi / 180.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[C, 1.22e-294], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[-1.0], $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(B * N[(-0.5 / C), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;C \leq -255:\\
\;\;\;\;\frac{\tan^{-1} \left(\frac{C}{B}\right)}{\frac{\pi}{180}}\\
\mathbf{elif}\;C \leq 1.22 \cdot 10^{-294}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} -1\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(B \cdot \frac{-0.5}{C}\right)}{\pi}\\
\end{array}
\end{array}
if C < -255Initial program 72.2%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified88.4%
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
associate--r+N/A
--lowering--.f64N/A
--lowering--.f64N/A
hypot-defineN/A
hypot-lowering-hypot.f64N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
PI-lowering-PI.f6492.3%
Applied egg-rr92.3%
Taylor expanded in C around 0
unpow2N/A
unpow2N/A
hypot-defineN/A
hypot-lowering-hypot.f6490.0%
Simplified90.0%
Taylor expanded in C around inf
/-lowering-/.f6466.4%
Simplified66.4%
if -255 < C < 1.21999999999999995e-294Initial program 55.8%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified73.4%
Taylor expanded in B around inf
Simplified30.7%
if 1.21999999999999995e-294 < C Initial program 41.5%
Taylor expanded in C around inf
+-lowering-+.f64N/A
associate-*r/N/A
distribute-rgt1-inN/A
metadata-evalN/A
mul0-lftN/A
metadata-evalN/A
/-lowering-/.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-commutativeN/A
*-lowering-*.f6441.0%
Simplified41.0%
div0N/A
+-lft-identityN/A
associate-/l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
/-lowering-/.f6441.0%
Applied egg-rr41.0%
Final simplification45.5%
(FPCore (A B C)
:precision binary64
(if (<= B -3.5e-104)
(* (/ 180.0 PI) (atan 1.0))
(if (<= B 2.2e-50)
(* 180.0 (/ (atan (/ C B)) PI))
(* (/ 180.0 PI) (atan -1.0)))))
double code(double A, double B, double C) {
double tmp;
if (B <= -3.5e-104) {
tmp = (180.0 / ((double) M_PI)) * atan(1.0);
} else if (B <= 2.2e-50) {
tmp = 180.0 * (atan((C / B)) / ((double) M_PI));
} else {
tmp = (180.0 / ((double) M_PI)) * atan(-1.0);
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (B <= -3.5e-104) {
tmp = (180.0 / Math.PI) * Math.atan(1.0);
} else if (B <= 2.2e-50) {
tmp = 180.0 * (Math.atan((C / B)) / Math.PI);
} else {
tmp = (180.0 / Math.PI) * Math.atan(-1.0);
}
return tmp;
}
def code(A, B, C): tmp = 0 if B <= -3.5e-104: tmp = (180.0 / math.pi) * math.atan(1.0) elif B <= 2.2e-50: tmp = 180.0 * (math.atan((C / B)) / math.pi) else: tmp = (180.0 / math.pi) * math.atan(-1.0) return tmp
function code(A, B, C) tmp = 0.0 if (B <= -3.5e-104) tmp = Float64(Float64(180.0 / pi) * atan(1.0)); elseif (B <= 2.2e-50) tmp = Float64(180.0 * Float64(atan(Float64(C / B)) / pi)); else tmp = Float64(Float64(180.0 / pi) * atan(-1.0)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (B <= -3.5e-104) tmp = (180.0 / pi) * atan(1.0); elseif (B <= 2.2e-50) tmp = 180.0 * (atan((C / B)) / pi); else tmp = (180.0 / pi) * atan(-1.0); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[B, -3.5e-104], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[1.0], $MachinePrecision]), $MachinePrecision], If[LessEqual[B, 2.2e-50], N[(180.0 * N[(N[ArcTan[N[(C / B), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[-1.0], $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;B \leq -3.5 \cdot 10^{-104}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} 1\\
\mathbf{elif}\;B \leq 2.2 \cdot 10^{-50}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(\frac{C}{B}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} -1\\
\end{array}
\end{array}
if B < -3.50000000000000029e-104Initial program 56.2%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified77.7%
Taylor expanded in B around -inf
Simplified50.4%
if -3.50000000000000029e-104 < B < 2.1999999999999999e-50Initial program 57.6%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6453.3%
Simplified53.3%
Taylor expanded in C around inf
/-lowering-/.f6433.7%
Simplified33.7%
if 2.1999999999999999e-50 < B Initial program 47.3%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified71.0%
Taylor expanded in B around inf
Simplified53.6%
Final simplification45.1%
(FPCore (A B C)
:precision binary64
(if (<= B -1.85e-126)
(* (/ 180.0 PI) (atan 1.0))
(if (<= B 1.22e-139)
(/ (/ (atan 0.0) PI) 0.005555555555555556)
(* (/ 180.0 PI) (atan -1.0)))))
double code(double A, double B, double C) {
double tmp;
if (B <= -1.85e-126) {
tmp = (180.0 / ((double) M_PI)) * atan(1.0);
} else if (B <= 1.22e-139) {
tmp = (atan(0.0) / ((double) M_PI)) / 0.005555555555555556;
} else {
tmp = (180.0 / ((double) M_PI)) * atan(-1.0);
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (B <= -1.85e-126) {
tmp = (180.0 / Math.PI) * Math.atan(1.0);
} else if (B <= 1.22e-139) {
tmp = (Math.atan(0.0) / Math.PI) / 0.005555555555555556;
} else {
tmp = (180.0 / Math.PI) * Math.atan(-1.0);
}
return tmp;
}
def code(A, B, C): tmp = 0 if B <= -1.85e-126: tmp = (180.0 / math.pi) * math.atan(1.0) elif B <= 1.22e-139: tmp = (math.atan(0.0) / math.pi) / 0.005555555555555556 else: tmp = (180.0 / math.pi) * math.atan(-1.0) return tmp
function code(A, B, C) tmp = 0.0 if (B <= -1.85e-126) tmp = Float64(Float64(180.0 / pi) * atan(1.0)); elseif (B <= 1.22e-139) tmp = Float64(Float64(atan(0.0) / pi) / 0.005555555555555556); else tmp = Float64(Float64(180.0 / pi) * atan(-1.0)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (B <= -1.85e-126) tmp = (180.0 / pi) * atan(1.0); elseif (B <= 1.22e-139) tmp = (atan(0.0) / pi) / 0.005555555555555556; else tmp = (180.0 / pi) * atan(-1.0); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[B, -1.85e-126], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[1.0], $MachinePrecision]), $MachinePrecision], If[LessEqual[B, 1.22e-139], N[(N[(N[ArcTan[0.0], $MachinePrecision] / Pi), $MachinePrecision] / 0.005555555555555556), $MachinePrecision], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[-1.0], $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;B \leq -1.85 \cdot 10^{-126}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} 1\\
\mathbf{elif}\;B \leq 1.22 \cdot 10^{-139}:\\
\;\;\;\;\frac{\frac{\tan^{-1} 0}{\pi}}{0.005555555555555556}\\
\mathbf{else}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} -1\\
\end{array}
\end{array}
if B < -1.85e-126Initial program 58.2%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified77.8%
Taylor expanded in B around -inf
Simplified47.3%
if -1.85e-126 < B < 1.21999999999999993e-139Initial program 57.2%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified63.8%
clear-numN/A
un-div-invN/A
/-lowering-/.f64N/A
atan-lowering-atan.f64N/A
/-lowering-/.f64N/A
associate--r+N/A
--lowering--.f64N/A
--lowering--.f64N/A
hypot-defineN/A
hypot-lowering-hypot.f64N/A
--lowering--.f64N/A
/-lowering-/.f64N/A
PI-lowering-PI.f6483.6%
Applied egg-rr83.6%
Taylor expanded in C around inf
associate-*r/N/A
mul-1-negN/A
distribute-rgt1-inN/A
metadata-evalN/A
mul0-lftN/A
metadata-evalN/A
/-lowering-/.f6430.4%
Simplified30.4%
div-invN/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
div0N/A
atan-lowering-atan.f64N/A
PI-lowering-PI.f64N/A
metadata-eval30.4%
Applied egg-rr30.4%
if 1.21999999999999993e-139 < B Initial program 47.9%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified67.2%
Taylor expanded in B around inf
Simplified45.5%
Final simplification42.4%
(FPCore (A B C) :precision binary64 (if (<= B 2e-61) (* 180.0 (/ (atan (+ 1.0 (/ C B))) PI)) (* (/ 180.0 PI) (atan -1.0))))
double code(double A, double B, double C) {
double tmp;
if (B <= 2e-61) {
tmp = 180.0 * (atan((1.0 + (C / B))) / ((double) M_PI));
} else {
tmp = (180.0 / ((double) M_PI)) * atan(-1.0);
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (B <= 2e-61) {
tmp = 180.0 * (Math.atan((1.0 + (C / B))) / Math.PI);
} else {
tmp = (180.0 / Math.PI) * Math.atan(-1.0);
}
return tmp;
}
def code(A, B, C): tmp = 0 if B <= 2e-61: tmp = 180.0 * (math.atan((1.0 + (C / B))) / math.pi) else: tmp = (180.0 / math.pi) * math.atan(-1.0) return tmp
function code(A, B, C) tmp = 0.0 if (B <= 2e-61) tmp = Float64(180.0 * Float64(atan(Float64(1.0 + Float64(C / B))) / pi)); else tmp = Float64(Float64(180.0 / pi) * atan(-1.0)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (B <= 2e-61) tmp = 180.0 * (atan((1.0 + (C / B))) / pi); else tmp = (180.0 / pi) * atan(-1.0); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[B, 2e-61], N[(180.0 * N[(N[ArcTan[N[(1.0 + N[(C / B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[-1.0], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;B \leq 2 \cdot 10^{-61}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(1 + \frac{C}{B}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} -1\\
\end{array}
\end{array}
if B < 2.0000000000000001e-61Initial program 58.1%
Taylor expanded in B around -inf
associate--l+N/A
div-subN/A
+-lowering-+.f64N/A
/-lowering-/.f64N/A
--lowering--.f6465.1%
Simplified65.1%
Taylor expanded in A around 0
+-lowering-+.f64N/A
/-lowering-/.f6450.8%
Simplified50.8%
if 2.0000000000000001e-61 < B Initial program 44.9%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified67.4%
Taylor expanded in B around inf
Simplified50.9%
Final simplification50.8%
(FPCore (A B C) :precision binary64 (if (<= B -6e-297) (* (/ 180.0 PI) (atan 1.0)) (* (/ 180.0 PI) (atan -1.0))))
double code(double A, double B, double C) {
double tmp;
if (B <= -6e-297) {
tmp = (180.0 / ((double) M_PI)) * atan(1.0);
} else {
tmp = (180.0 / ((double) M_PI)) * atan(-1.0);
}
return tmp;
}
public static double code(double A, double B, double C) {
double tmp;
if (B <= -6e-297) {
tmp = (180.0 / Math.PI) * Math.atan(1.0);
} else {
tmp = (180.0 / Math.PI) * Math.atan(-1.0);
}
return tmp;
}
def code(A, B, C): tmp = 0 if B <= -6e-297: tmp = (180.0 / math.pi) * math.atan(1.0) else: tmp = (180.0 / math.pi) * math.atan(-1.0) return tmp
function code(A, B, C) tmp = 0.0 if (B <= -6e-297) tmp = Float64(Float64(180.0 / pi) * atan(1.0)); else tmp = Float64(Float64(180.0 / pi) * atan(-1.0)); end return tmp end
function tmp_2 = code(A, B, C) tmp = 0.0; if (B <= -6e-297) tmp = (180.0 / pi) * atan(1.0); else tmp = (180.0 / pi) * atan(-1.0); end tmp_2 = tmp; end
code[A_, B_, C_] := If[LessEqual[B, -6e-297], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[1.0], $MachinePrecision]), $MachinePrecision], N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[-1.0], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;B \leq -6 \cdot 10^{-297}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} 1\\
\mathbf{else}:\\
\;\;\;\;\frac{180}{\pi} \cdot \tan^{-1} -1\\
\end{array}
\end{array}
if B < -5.9999999999999999e-297Initial program 56.2%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified73.7%
Taylor expanded in B around -inf
Simplified38.9%
if -5.9999999999999999e-297 < B Initial program 52.2%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified66.8%
Taylor expanded in B around inf
Simplified37.6%
Final simplification38.3%
(FPCore (A B C) :precision binary64 (* (/ 180.0 PI) (atan -1.0)))
double code(double A, double B, double C) {
return (180.0 / ((double) M_PI)) * atan(-1.0);
}
public static double code(double A, double B, double C) {
return (180.0 / Math.PI) * Math.atan(-1.0);
}
def code(A, B, C): return (180.0 / math.pi) * math.atan(-1.0)
function code(A, B, C) return Float64(Float64(180.0 / pi) * atan(-1.0)) end
function tmp = code(A, B, C) tmp = (180.0 / pi) * atan(-1.0); end
code[A_, B_, C_] := N[(N[(180.0 / Pi), $MachinePrecision] * N[ArcTan[-1.0], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{180}{\pi} \cdot \tan^{-1} -1
\end{array}
Initial program 54.3%
*-commutativeN/A
associate-*l/N/A
associate-/l*N/A
*-lowering-*.f64N/A
Simplified70.5%
Taylor expanded in B around inf
Simplified18.3%
Final simplification18.3%
herbie shell --seed 2024138
(FPCore (A B C)
:name "ABCF->ab-angle angle"
:precision binary64
(* 180.0 (/ (atan (* (/ 1.0 B) (- (- C A) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0)))))) PI)))