
(FPCore (a b angle) :precision binary64 (let* ((t_0 (* PI (/ angle 180.0)))) (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) (sin t_0)) (cos t_0))))
double code(double a, double b, double angle) {
double t_0 = ((double) M_PI) * (angle / 180.0);
return ((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * sin(t_0)) * cos(t_0);
}
public static double code(double a, double b, double angle) {
double t_0 = Math.PI * (angle / 180.0);
return ((2.0 * (Math.pow(b, 2.0) - Math.pow(a, 2.0))) * Math.sin(t_0)) * Math.cos(t_0);
}
def code(a, b, angle): t_0 = math.pi * (angle / 180.0) return ((2.0 * (math.pow(b, 2.0) - math.pow(a, 2.0))) * math.sin(t_0)) * math.cos(t_0)
function code(a, b, angle) t_0 = Float64(pi * Float64(angle / 180.0)) return Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * sin(t_0)) * cos(t_0)) end
function tmp = code(a, b, angle) t_0 = pi * (angle / 180.0); tmp = ((2.0 * ((b ^ 2.0) - (a ^ 2.0))) * sin(t_0)) * cos(t_0); end
code[a_, b_, angle_] := Block[{t$95$0 = N[(Pi * N[(angle / 180.0), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Sin[t$95$0], $MachinePrecision]), $MachinePrecision] * N[Cos[t$95$0], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \pi \cdot \frac{angle}{180}\\
\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot \sin t_0\right) \cdot \cos t_0
\end{array}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 13 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (a b angle) :precision binary64 (let* ((t_0 (* PI (/ angle 180.0)))) (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) (sin t_0)) (cos t_0))))
double code(double a, double b, double angle) {
double t_0 = ((double) M_PI) * (angle / 180.0);
return ((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * sin(t_0)) * cos(t_0);
}
public static double code(double a, double b, double angle) {
double t_0 = Math.PI * (angle / 180.0);
return ((2.0 * (Math.pow(b, 2.0) - Math.pow(a, 2.0))) * Math.sin(t_0)) * Math.cos(t_0);
}
def code(a, b, angle): t_0 = math.pi * (angle / 180.0) return ((2.0 * (math.pow(b, 2.0) - math.pow(a, 2.0))) * math.sin(t_0)) * math.cos(t_0)
function code(a, b, angle) t_0 = Float64(pi * Float64(angle / 180.0)) return Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * sin(t_0)) * cos(t_0)) end
function tmp = code(a, b, angle) t_0 = pi * (angle / 180.0); tmp = ((2.0 * ((b ^ 2.0) - (a ^ 2.0))) * sin(t_0)) * cos(t_0); end
code[a_, b_, angle_] := Block[{t$95$0 = N[(Pi * N[(angle / 180.0), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Sin[t$95$0], $MachinePrecision]), $MachinePrecision] * N[Cos[t$95$0], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \pi \cdot \frac{angle}{180}\\
\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot \sin t_0\right) \cdot \cos t_0
\end{array}
\end{array}
angle_m = (fabs.f64 angle)
angle_s = (copysign.f64 1 angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (sqrt (* PI angle_m)))
(t_1 (* PI (* angle_m 0.005555555555555556)))
(t_2 (* 2.0 (* (- b a) (+ a b))))
(t_3 (* t_2 (sin (* 0.005555555555555556 (* PI angle_m))))))
(*
angle_s
(if (<= (/ angle_m 180.0) 2e+81)
(* t_3 (cos t_1))
(if (<= (/ angle_m 180.0) 2e+153)
(* t_2 (sin (/ t_0 (/ 180.0 t_0))))
(if (<= (/ angle_m 180.0) 2e+181)
(*
(* t_2 (sin (* PI (/ angle_m 180.0))))
(expm1 (log1p (cos (* angle_m (* PI 0.005555555555555556))))))
(if (<= (/ angle_m 180.0) 1e+230)
t_3
(if (<= (/ angle_m 180.0) 4e+237)
(* t_3 (cos (/ (* PI angle_m) 180.0)))
(* t_2 (sin (pow (sqrt t_1) 2.0)))))))))))angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
double t_0 = sqrt((((double) M_PI) * angle_m));
double t_1 = ((double) M_PI) * (angle_m * 0.005555555555555556);
double t_2 = 2.0 * ((b - a) * (a + b));
double t_3 = t_2 * sin((0.005555555555555556 * (((double) M_PI) * angle_m)));
double tmp;
if ((angle_m / 180.0) <= 2e+81) {
tmp = t_3 * cos(t_1);
} else if ((angle_m / 180.0) <= 2e+153) {
tmp = t_2 * sin((t_0 / (180.0 / t_0)));
} else if ((angle_m / 180.0) <= 2e+181) {
tmp = (t_2 * sin((((double) M_PI) * (angle_m / 180.0)))) * expm1(log1p(cos((angle_m * (((double) M_PI) * 0.005555555555555556)))));
} else if ((angle_m / 180.0) <= 1e+230) {
tmp = t_3;
} else if ((angle_m / 180.0) <= 4e+237) {
tmp = t_3 * cos(((((double) M_PI) * angle_m) / 180.0));
} else {
tmp = t_2 * sin(pow(sqrt(t_1), 2.0));
}
return angle_s * tmp;
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
double t_0 = Math.sqrt((Math.PI * angle_m));
double t_1 = Math.PI * (angle_m * 0.005555555555555556);
double t_2 = 2.0 * ((b - a) * (a + b));
double t_3 = t_2 * Math.sin((0.005555555555555556 * (Math.PI * angle_m)));
double tmp;
if ((angle_m / 180.0) <= 2e+81) {
tmp = t_3 * Math.cos(t_1);
} else if ((angle_m / 180.0) <= 2e+153) {
tmp = t_2 * Math.sin((t_0 / (180.0 / t_0)));
} else if ((angle_m / 180.0) <= 2e+181) {
tmp = (t_2 * Math.sin((Math.PI * (angle_m / 180.0)))) * Math.expm1(Math.log1p(Math.cos((angle_m * (Math.PI * 0.005555555555555556)))));
} else if ((angle_m / 180.0) <= 1e+230) {
tmp = t_3;
} else if ((angle_m / 180.0) <= 4e+237) {
tmp = t_3 * Math.cos(((Math.PI * angle_m) / 180.0));
} else {
tmp = t_2 * Math.sin(Math.pow(Math.sqrt(t_1), 2.0));
}
return angle_s * tmp;
}
angle_m = math.fabs(angle) angle_s = math.copysign(1.0, angle) def code(angle_s, a, b, angle_m): t_0 = math.sqrt((math.pi * angle_m)) t_1 = math.pi * (angle_m * 0.005555555555555556) t_2 = 2.0 * ((b - a) * (a + b)) t_3 = t_2 * math.sin((0.005555555555555556 * (math.pi * angle_m))) tmp = 0 if (angle_m / 180.0) <= 2e+81: tmp = t_3 * math.cos(t_1) elif (angle_m / 180.0) <= 2e+153: tmp = t_2 * math.sin((t_0 / (180.0 / t_0))) elif (angle_m / 180.0) <= 2e+181: tmp = (t_2 * math.sin((math.pi * (angle_m / 180.0)))) * math.expm1(math.log1p(math.cos((angle_m * (math.pi * 0.005555555555555556))))) elif (angle_m / 180.0) <= 1e+230: tmp = t_3 elif (angle_m / 180.0) <= 4e+237: tmp = t_3 * math.cos(((math.pi * angle_m) / 180.0)) else: tmp = t_2 * math.sin(math.pow(math.sqrt(t_1), 2.0)) return angle_s * tmp
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) t_0 = sqrt(Float64(pi * angle_m)) t_1 = Float64(pi * Float64(angle_m * 0.005555555555555556)) t_2 = Float64(2.0 * Float64(Float64(b - a) * Float64(a + b))) t_3 = Float64(t_2 * sin(Float64(0.005555555555555556 * Float64(pi * angle_m)))) tmp = 0.0 if (Float64(angle_m / 180.0) <= 2e+81) tmp = Float64(t_3 * cos(t_1)); elseif (Float64(angle_m / 180.0) <= 2e+153) tmp = Float64(t_2 * sin(Float64(t_0 / Float64(180.0 / t_0)))); elseif (Float64(angle_m / 180.0) <= 2e+181) tmp = Float64(Float64(t_2 * sin(Float64(pi * Float64(angle_m / 180.0)))) * expm1(log1p(cos(Float64(angle_m * Float64(pi * 0.005555555555555556)))))); elseif (Float64(angle_m / 180.0) <= 1e+230) tmp = t_3; elseif (Float64(angle_m / 180.0) <= 4e+237) tmp = Float64(t_3 * cos(Float64(Float64(pi * angle_m) / 180.0))); else tmp = Float64(t_2 * sin((sqrt(t_1) ^ 2.0))); end return Float64(angle_s * tmp) end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := Block[{t$95$0 = N[Sqrt[N[(Pi * angle$95$m), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(Pi * N[(angle$95$m * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(2.0 * N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 * N[Sin[N[(0.005555555555555556 * N[(Pi * angle$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, N[(angle$95$s * If[LessEqual[N[(angle$95$m / 180.0), $MachinePrecision], 2e+81], N[(t$95$3 * N[Cos[t$95$1], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(angle$95$m / 180.0), $MachinePrecision], 2e+153], N[(t$95$2 * N[Sin[N[(t$95$0 / N[(180.0 / t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(angle$95$m / 180.0), $MachinePrecision], 2e+181], N[(N[(t$95$2 * N[Sin[N[(Pi * N[(angle$95$m / 180.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(Exp[N[Log[1 + N[Cos[N[(angle$95$m * N[(Pi * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]] - 1), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(angle$95$m / 180.0), $MachinePrecision], 1e+230], t$95$3, If[LessEqual[N[(angle$95$m / 180.0), $MachinePrecision], 4e+237], N[(t$95$3 * N[Cos[N[(N[(Pi * angle$95$m), $MachinePrecision] / 180.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(t$95$2 * N[Sin[N[Power[N[Sqrt[t$95$1], $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]]]]), $MachinePrecision]]]]]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \sqrt{\pi \cdot angle_m}\\
t_1 := \pi \cdot \left(angle_m \cdot 0.005555555555555556\right)\\
t_2 := 2 \cdot \left(\left(b - a\right) \cdot \left(a + b\right)\right)\\
t_3 := t_2 \cdot \sin \left(0.005555555555555556 \cdot \left(\pi \cdot angle_m\right)\right)\\
angle_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle_m}{180} \leq 2 \cdot 10^{+81}:\\
\;\;\;\;t_3 \cdot \cos t_1\\
\mathbf{elif}\;\frac{angle_m}{180} \leq 2 \cdot 10^{+153}:\\
\;\;\;\;t_2 \cdot \sin \left(\frac{t_0}{\frac{180}{t_0}}\right)\\
\mathbf{elif}\;\frac{angle_m}{180} \leq 2 \cdot 10^{+181}:\\
\;\;\;\;\left(t_2 \cdot \sin \left(\pi \cdot \frac{angle_m}{180}\right)\right) \cdot \mathsf{expm1}\left(\mathsf{log1p}\left(\cos \left(angle_m \cdot \left(\pi \cdot 0.005555555555555556\right)\right)\right)\right)\\
\mathbf{elif}\;\frac{angle_m}{180} \leq 10^{+230}:\\
\;\;\;\;t_3\\
\mathbf{elif}\;\frac{angle_m}{180} \leq 4 \cdot 10^{+237}:\\
\;\;\;\;t_3 \cdot \cos \left(\frac{\pi \cdot angle_m}{180}\right)\\
\mathbf{else}:\\
\;\;\;\;t_2 \cdot \sin \left({\left(\sqrt{t_1}\right)}^{2}\right)\\
\end{array}
\end{array}
\end{array}
if (/.f64 angle 180) < 1.99999999999999984e81Initial program 60.6%
unpow260.6%
unpow260.6%
difference-of-squares65.1%
Applied egg-rr65.1%
Taylor expanded in angle around 0 64.9%
Taylor expanded in angle around inf 63.8%
*-commutative63.8%
*-commutative63.8%
associate-*r*62.9%
Simplified62.9%
if 1.99999999999999984e81 < (/.f64 angle 180) < 2e153Initial program 42.6%
unpow242.6%
unpow242.6%
difference-of-squares42.6%
Applied egg-rr42.6%
Taylor expanded in angle around 0 46.8%
associate-*r/36.8%
*-commutative36.8%
add-sqr-sqrt23.9%
associate-/l*53.9%
*-commutative53.9%
*-commutative53.9%
Applied egg-rr53.9%
if 2e153 < (/.f64 angle 180) < 1.9999999999999998e181Initial program 40.0%
unpow240.0%
unpow240.0%
difference-of-squares40.0%
Applied egg-rr40.0%
associate-*r/52.4%
Applied egg-rr52.4%
div-inv67.0%
metadata-eval67.0%
associate-*r*54.5%
rem-cbrt-cube0.0%
unpow1/30.0%
expm1-log1p-u0.0%
unpow1/30.0%
rem-cbrt-cube54.5%
*-commutative54.5%
associate-*l*67.0%
Applied egg-rr67.0%
if 1.9999999999999998e181 < (/.f64 angle 180) < 1.0000000000000001e230Initial program 30.1%
unpow230.1%
unpow230.1%
difference-of-squares30.1%
Applied egg-rr30.1%
Taylor expanded in angle around 0 40.1%
Taylor expanded in angle around 0 81.9%
if 1.0000000000000001e230 < (/.f64 angle 180) < 3.99999999999999976e237Initial program 50.0%
unpow250.0%
unpow250.0%
difference-of-squares50.0%
Applied egg-rr50.0%
Taylor expanded in angle around 0 50.0%
associate-*r/100.0%
Applied egg-rr100.0%
if 3.99999999999999976e237 < (/.f64 angle 180) Initial program 24.3%
unpow224.3%
unpow224.3%
difference-of-squares24.3%
Applied egg-rr24.3%
Taylor expanded in angle around 0 49.5%
div-inv44.3%
metadata-eval44.3%
add-sqr-sqrt65.3%
pow265.3%
Applied egg-rr65.3%
Final simplification63.9%
angle_m = (fabs.f64 angle)
angle_s = (copysign.f64 1 angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (* 2.0 (* (- b a) (+ a b)))))
(*
angle_s
(if (<= (pow a 2.0) 5e-6)
(*
(* t_0 (sin (* (cbrt (pow PI 3.0)) (/ angle_m 180.0))))
(cos (* PI (/ angle_m 180.0))))
(*
t_0
(sin (pow (sqrt (* PI (* angle_m 0.005555555555555556))) 2.0)))))))angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
double t_0 = 2.0 * ((b - a) * (a + b));
double tmp;
if (pow(a, 2.0) <= 5e-6) {
tmp = (t_0 * sin((cbrt(pow(((double) M_PI), 3.0)) * (angle_m / 180.0)))) * cos((((double) M_PI) * (angle_m / 180.0)));
} else {
tmp = t_0 * sin(pow(sqrt((((double) M_PI) * (angle_m * 0.005555555555555556))), 2.0));
}
return angle_s * tmp;
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
double t_0 = 2.0 * ((b - a) * (a + b));
double tmp;
if (Math.pow(a, 2.0) <= 5e-6) {
tmp = (t_0 * Math.sin((Math.cbrt(Math.pow(Math.PI, 3.0)) * (angle_m / 180.0)))) * Math.cos((Math.PI * (angle_m / 180.0)));
} else {
tmp = t_0 * Math.sin(Math.pow(Math.sqrt((Math.PI * (angle_m * 0.005555555555555556))), 2.0));
}
return angle_s * tmp;
}
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) t_0 = Float64(2.0 * Float64(Float64(b - a) * Float64(a + b))) tmp = 0.0 if ((a ^ 2.0) <= 5e-6) tmp = Float64(Float64(t_0 * sin(Float64(cbrt((pi ^ 3.0)) * Float64(angle_m / 180.0)))) * cos(Float64(pi * Float64(angle_m / 180.0)))); else tmp = Float64(t_0 * sin((sqrt(Float64(pi * Float64(angle_m * 0.005555555555555556))) ^ 2.0))); end return Float64(angle_s * tmp) end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := Block[{t$95$0 = N[(2.0 * N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(angle$95$s * If[LessEqual[N[Power[a, 2.0], $MachinePrecision], 5e-6], N[(N[(t$95$0 * N[Sin[N[(N[Power[N[Power[Pi, 3.0], $MachinePrecision], 1/3], $MachinePrecision] * N[(angle$95$m / 180.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Cos[N[(Pi * N[(angle$95$m / 180.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(t$95$0 * N[Sin[N[Power[N[Sqrt[N[(Pi * N[(angle$95$m * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := 2 \cdot \left(\left(b - a\right) \cdot \left(a + b\right)\right)\\
angle_s \cdot \begin{array}{l}
\mathbf{if}\;{a}^{2} \leq 5 \cdot 10^{-6}:\\
\;\;\;\;\left(t_0 \cdot \sin \left(\sqrt[3]{{\pi}^{3}} \cdot \frac{angle_m}{180}\right)\right) \cdot \cos \left(\pi \cdot \frac{angle_m}{180}\right)\\
\mathbf{else}:\\
\;\;\;\;t_0 \cdot \sin \left({\left(\sqrt{\pi \cdot \left(angle_m \cdot 0.005555555555555556\right)}\right)}^{2}\right)\\
\end{array}
\end{array}
\end{array}
if (pow.f64 a 2) < 5.00000000000000041e-6Initial program 60.0%
unpow260.0%
unpow260.0%
difference-of-squares60.0%
Applied egg-rr60.0%
add-cbrt-cube63.8%
pow363.8%
Applied egg-rr63.8%
if 5.00000000000000041e-6 < (pow.f64 a 2) Initial program 51.4%
unpow251.4%
unpow251.4%
difference-of-squares57.9%
Applied egg-rr57.9%
Taylor expanded in angle around 0 59.2%
div-inv60.9%
metadata-eval60.9%
add-sqr-sqrt28.8%
pow228.8%
Applied egg-rr28.8%
Final simplification44.7%
angle_m = (fabs.f64 angle)
angle_s = (copysign.f64 1 angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (* 2.0 (* (- b a) (+ a b)))))
(*
angle_s
(if (<= (pow a 2.0) 5e-6)
(*
(* t_0 (sin (* PI (/ angle_m 180.0))))
(cos (* (/ angle_m 180.0) (pow (sqrt PI) 2.0))))
(*
t_0
(sin (pow (sqrt (* PI (* angle_m 0.005555555555555556))) 2.0)))))))angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
double t_0 = 2.0 * ((b - a) * (a + b));
double tmp;
if (pow(a, 2.0) <= 5e-6) {
tmp = (t_0 * sin((((double) M_PI) * (angle_m / 180.0)))) * cos(((angle_m / 180.0) * pow(sqrt(((double) M_PI)), 2.0)));
} else {
tmp = t_0 * sin(pow(sqrt((((double) M_PI) * (angle_m * 0.005555555555555556))), 2.0));
}
return angle_s * tmp;
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
double t_0 = 2.0 * ((b - a) * (a + b));
double tmp;
if (Math.pow(a, 2.0) <= 5e-6) {
tmp = (t_0 * Math.sin((Math.PI * (angle_m / 180.0)))) * Math.cos(((angle_m / 180.0) * Math.pow(Math.sqrt(Math.PI), 2.0)));
} else {
tmp = t_0 * Math.sin(Math.pow(Math.sqrt((Math.PI * (angle_m * 0.005555555555555556))), 2.0));
}
return angle_s * tmp;
}
angle_m = math.fabs(angle) angle_s = math.copysign(1.0, angle) def code(angle_s, a, b, angle_m): t_0 = 2.0 * ((b - a) * (a + b)) tmp = 0 if math.pow(a, 2.0) <= 5e-6: tmp = (t_0 * math.sin((math.pi * (angle_m / 180.0)))) * math.cos(((angle_m / 180.0) * math.pow(math.sqrt(math.pi), 2.0))) else: tmp = t_0 * math.sin(math.pow(math.sqrt((math.pi * (angle_m * 0.005555555555555556))), 2.0)) return angle_s * tmp
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) t_0 = Float64(2.0 * Float64(Float64(b - a) * Float64(a + b))) tmp = 0.0 if ((a ^ 2.0) <= 5e-6) tmp = Float64(Float64(t_0 * sin(Float64(pi * Float64(angle_m / 180.0)))) * cos(Float64(Float64(angle_m / 180.0) * (sqrt(pi) ^ 2.0)))); else tmp = Float64(t_0 * sin((sqrt(Float64(pi * Float64(angle_m * 0.005555555555555556))) ^ 2.0))); end return Float64(angle_s * tmp) end
angle_m = abs(angle); angle_s = sign(angle) * abs(1.0); function tmp_2 = code(angle_s, a, b, angle_m) t_0 = 2.0 * ((b - a) * (a + b)); tmp = 0.0; if ((a ^ 2.0) <= 5e-6) tmp = (t_0 * sin((pi * (angle_m / 180.0)))) * cos(((angle_m / 180.0) * (sqrt(pi) ^ 2.0))); else tmp = t_0 * sin((sqrt((pi * (angle_m * 0.005555555555555556))) ^ 2.0)); end tmp_2 = angle_s * tmp; end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := Block[{t$95$0 = N[(2.0 * N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(angle$95$s * If[LessEqual[N[Power[a, 2.0], $MachinePrecision], 5e-6], N[(N[(t$95$0 * N[Sin[N[(Pi * N[(angle$95$m / 180.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Cos[N[(N[(angle$95$m / 180.0), $MachinePrecision] * N[Power[N[Sqrt[Pi], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(t$95$0 * N[Sin[N[Power[N[Sqrt[N[(Pi * N[(angle$95$m * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]], $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := 2 \cdot \left(\left(b - a\right) \cdot \left(a + b\right)\right)\\
angle_s \cdot \begin{array}{l}
\mathbf{if}\;{a}^{2} \leq 5 \cdot 10^{-6}:\\
\;\;\;\;\left(t_0 \cdot \sin \left(\pi \cdot \frac{angle_m}{180}\right)\right) \cdot \cos \left(\frac{angle_m}{180} \cdot {\left(\sqrt{\pi}\right)}^{2}\right)\\
\mathbf{else}:\\
\;\;\;\;t_0 \cdot \sin \left({\left(\sqrt{\pi \cdot \left(angle_m \cdot 0.005555555555555556\right)}\right)}^{2}\right)\\
\end{array}
\end{array}
\end{array}
if (pow.f64 a 2) < 5.00000000000000041e-6Initial program 60.0%
unpow260.0%
unpow260.0%
difference-of-squares60.0%
Applied egg-rr60.0%
add-sqr-sqrt63.5%
pow263.5%
Applied egg-rr63.5%
if 5.00000000000000041e-6 < (pow.f64 a 2) Initial program 51.4%
unpow251.4%
unpow251.4%
difference-of-squares57.9%
Applied egg-rr57.9%
Taylor expanded in angle around 0 59.2%
div-inv60.9%
metadata-eval60.9%
add-sqr-sqrt28.8%
pow228.8%
Applied egg-rr28.8%
Final simplification44.5%
angle_m = (fabs.f64 angle)
angle_s = (copysign.f64 1 angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0
(*
(* 2.0 (* (- b a) (+ a b)))
(sin (* 0.005555555555555556 (* PI angle_m))))))
(*
angle_s
(if (<= (- (pow b 2.0) (pow a 2.0)) 5e+281)
(* t_0 (cos (/ PI (/ 180.0 angle_m))))
t_0))))angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
double t_0 = (2.0 * ((b - a) * (a + b))) * sin((0.005555555555555556 * (((double) M_PI) * angle_m)));
double tmp;
if ((pow(b, 2.0) - pow(a, 2.0)) <= 5e+281) {
tmp = t_0 * cos((((double) M_PI) / (180.0 / angle_m)));
} else {
tmp = t_0;
}
return angle_s * tmp;
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
double t_0 = (2.0 * ((b - a) * (a + b))) * Math.sin((0.005555555555555556 * (Math.PI * angle_m)));
double tmp;
if ((Math.pow(b, 2.0) - Math.pow(a, 2.0)) <= 5e+281) {
tmp = t_0 * Math.cos((Math.PI / (180.0 / angle_m)));
} else {
tmp = t_0;
}
return angle_s * tmp;
}
angle_m = math.fabs(angle) angle_s = math.copysign(1.0, angle) def code(angle_s, a, b, angle_m): t_0 = (2.0 * ((b - a) * (a + b))) * math.sin((0.005555555555555556 * (math.pi * angle_m))) tmp = 0 if (math.pow(b, 2.0) - math.pow(a, 2.0)) <= 5e+281: tmp = t_0 * math.cos((math.pi / (180.0 / angle_m))) else: tmp = t_0 return angle_s * tmp
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) t_0 = Float64(Float64(2.0 * Float64(Float64(b - a) * Float64(a + b))) * sin(Float64(0.005555555555555556 * Float64(pi * angle_m)))) tmp = 0.0 if (Float64((b ^ 2.0) - (a ^ 2.0)) <= 5e+281) tmp = Float64(t_0 * cos(Float64(pi / Float64(180.0 / angle_m)))); else tmp = t_0; end return Float64(angle_s * tmp) end
angle_m = abs(angle); angle_s = sign(angle) * abs(1.0); function tmp_2 = code(angle_s, a, b, angle_m) t_0 = (2.0 * ((b - a) * (a + b))) * sin((0.005555555555555556 * (pi * angle_m))); tmp = 0.0; if (((b ^ 2.0) - (a ^ 2.0)) <= 5e+281) tmp = t_0 * cos((pi / (180.0 / angle_m))); else tmp = t_0; end tmp_2 = angle_s * tmp; end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := Block[{t$95$0 = N[(N[(2.0 * N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Sin[N[(0.005555555555555556 * N[(Pi * angle$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, N[(angle$95$s * If[LessEqual[N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision], 5e+281], N[(t$95$0 * N[Cos[N[(Pi / N[(180.0 / angle$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], t$95$0]), $MachinePrecision]]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \left(2 \cdot \left(\left(b - a\right) \cdot \left(a + b\right)\right)\right) \cdot \sin \left(0.005555555555555556 \cdot \left(\pi \cdot angle_m\right)\right)\\
angle_s \cdot \begin{array}{l}
\mathbf{if}\;{b}^{2} - {a}^{2} \leq 5 \cdot 10^{+281}:\\
\;\;\;\;t_0 \cdot \cos \left(\frac{\pi}{\frac{180}{angle_m}}\right)\\
\mathbf{else}:\\
\;\;\;\;t_0\\
\end{array}
\end{array}
\end{array}
if (-.f64 (pow.f64 b 2) (pow.f64 a 2)) < 5.00000000000000016e281Initial program 58.6%
unpow258.6%
unpow258.6%
difference-of-squares58.6%
Applied egg-rr58.6%
Taylor expanded in angle around 0 60.9%
clear-num59.9%
un-div-inv61.0%
Applied egg-rr61.0%
if 5.00000000000000016e281 < (-.f64 (pow.f64 b 2) (pow.f64 a 2)) Initial program 47.9%
unpow247.9%
unpow247.9%
difference-of-squares59.5%
Applied egg-rr59.5%
Taylor expanded in angle around 0 60.8%
Taylor expanded in angle around 0 65.8%
Final simplification62.5%
angle_m = (fabs.f64 angle)
angle_s = (copysign.f64 1 angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (sqrt (* PI angle_m)))
(t_1 (* 0.005555555555555556 (* PI angle_m)))
(t_2 (* PI (* angle_m 0.005555555555555556)))
(t_3 (* 2.0 (* (- b a) (+ a b))))
(t_4 (* t_3 (sin t_1))))
(*
angle_s
(if (<= (/ angle_m 180.0) 2e+81)
(* t_4 (cos t_2))
(if (<= (/ angle_m 180.0) 2e+153)
(* t_3 (sin (/ t_0 (/ 180.0 t_0))))
(if (<= (/ angle_m 180.0) 2e+181)
(* (* t_3 (sin (* PI (/ angle_m 180.0)))) (cos t_1))
(if (<= (/ angle_m 180.0) 1e+230)
t_4
(if (<= (/ angle_m 180.0) 4e+237)
(* t_4 (cos (/ (* PI angle_m) 180.0)))
(* t_3 (sin (pow (sqrt t_2) 2.0)))))))))))angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
double t_0 = sqrt((((double) M_PI) * angle_m));
double t_1 = 0.005555555555555556 * (((double) M_PI) * angle_m);
double t_2 = ((double) M_PI) * (angle_m * 0.005555555555555556);
double t_3 = 2.0 * ((b - a) * (a + b));
double t_4 = t_3 * sin(t_1);
double tmp;
if ((angle_m / 180.0) <= 2e+81) {
tmp = t_4 * cos(t_2);
} else if ((angle_m / 180.0) <= 2e+153) {
tmp = t_3 * sin((t_0 / (180.0 / t_0)));
} else if ((angle_m / 180.0) <= 2e+181) {
tmp = (t_3 * sin((((double) M_PI) * (angle_m / 180.0)))) * cos(t_1);
} else if ((angle_m / 180.0) <= 1e+230) {
tmp = t_4;
} else if ((angle_m / 180.0) <= 4e+237) {
tmp = t_4 * cos(((((double) M_PI) * angle_m) / 180.0));
} else {
tmp = t_3 * sin(pow(sqrt(t_2), 2.0));
}
return angle_s * tmp;
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
double t_0 = Math.sqrt((Math.PI * angle_m));
double t_1 = 0.005555555555555556 * (Math.PI * angle_m);
double t_2 = Math.PI * (angle_m * 0.005555555555555556);
double t_3 = 2.0 * ((b - a) * (a + b));
double t_4 = t_3 * Math.sin(t_1);
double tmp;
if ((angle_m / 180.0) <= 2e+81) {
tmp = t_4 * Math.cos(t_2);
} else if ((angle_m / 180.0) <= 2e+153) {
tmp = t_3 * Math.sin((t_0 / (180.0 / t_0)));
} else if ((angle_m / 180.0) <= 2e+181) {
tmp = (t_3 * Math.sin((Math.PI * (angle_m / 180.0)))) * Math.cos(t_1);
} else if ((angle_m / 180.0) <= 1e+230) {
tmp = t_4;
} else if ((angle_m / 180.0) <= 4e+237) {
tmp = t_4 * Math.cos(((Math.PI * angle_m) / 180.0));
} else {
tmp = t_3 * Math.sin(Math.pow(Math.sqrt(t_2), 2.0));
}
return angle_s * tmp;
}
angle_m = math.fabs(angle) angle_s = math.copysign(1.0, angle) def code(angle_s, a, b, angle_m): t_0 = math.sqrt((math.pi * angle_m)) t_1 = 0.005555555555555556 * (math.pi * angle_m) t_2 = math.pi * (angle_m * 0.005555555555555556) t_3 = 2.0 * ((b - a) * (a + b)) t_4 = t_3 * math.sin(t_1) tmp = 0 if (angle_m / 180.0) <= 2e+81: tmp = t_4 * math.cos(t_2) elif (angle_m / 180.0) <= 2e+153: tmp = t_3 * math.sin((t_0 / (180.0 / t_0))) elif (angle_m / 180.0) <= 2e+181: tmp = (t_3 * math.sin((math.pi * (angle_m / 180.0)))) * math.cos(t_1) elif (angle_m / 180.0) <= 1e+230: tmp = t_4 elif (angle_m / 180.0) <= 4e+237: tmp = t_4 * math.cos(((math.pi * angle_m) / 180.0)) else: tmp = t_3 * math.sin(math.pow(math.sqrt(t_2), 2.0)) return angle_s * tmp
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) t_0 = sqrt(Float64(pi * angle_m)) t_1 = Float64(0.005555555555555556 * Float64(pi * angle_m)) t_2 = Float64(pi * Float64(angle_m * 0.005555555555555556)) t_3 = Float64(2.0 * Float64(Float64(b - a) * Float64(a + b))) t_4 = Float64(t_3 * sin(t_1)) tmp = 0.0 if (Float64(angle_m / 180.0) <= 2e+81) tmp = Float64(t_4 * cos(t_2)); elseif (Float64(angle_m / 180.0) <= 2e+153) tmp = Float64(t_3 * sin(Float64(t_0 / Float64(180.0 / t_0)))); elseif (Float64(angle_m / 180.0) <= 2e+181) tmp = Float64(Float64(t_3 * sin(Float64(pi * Float64(angle_m / 180.0)))) * cos(t_1)); elseif (Float64(angle_m / 180.0) <= 1e+230) tmp = t_4; elseif (Float64(angle_m / 180.0) <= 4e+237) tmp = Float64(t_4 * cos(Float64(Float64(pi * angle_m) / 180.0))); else tmp = Float64(t_3 * sin((sqrt(t_2) ^ 2.0))); end return Float64(angle_s * tmp) end
angle_m = abs(angle); angle_s = sign(angle) * abs(1.0); function tmp_2 = code(angle_s, a, b, angle_m) t_0 = sqrt((pi * angle_m)); t_1 = 0.005555555555555556 * (pi * angle_m); t_2 = pi * (angle_m * 0.005555555555555556); t_3 = 2.0 * ((b - a) * (a + b)); t_4 = t_3 * sin(t_1); tmp = 0.0; if ((angle_m / 180.0) <= 2e+81) tmp = t_4 * cos(t_2); elseif ((angle_m / 180.0) <= 2e+153) tmp = t_3 * sin((t_0 / (180.0 / t_0))); elseif ((angle_m / 180.0) <= 2e+181) tmp = (t_3 * sin((pi * (angle_m / 180.0)))) * cos(t_1); elseif ((angle_m / 180.0) <= 1e+230) tmp = t_4; elseif ((angle_m / 180.0) <= 4e+237) tmp = t_4 * cos(((pi * angle_m) / 180.0)); else tmp = t_3 * sin((sqrt(t_2) ^ 2.0)); end tmp_2 = angle_s * tmp; end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := Block[{t$95$0 = N[Sqrt[N[(Pi * angle$95$m), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(0.005555555555555556 * N[(Pi * angle$95$m), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(Pi * N[(angle$95$m * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(2.0 * N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$3 * N[Sin[t$95$1], $MachinePrecision]), $MachinePrecision]}, N[(angle$95$s * If[LessEqual[N[(angle$95$m / 180.0), $MachinePrecision], 2e+81], N[(t$95$4 * N[Cos[t$95$2], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(angle$95$m / 180.0), $MachinePrecision], 2e+153], N[(t$95$3 * N[Sin[N[(t$95$0 / N[(180.0 / t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(angle$95$m / 180.0), $MachinePrecision], 2e+181], N[(N[(t$95$3 * N[Sin[N[(Pi * N[(angle$95$m / 180.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Cos[t$95$1], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(angle$95$m / 180.0), $MachinePrecision], 1e+230], t$95$4, If[LessEqual[N[(angle$95$m / 180.0), $MachinePrecision], 4e+237], N[(t$95$4 * N[Cos[N[(N[(Pi * angle$95$m), $MachinePrecision] / 180.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(t$95$3 * N[Sin[N[Power[N[Sqrt[t$95$2], $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]]]]), $MachinePrecision]]]]]]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \sqrt{\pi \cdot angle_m}\\
t_1 := 0.005555555555555556 \cdot \left(\pi \cdot angle_m\right)\\
t_2 := \pi \cdot \left(angle_m \cdot 0.005555555555555556\right)\\
t_3 := 2 \cdot \left(\left(b - a\right) \cdot \left(a + b\right)\right)\\
t_4 := t_3 \cdot \sin t_1\\
angle_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle_m}{180} \leq 2 \cdot 10^{+81}:\\
\;\;\;\;t_4 \cdot \cos t_2\\
\mathbf{elif}\;\frac{angle_m}{180} \leq 2 \cdot 10^{+153}:\\
\;\;\;\;t_3 \cdot \sin \left(\frac{t_0}{\frac{180}{t_0}}\right)\\
\mathbf{elif}\;\frac{angle_m}{180} \leq 2 \cdot 10^{+181}:\\
\;\;\;\;\left(t_3 \cdot \sin \left(\pi \cdot \frac{angle_m}{180}\right)\right) \cdot \cos t_1\\
\mathbf{elif}\;\frac{angle_m}{180} \leq 10^{+230}:\\
\;\;\;\;t_4\\
\mathbf{elif}\;\frac{angle_m}{180} \leq 4 \cdot 10^{+237}:\\
\;\;\;\;t_4 \cdot \cos \left(\frac{\pi \cdot angle_m}{180}\right)\\
\mathbf{else}:\\
\;\;\;\;t_3 \cdot \sin \left({\left(\sqrt{t_2}\right)}^{2}\right)\\
\end{array}
\end{array}
\end{array}
if (/.f64 angle 180) < 1.99999999999999984e81Initial program 60.6%
unpow260.6%
unpow260.6%
difference-of-squares65.1%
Applied egg-rr65.1%
Taylor expanded in angle around 0 64.9%
Taylor expanded in angle around inf 63.8%
*-commutative63.8%
*-commutative63.8%
associate-*r*62.9%
Simplified62.9%
if 1.99999999999999984e81 < (/.f64 angle 180) < 2e153Initial program 42.6%
unpow242.6%
unpow242.6%
difference-of-squares42.6%
Applied egg-rr42.6%
Taylor expanded in angle around 0 46.8%
associate-*r/36.8%
*-commutative36.8%
add-sqr-sqrt23.9%
associate-/l*53.9%
*-commutative53.9%
*-commutative53.9%
Applied egg-rr53.9%
if 2e153 < (/.f64 angle 180) < 1.9999999999999998e181Initial program 40.0%
unpow240.0%
unpow240.0%
difference-of-squares40.0%
Applied egg-rr40.0%
Taylor expanded in angle around 0 67.0%
if 1.9999999999999998e181 < (/.f64 angle 180) < 1.0000000000000001e230Initial program 30.1%
unpow230.1%
unpow230.1%
difference-of-squares30.1%
Applied egg-rr30.1%
Taylor expanded in angle around 0 40.1%
Taylor expanded in angle around 0 81.9%
if 1.0000000000000001e230 < (/.f64 angle 180) < 3.99999999999999976e237Initial program 50.0%
unpow250.0%
unpow250.0%
difference-of-squares50.0%
Applied egg-rr50.0%
Taylor expanded in angle around 0 50.0%
associate-*r/100.0%
Applied egg-rr100.0%
if 3.99999999999999976e237 < (/.f64 angle 180) Initial program 24.3%
unpow224.3%
unpow224.3%
difference-of-squares24.3%
Applied egg-rr24.3%
Taylor expanded in angle around 0 49.5%
div-inv44.3%
metadata-eval44.3%
add-sqr-sqrt65.3%
pow265.3%
Applied egg-rr65.3%
Final simplification63.9%
angle_m = (fabs.f64 angle)
angle_s = (copysign.f64 1 angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (* (- b a) (+ a b)))
(t_1 (* PI (* angle_m 0.005555555555555556)))
(t_2 (* 2.0 t_0)))
(*
angle_s
(if (<= (/ angle_m 180.0) 1e+80)
(* (* t_2 (sin (* 0.005555555555555556 (* PI angle_m)))) (cos t_1))
(if (<= (/ angle_m 180.0) 1e+203)
(*
(cos (* PI (/ angle_m 180.0)))
(* 0.011111111111111112 (* angle_m (* PI t_0))))
(* t_2 (sin (pow (sqrt t_1) 2.0))))))))angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
double t_0 = (b - a) * (a + b);
double t_1 = ((double) M_PI) * (angle_m * 0.005555555555555556);
double t_2 = 2.0 * t_0;
double tmp;
if ((angle_m / 180.0) <= 1e+80) {
tmp = (t_2 * sin((0.005555555555555556 * (((double) M_PI) * angle_m)))) * cos(t_1);
} else if ((angle_m / 180.0) <= 1e+203) {
tmp = cos((((double) M_PI) * (angle_m / 180.0))) * (0.011111111111111112 * (angle_m * (((double) M_PI) * t_0)));
} else {
tmp = t_2 * sin(pow(sqrt(t_1), 2.0));
}
return angle_s * tmp;
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
double t_0 = (b - a) * (a + b);
double t_1 = Math.PI * (angle_m * 0.005555555555555556);
double t_2 = 2.0 * t_0;
double tmp;
if ((angle_m / 180.0) <= 1e+80) {
tmp = (t_2 * Math.sin((0.005555555555555556 * (Math.PI * angle_m)))) * Math.cos(t_1);
} else if ((angle_m / 180.0) <= 1e+203) {
tmp = Math.cos((Math.PI * (angle_m / 180.0))) * (0.011111111111111112 * (angle_m * (Math.PI * t_0)));
} else {
tmp = t_2 * Math.sin(Math.pow(Math.sqrt(t_1), 2.0));
}
return angle_s * tmp;
}
angle_m = math.fabs(angle) angle_s = math.copysign(1.0, angle) def code(angle_s, a, b, angle_m): t_0 = (b - a) * (a + b) t_1 = math.pi * (angle_m * 0.005555555555555556) t_2 = 2.0 * t_0 tmp = 0 if (angle_m / 180.0) <= 1e+80: tmp = (t_2 * math.sin((0.005555555555555556 * (math.pi * angle_m)))) * math.cos(t_1) elif (angle_m / 180.0) <= 1e+203: tmp = math.cos((math.pi * (angle_m / 180.0))) * (0.011111111111111112 * (angle_m * (math.pi * t_0))) else: tmp = t_2 * math.sin(math.pow(math.sqrt(t_1), 2.0)) return angle_s * tmp
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) t_0 = Float64(Float64(b - a) * Float64(a + b)) t_1 = Float64(pi * Float64(angle_m * 0.005555555555555556)) t_2 = Float64(2.0 * t_0) tmp = 0.0 if (Float64(angle_m / 180.0) <= 1e+80) tmp = Float64(Float64(t_2 * sin(Float64(0.005555555555555556 * Float64(pi * angle_m)))) * cos(t_1)); elseif (Float64(angle_m / 180.0) <= 1e+203) tmp = Float64(cos(Float64(pi * Float64(angle_m / 180.0))) * Float64(0.011111111111111112 * Float64(angle_m * Float64(pi * t_0)))); else tmp = Float64(t_2 * sin((sqrt(t_1) ^ 2.0))); end return Float64(angle_s * tmp) end
angle_m = abs(angle); angle_s = sign(angle) * abs(1.0); function tmp_2 = code(angle_s, a, b, angle_m) t_0 = (b - a) * (a + b); t_1 = pi * (angle_m * 0.005555555555555556); t_2 = 2.0 * t_0; tmp = 0.0; if ((angle_m / 180.0) <= 1e+80) tmp = (t_2 * sin((0.005555555555555556 * (pi * angle_m)))) * cos(t_1); elseif ((angle_m / 180.0) <= 1e+203) tmp = cos((pi * (angle_m / 180.0))) * (0.011111111111111112 * (angle_m * (pi * t_0))); else tmp = t_2 * sin((sqrt(t_1) ^ 2.0)); end tmp_2 = angle_s * tmp; end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := Block[{t$95$0 = N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(Pi * N[(angle$95$m * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(2.0 * t$95$0), $MachinePrecision]}, N[(angle$95$s * If[LessEqual[N[(angle$95$m / 180.0), $MachinePrecision], 1e+80], N[(N[(t$95$2 * N[Sin[N[(0.005555555555555556 * N[(Pi * angle$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Cos[t$95$1], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[(angle$95$m / 180.0), $MachinePrecision], 1e+203], N[(N[Cos[N[(Pi * N[(angle$95$m / 180.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(0.011111111111111112 * N[(angle$95$m * N[(Pi * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(t$95$2 * N[Sin[N[Power[N[Sqrt[t$95$1], $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]]), $MachinePrecision]]]]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \left(b - a\right) \cdot \left(a + b\right)\\
t_1 := \pi \cdot \left(angle_m \cdot 0.005555555555555556\right)\\
t_2 := 2 \cdot t_0\\
angle_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle_m}{180} \leq 10^{+80}:\\
\;\;\;\;\left(t_2 \cdot \sin \left(0.005555555555555556 \cdot \left(\pi \cdot angle_m\right)\right)\right) \cdot \cos t_1\\
\mathbf{elif}\;\frac{angle_m}{180} \leq 10^{+203}:\\
\;\;\;\;\cos \left(\pi \cdot \frac{angle_m}{180}\right) \cdot \left(0.011111111111111112 \cdot \left(angle_m \cdot \left(\pi \cdot t_0\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t_2 \cdot \sin \left({\left(\sqrt{t_1}\right)}^{2}\right)\\
\end{array}
\end{array}
\end{array}
if (/.f64 angle 180) < 1e80Initial program 60.6%
unpow260.6%
unpow260.6%
difference-of-squares65.1%
Applied egg-rr65.1%
Taylor expanded in angle around 0 64.9%
Taylor expanded in angle around inf 63.8%
*-commutative63.8%
*-commutative63.8%
associate-*r*62.9%
Simplified62.9%
if 1e80 < (/.f64 angle 180) < 9.9999999999999999e202Initial program 38.4%
unpow238.4%
unpow238.4%
difference-of-squares38.4%
Applied egg-rr38.4%
Taylor expanded in angle around 0 43.0%
Taylor expanded in angle around 0 41.9%
if 9.9999999999999999e202 < (/.f64 angle 180) Initial program 28.3%
unpow228.3%
unpow228.3%
difference-of-squares28.3%
Applied egg-rr28.3%
Taylor expanded in angle around 0 50.4%
div-inv42.9%
metadata-eval42.9%
add-sqr-sqrt61.4%
pow261.4%
Applied egg-rr61.4%
Final simplification60.9%
angle_m = (fabs.f64 angle)
angle_s = (copysign.f64 1 angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (* 2.0 (* (- b a) (+ a b)))))
(*
angle_s
(if (<= (- (pow b 2.0) (pow a 2.0)) -2e-141)
(* t_0 (sin (* PI (* angle_m 0.005555555555555556))))
(* t_0 (sin (* 0.005555555555555556 (* PI angle_m))))))))angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
double t_0 = 2.0 * ((b - a) * (a + b));
double tmp;
if ((pow(b, 2.0) - pow(a, 2.0)) <= -2e-141) {
tmp = t_0 * sin((((double) M_PI) * (angle_m * 0.005555555555555556)));
} else {
tmp = t_0 * sin((0.005555555555555556 * (((double) M_PI) * angle_m)));
}
return angle_s * tmp;
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
double t_0 = 2.0 * ((b - a) * (a + b));
double tmp;
if ((Math.pow(b, 2.0) - Math.pow(a, 2.0)) <= -2e-141) {
tmp = t_0 * Math.sin((Math.PI * (angle_m * 0.005555555555555556)));
} else {
tmp = t_0 * Math.sin((0.005555555555555556 * (Math.PI * angle_m)));
}
return angle_s * tmp;
}
angle_m = math.fabs(angle) angle_s = math.copysign(1.0, angle) def code(angle_s, a, b, angle_m): t_0 = 2.0 * ((b - a) * (a + b)) tmp = 0 if (math.pow(b, 2.0) - math.pow(a, 2.0)) <= -2e-141: tmp = t_0 * math.sin((math.pi * (angle_m * 0.005555555555555556))) else: tmp = t_0 * math.sin((0.005555555555555556 * (math.pi * angle_m))) return angle_s * tmp
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) t_0 = Float64(2.0 * Float64(Float64(b - a) * Float64(a + b))) tmp = 0.0 if (Float64((b ^ 2.0) - (a ^ 2.0)) <= -2e-141) tmp = Float64(t_0 * sin(Float64(pi * Float64(angle_m * 0.005555555555555556)))); else tmp = Float64(t_0 * sin(Float64(0.005555555555555556 * Float64(pi * angle_m)))); end return Float64(angle_s * tmp) end
angle_m = abs(angle); angle_s = sign(angle) * abs(1.0); function tmp_2 = code(angle_s, a, b, angle_m) t_0 = 2.0 * ((b - a) * (a + b)); tmp = 0.0; if (((b ^ 2.0) - (a ^ 2.0)) <= -2e-141) tmp = t_0 * sin((pi * (angle_m * 0.005555555555555556))); else tmp = t_0 * sin((0.005555555555555556 * (pi * angle_m))); end tmp_2 = angle_s * tmp; end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := Block[{t$95$0 = N[(2.0 * N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[(angle$95$s * If[LessEqual[N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision], -2e-141], N[(t$95$0 * N[Sin[N[(Pi * N[(angle$95$m * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(t$95$0 * N[Sin[N[(0.005555555555555556 * N[(Pi * angle$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := 2 \cdot \left(\left(b - a\right) \cdot \left(a + b\right)\right)\\
angle_s \cdot \begin{array}{l}
\mathbf{if}\;{b}^{2} - {a}^{2} \leq -2 \cdot 10^{-141}:\\
\;\;\;\;t_0 \cdot \sin \left(\pi \cdot \left(angle_m \cdot 0.005555555555555556\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t_0 \cdot \sin \left(0.005555555555555556 \cdot \left(\pi \cdot angle_m\right)\right)\\
\end{array}
\end{array}
\end{array}
if (-.f64 (pow.f64 b 2) (pow.f64 a 2)) < -2.0000000000000001e-141Initial program 57.6%
unpow257.6%
unpow257.6%
difference-of-squares57.6%
Applied egg-rr57.6%
Taylor expanded in angle around 0 57.4%
Taylor expanded in angle around inf 55.2%
*-commutative55.2%
*-commutative55.2%
associate-*r*60.5%
Simplified60.5%
if -2.0000000000000001e-141 < (-.f64 (pow.f64 b 2) (pow.f64 a 2)) Initial program 53.7%
unpow253.7%
unpow253.7%
difference-of-squares59.8%
Applied egg-rr59.8%
Taylor expanded in angle around 0 60.4%
Taylor expanded in angle around 0 62.3%
Final simplification61.6%
angle_m = (fabs.f64 angle)
angle_s = (copysign.f64 1 angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(*
angle_s
(*
(cos (* PI (/ angle_m 180.0)))
(*
(* 2.0 (* (- b a) (+ a b)))
(sin (* 0.005555555555555556 (* PI angle_m)))))))angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
return angle_s * (cos((((double) M_PI) * (angle_m / 180.0))) * ((2.0 * ((b - a) * (a + b))) * sin((0.005555555555555556 * (((double) M_PI) * angle_m)))));
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
return angle_s * (Math.cos((Math.PI * (angle_m / 180.0))) * ((2.0 * ((b - a) * (a + b))) * Math.sin((0.005555555555555556 * (Math.PI * angle_m)))));
}
angle_m = math.fabs(angle) angle_s = math.copysign(1.0, angle) def code(angle_s, a, b, angle_m): return angle_s * (math.cos((math.pi * (angle_m / 180.0))) * ((2.0 * ((b - a) * (a + b))) * math.sin((0.005555555555555556 * (math.pi * angle_m)))))
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) return Float64(angle_s * Float64(cos(Float64(pi * Float64(angle_m / 180.0))) * Float64(Float64(2.0 * Float64(Float64(b - a) * Float64(a + b))) * sin(Float64(0.005555555555555556 * Float64(pi * angle_m)))))) end
angle_m = abs(angle); angle_s = sign(angle) * abs(1.0); function tmp = code(angle_s, a, b, angle_m) tmp = angle_s * (cos((pi * (angle_m / 180.0))) * ((2.0 * ((b - a) * (a + b))) * sin((0.005555555555555556 * (pi * angle_m))))); end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := N[(angle$95$s * N[(N[Cos[N[(Pi * N[(angle$95$m / 180.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(N[(2.0 * N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Sin[N[(0.005555555555555556 * N[(Pi * angle$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
angle_s \cdot \left(\cos \left(\pi \cdot \frac{angle_m}{180}\right) \cdot \left(\left(2 \cdot \left(\left(b - a\right) \cdot \left(a + b\right)\right)\right) \cdot \sin \left(0.005555555555555556 \cdot \left(\pi \cdot angle_m\right)\right)\right)\right)
\end{array}
Initial program 55.3%
unpow255.3%
unpow255.3%
difference-of-squares58.9%
Applied egg-rr58.9%
Taylor expanded in angle around 0 60.9%
Final simplification60.9%
angle_m = (fabs.f64 angle) angle_s = (copysign.f64 1 angle) (FPCore (angle_s a b angle_m) :precision binary64 (* angle_s (* (* 2.0 (* (- b a) (+ a b))) (sin (* 0.005555555555555556 (* PI angle_m))))))
angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
return angle_s * ((2.0 * ((b - a) * (a + b))) * sin((0.005555555555555556 * (((double) M_PI) * angle_m))));
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
return angle_s * ((2.0 * ((b - a) * (a + b))) * Math.sin((0.005555555555555556 * (Math.PI * angle_m))));
}
angle_m = math.fabs(angle) angle_s = math.copysign(1.0, angle) def code(angle_s, a, b, angle_m): return angle_s * ((2.0 * ((b - a) * (a + b))) * math.sin((0.005555555555555556 * (math.pi * angle_m))))
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) return Float64(angle_s * Float64(Float64(2.0 * Float64(Float64(b - a) * Float64(a + b))) * sin(Float64(0.005555555555555556 * Float64(pi * angle_m))))) end
angle_m = abs(angle); angle_s = sign(angle) * abs(1.0); function tmp = code(angle_s, a, b, angle_m) tmp = angle_s * ((2.0 * ((b - a) * (a + b))) * sin((0.005555555555555556 * (pi * angle_m)))); end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := N[(angle$95$s * N[(N[(2.0 * N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Sin[N[(0.005555555555555556 * N[(Pi * angle$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
angle_s \cdot \left(\left(2 \cdot \left(\left(b - a\right) \cdot \left(a + b\right)\right)\right) \cdot \sin \left(0.005555555555555556 \cdot \left(\pi \cdot angle_m\right)\right)\right)
\end{array}
Initial program 55.3%
unpow255.3%
unpow255.3%
difference-of-squares58.9%
Applied egg-rr58.9%
Taylor expanded in angle around 0 60.9%
Taylor expanded in angle around 0 59.3%
Final simplification59.3%
angle_m = (fabs.f64 angle)
angle_s = (copysign.f64 1 angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(*
angle_s
(if (<= angle_m 1.06e+232)
(* (* 2.0 (* (- b a) (+ a b))) (* angle_m (* PI 0.005555555555555556)))
(* (* PI angle_m) (* (pow a 2.0) -0.011111111111111112)))))angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
double tmp;
if (angle_m <= 1.06e+232) {
tmp = (2.0 * ((b - a) * (a + b))) * (angle_m * (((double) M_PI) * 0.005555555555555556));
} else {
tmp = (((double) M_PI) * angle_m) * (pow(a, 2.0) * -0.011111111111111112);
}
return angle_s * tmp;
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
double tmp;
if (angle_m <= 1.06e+232) {
tmp = (2.0 * ((b - a) * (a + b))) * (angle_m * (Math.PI * 0.005555555555555556));
} else {
tmp = (Math.PI * angle_m) * (Math.pow(a, 2.0) * -0.011111111111111112);
}
return angle_s * tmp;
}
angle_m = math.fabs(angle) angle_s = math.copysign(1.0, angle) def code(angle_s, a, b, angle_m): tmp = 0 if angle_m <= 1.06e+232: tmp = (2.0 * ((b - a) * (a + b))) * (angle_m * (math.pi * 0.005555555555555556)) else: tmp = (math.pi * angle_m) * (math.pow(a, 2.0) * -0.011111111111111112) return angle_s * tmp
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) tmp = 0.0 if (angle_m <= 1.06e+232) tmp = Float64(Float64(2.0 * Float64(Float64(b - a) * Float64(a + b))) * Float64(angle_m * Float64(pi * 0.005555555555555556))); else tmp = Float64(Float64(pi * angle_m) * Float64((a ^ 2.0) * -0.011111111111111112)); end return Float64(angle_s * tmp) end
angle_m = abs(angle); angle_s = sign(angle) * abs(1.0); function tmp_2 = code(angle_s, a, b, angle_m) tmp = 0.0; if (angle_m <= 1.06e+232) tmp = (2.0 * ((b - a) * (a + b))) * (angle_m * (pi * 0.005555555555555556)); else tmp = (pi * angle_m) * ((a ^ 2.0) * -0.011111111111111112); end tmp_2 = angle_s * tmp; end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := N[(angle$95$s * If[LessEqual[angle$95$m, 1.06e+232], N[(N[(2.0 * N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(angle$95$m * N[(Pi * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(Pi * angle$95$m), $MachinePrecision] * N[(N[Power[a, 2.0], $MachinePrecision] * -0.011111111111111112), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
angle_s \cdot \begin{array}{l}
\mathbf{if}\;angle_m \leq 1.06 \cdot 10^{+232}:\\
\;\;\;\;\left(2 \cdot \left(\left(b - a\right) \cdot \left(a + b\right)\right)\right) \cdot \left(angle_m \cdot \left(\pi \cdot 0.005555555555555556\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\pi \cdot angle_m\right) \cdot \left({a}^{2} \cdot -0.011111111111111112\right)\\
\end{array}
\end{array}
if angle < 1.06e232Initial program 57.7%
unpow257.7%
unpow257.7%
difference-of-squares61.6%
Applied egg-rr61.6%
Taylor expanded in angle around 0 59.4%
Taylor expanded in angle around 0 57.1%
*-commutative57.1%
associate-*l*57.2%
Simplified57.2%
if 1.06e232 < angle Initial program 30.1%
unpow230.1%
unpow230.1%
difference-of-squares30.1%
Applied egg-rr30.1%
Taylor expanded in angle around 0 42.8%
Taylor expanded in angle around 0 18.8%
Taylor expanded in b around 0 33.4%
*-commutative33.4%
*-commutative33.4%
*-commutative33.4%
associate-*l*33.4%
*-commutative33.4%
Simplified33.4%
Final simplification55.1%
angle_m = (fabs.f64 angle) angle_s = (copysign.f64 1 angle) (FPCore (angle_s a b angle_m) :precision binary64 (* angle_s (* (* 2.0 (* (- b a) (+ a b))) (* angle_m (* PI 0.005555555555555556)))))
angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
return angle_s * ((2.0 * ((b - a) * (a + b))) * (angle_m * (((double) M_PI) * 0.005555555555555556)));
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
return angle_s * ((2.0 * ((b - a) * (a + b))) * (angle_m * (Math.PI * 0.005555555555555556)));
}
angle_m = math.fabs(angle) angle_s = math.copysign(1.0, angle) def code(angle_s, a, b, angle_m): return angle_s * ((2.0 * ((b - a) * (a + b))) * (angle_m * (math.pi * 0.005555555555555556)))
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) return Float64(angle_s * Float64(Float64(2.0 * Float64(Float64(b - a) * Float64(a + b))) * Float64(angle_m * Float64(pi * 0.005555555555555556)))) end
angle_m = abs(angle); angle_s = sign(angle) * abs(1.0); function tmp = code(angle_s, a, b, angle_m) tmp = angle_s * ((2.0 * ((b - a) * (a + b))) * (angle_m * (pi * 0.005555555555555556))); end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := N[(angle$95$s * N[(N[(2.0 * N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(angle$95$m * N[(Pi * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
angle_s \cdot \left(\left(2 \cdot \left(\left(b - a\right) \cdot \left(a + b\right)\right)\right) \cdot \left(angle_m \cdot \left(\pi \cdot 0.005555555555555556\right)\right)\right)
\end{array}
Initial program 55.3%
unpow255.3%
unpow255.3%
difference-of-squares58.9%
Applied egg-rr58.9%
Taylor expanded in angle around 0 58.0%
Taylor expanded in angle around 0 53.9%
*-commutative53.9%
associate-*l*53.9%
Simplified53.9%
Final simplification53.9%
angle_m = (fabs.f64 angle) angle_s = (copysign.f64 1 angle) (FPCore (angle_s a b angle_m) :precision binary64 (* angle_s (* 0.011111111111111112 (* angle_m (* PI (* (- b a) (+ a b)))))))
angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
return angle_s * (0.011111111111111112 * (angle_m * (((double) M_PI) * ((b - a) * (a + b)))));
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
return angle_s * (0.011111111111111112 * (angle_m * (Math.PI * ((b - a) * (a + b)))));
}
angle_m = math.fabs(angle) angle_s = math.copysign(1.0, angle) def code(angle_s, a, b, angle_m): return angle_s * (0.011111111111111112 * (angle_m * (math.pi * ((b - a) * (a + b)))))
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) return Float64(angle_s * Float64(0.011111111111111112 * Float64(angle_m * Float64(pi * Float64(Float64(b - a) * Float64(a + b)))))) end
angle_m = abs(angle); angle_s = sign(angle) * abs(1.0); function tmp = code(angle_s, a, b, angle_m) tmp = angle_s * (0.011111111111111112 * (angle_m * (pi * ((b - a) * (a + b))))); end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := N[(angle$95$s * N[(0.011111111111111112 * N[(angle$95$m * N[(Pi * N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
angle_s \cdot \left(0.011111111111111112 \cdot \left(angle_m \cdot \left(\pi \cdot \left(\left(b - a\right) \cdot \left(a + b\right)\right)\right)\right)\right)
\end{array}
Initial program 55.3%
unpow255.3%
unpow255.3%
difference-of-squares58.9%
Applied egg-rr58.9%
Taylor expanded in angle around 0 58.0%
Taylor expanded in angle around 0 53.9%
Taylor expanded in angle around 0 53.8%
Final simplification53.8%
angle_m = (fabs.f64 angle) angle_s = (copysign.f64 1 angle) (FPCore (angle_s a b angle_m) :precision binary64 (* angle_s (* 0.011111111111111112 (* (* PI angle_m) (* (- b a) (+ a b))))))
angle_m = fabs(angle);
angle_s = copysign(1.0, angle);
double code(double angle_s, double a, double b, double angle_m) {
return angle_s * (0.011111111111111112 * ((((double) M_PI) * angle_m) * ((b - a) * (a + b))));
}
angle_m = Math.abs(angle);
angle_s = Math.copySign(1.0, angle);
public static double code(double angle_s, double a, double b, double angle_m) {
return angle_s * (0.011111111111111112 * ((Math.PI * angle_m) * ((b - a) * (a + b))));
}
angle_m = math.fabs(angle) angle_s = math.copysign(1.0, angle) def code(angle_s, a, b, angle_m): return angle_s * (0.011111111111111112 * ((math.pi * angle_m) * ((b - a) * (a + b))))
angle_m = abs(angle) angle_s = copysign(1.0, angle) function code(angle_s, a, b, angle_m) return Float64(angle_s * Float64(0.011111111111111112 * Float64(Float64(pi * angle_m) * Float64(Float64(b - a) * Float64(a + b))))) end
angle_m = abs(angle); angle_s = sign(angle) * abs(1.0); function tmp = code(angle_s, a, b, angle_m) tmp = angle_s * (0.011111111111111112 * ((pi * angle_m) * ((b - a) * (a + b)))); end
angle_m = N[Abs[angle], $MachinePrecision]
angle_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[angle]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
code[angle$95$s_, a_, b_, angle$95$m_] := N[(angle$95$s * N[(0.011111111111111112 * N[(N[(Pi * angle$95$m), $MachinePrecision] * N[(N[(b - a), $MachinePrecision] * N[(a + b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
angle_m = \left|angle\right|
\\
angle_s = \mathsf{copysign}\left(1, angle\right)
\\
angle_s \cdot \left(0.011111111111111112 \cdot \left(\left(\pi \cdot angle_m\right) \cdot \left(\left(b - a\right) \cdot \left(a + b\right)\right)\right)\right)
\end{array}
Initial program 55.3%
unpow255.3%
unpow255.3%
difference-of-squares58.9%
Applied egg-rr58.9%
Taylor expanded in angle around 0 58.0%
Taylor expanded in angle around 0 53.9%
Taylor expanded in angle around 0 53.8%
associate-*r*53.9%
Simplified53.9%
Final simplification53.9%
herbie shell --seed 2023334
(FPCore (a b angle)
:name "ab-angle->ABCF B"
:precision binary64
(* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) (sin (* PI (/ angle 180.0)))) (cos (* PI (/ angle 180.0)))))