
(FPCore (a b angle) :precision binary64 (let* ((t_0 (* PI (/ angle 180.0)))) (+ (pow (* a (cos t_0)) 2.0) (pow (* b (sin t_0)) 2.0))))
double code(double a, double b, double angle) {
double t_0 = ((double) M_PI) * (angle / 180.0);
return pow((a * cos(t_0)), 2.0) + pow((b * sin(t_0)), 2.0);
}
public static double code(double a, double b, double angle) {
double t_0 = Math.PI * (angle / 180.0);
return Math.pow((a * Math.cos(t_0)), 2.0) + Math.pow((b * Math.sin(t_0)), 2.0);
}
def code(a, b, angle): t_0 = math.pi * (angle / 180.0) return math.pow((a * math.cos(t_0)), 2.0) + math.pow((b * math.sin(t_0)), 2.0)
function code(a, b, angle) t_0 = Float64(pi * Float64(angle / 180.0)) return Float64((Float64(a * cos(t_0)) ^ 2.0) + (Float64(b * sin(t_0)) ^ 2.0)) end
function tmp = code(a, b, angle) t_0 = pi * (angle / 180.0); tmp = ((a * cos(t_0)) ^ 2.0) + ((b * sin(t_0)) ^ 2.0); end
code[a_, b_, angle_] := Block[{t$95$0 = N[(Pi * N[(angle / 180.0), $MachinePrecision]), $MachinePrecision]}, N[(N[Power[N[(a * N[Cos[t$95$0], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * N[Sin[t$95$0], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \pi \cdot \frac{angle}{180}\\
{\left(a \cdot \cos t\_0\right)}^{2} + {\left(b \cdot \sin t\_0\right)}^{2}
\end{array}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 14 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (a b angle) :precision binary64 (let* ((t_0 (* PI (/ angle 180.0)))) (+ (pow (* a (cos t_0)) 2.0) (pow (* b (sin t_0)) 2.0))))
double code(double a, double b, double angle) {
double t_0 = ((double) M_PI) * (angle / 180.0);
return pow((a * cos(t_0)), 2.0) + pow((b * sin(t_0)), 2.0);
}
public static double code(double a, double b, double angle) {
double t_0 = Math.PI * (angle / 180.0);
return Math.pow((a * Math.cos(t_0)), 2.0) + Math.pow((b * Math.sin(t_0)), 2.0);
}
def code(a, b, angle): t_0 = math.pi * (angle / 180.0) return math.pow((a * math.cos(t_0)), 2.0) + math.pow((b * math.sin(t_0)), 2.0)
function code(a, b, angle) t_0 = Float64(pi * Float64(angle / 180.0)) return Float64((Float64(a * cos(t_0)) ^ 2.0) + (Float64(b * sin(t_0)) ^ 2.0)) end
function tmp = code(a, b, angle) t_0 = pi * (angle / 180.0); tmp = ((a * cos(t_0)) ^ 2.0) + ((b * sin(t_0)) ^ 2.0); end
code[a_, b_, angle_] := Block[{t$95$0 = N[(Pi * N[(angle / 180.0), $MachinePrecision]), $MachinePrecision]}, N[(N[Power[N[(a * N[Cos[t$95$0], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * N[Sin[t$95$0], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \pi \cdot \frac{angle}{180}\\
{\left(a \cdot \cos t\_0\right)}^{2} + {\left(b \cdot \sin t\_0\right)}^{2}
\end{array}
\end{array}
(FPCore (a b angle)
:precision binary64
(let* ((t_0 (* (/ 180.0 angle) (+ PI -1.0))))
(+
(* a a)
(pow
(*
b
(sin (/ (- (* (+ (* PI PI) -1.0) 180.0) (* angle t_0)) (* 180.0 t_0))))
2.0))))
double code(double a, double b, double angle) {
double t_0 = (180.0 / angle) * (((double) M_PI) + -1.0);
return (a * a) + pow((b * sin((((((((double) M_PI) * ((double) M_PI)) + -1.0) * 180.0) - (angle * t_0)) / (180.0 * t_0)))), 2.0);
}
public static double code(double a, double b, double angle) {
double t_0 = (180.0 / angle) * (Math.PI + -1.0);
return (a * a) + Math.pow((b * Math.sin((((((Math.PI * Math.PI) + -1.0) * 180.0) - (angle * t_0)) / (180.0 * t_0)))), 2.0);
}
def code(a, b, angle): t_0 = (180.0 / angle) * (math.pi + -1.0) return (a * a) + math.pow((b * math.sin((((((math.pi * math.pi) + -1.0) * 180.0) - (angle * t_0)) / (180.0 * t_0)))), 2.0)
function code(a, b, angle) t_0 = Float64(Float64(180.0 / angle) * Float64(pi + -1.0)) return Float64(Float64(a * a) + (Float64(b * sin(Float64(Float64(Float64(Float64(Float64(pi * pi) + -1.0) * 180.0) - Float64(angle * t_0)) / Float64(180.0 * t_0)))) ^ 2.0)) end
function tmp = code(a, b, angle) t_0 = (180.0 / angle) * (pi + -1.0); tmp = (a * a) + ((b * sin((((((pi * pi) + -1.0) * 180.0) - (angle * t_0)) / (180.0 * t_0)))) ^ 2.0); end
code[a_, b_, angle_] := Block[{t$95$0 = N[(N[(180.0 / angle), $MachinePrecision] * N[(Pi + -1.0), $MachinePrecision]), $MachinePrecision]}, N[(N[(a * a), $MachinePrecision] + N[Power[N[(b * N[Sin[N[(N[(N[(N[(N[(Pi * Pi), $MachinePrecision] + -1.0), $MachinePrecision] * 180.0), $MachinePrecision] - N[(angle * t$95$0), $MachinePrecision]), $MachinePrecision] / N[(180.0 * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{180}{angle} \cdot \left(\pi + -1\right)\\
a \cdot a + {\left(b \cdot \sin \left(\frac{\left(\pi \cdot \pi + -1\right) \cdot 180 - angle \cdot t\_0}{180 \cdot t\_0}\right)\right)}^{2}
\end{array}
\end{array}
Initial program 76.7%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6477.1%
Simplified77.1%
clear-numN/A
div-invN/A
expm1-log1p-uN/A
expm1-undefineN/A
log1p-undefineN/A
+-commutativeN/A
rem-exp-logN/A
sub-divN/A
clear-numN/A
flip-+N/A
associate-/l/N/A
frac-subN/A
/-lowering-/.f64N/A
Applied egg-rr77.3%
Final simplification77.3%
(FPCore (a b angle) :precision binary64 (+ (* a a) (pow (* b (sin (/ (/ PI 180.0) (/ 1.0 angle)))) 2.0)))
double code(double a, double b, double angle) {
return (a * a) + pow((b * sin(((((double) M_PI) / 180.0) / (1.0 / angle)))), 2.0);
}
public static double code(double a, double b, double angle) {
return (a * a) + Math.pow((b * Math.sin(((Math.PI / 180.0) / (1.0 / angle)))), 2.0);
}
def code(a, b, angle): return (a * a) + math.pow((b * math.sin(((math.pi / 180.0) / (1.0 / angle)))), 2.0)
function code(a, b, angle) return Float64(Float64(a * a) + (Float64(b * sin(Float64(Float64(pi / 180.0) / Float64(1.0 / angle)))) ^ 2.0)) end
function tmp = code(a, b, angle) tmp = (a * a) + ((b * sin(((pi / 180.0) / (1.0 / angle)))) ^ 2.0); end
code[a_, b_, angle_] := N[(N[(a * a), $MachinePrecision] + N[Power[N[(b * N[Sin[N[(N[(Pi / 180.0), $MachinePrecision] / N[(1.0 / angle), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
a \cdot a + {\left(b \cdot \sin \left(\frac{\frac{\pi}{180}}{\frac{1}{angle}}\right)\right)}^{2}
\end{array}
Initial program 76.7%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6477.1%
Simplified77.1%
clear-numN/A
div-invN/A
div-invN/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
PI-lowering-PI.f64N/A
/-lowering-/.f6477.3%
Applied egg-rr77.3%
(FPCore (a b angle) :precision binary64 (+ (* a a) (pow (* b (sin (/ PI (/ 180.0 angle)))) 2.0)))
double code(double a, double b, double angle) {
return (a * a) + pow((b * sin((((double) M_PI) / (180.0 / angle)))), 2.0);
}
public static double code(double a, double b, double angle) {
return (a * a) + Math.pow((b * Math.sin((Math.PI / (180.0 / angle)))), 2.0);
}
def code(a, b, angle): return (a * a) + math.pow((b * math.sin((math.pi / (180.0 / angle)))), 2.0)
function code(a, b, angle) return Float64(Float64(a * a) + (Float64(b * sin(Float64(pi / Float64(180.0 / angle)))) ^ 2.0)) end
function tmp = code(a, b, angle) tmp = (a * a) + ((b * sin((pi / (180.0 / angle)))) ^ 2.0); end
code[a_, b_, angle_] := N[(N[(a * a), $MachinePrecision] + N[Power[N[(b * N[Sin[N[(Pi / N[(180.0 / angle), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
a \cdot a + {\left(b \cdot \sin \left(\frac{\pi}{\frac{180}{angle}}\right)\right)}^{2}
\end{array}
Initial program 76.7%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6477.1%
Simplified77.1%
*-commutativeN/A
*-lowering-*.f64N/A
clear-numN/A
div-invN/A
sin-lowering-sin.f64N/A
/-lowering-/.f64N/A
PI-lowering-PI.f64N/A
/-lowering-/.f6477.2%
Applied egg-rr77.2%
Final simplification77.2%
(FPCore (a b angle) :precision binary64 (+ (* a a) (pow (* b (sin (* PI (/ angle 180.0)))) 2.0)))
double code(double a, double b, double angle) {
return (a * a) + pow((b * sin((((double) M_PI) * (angle / 180.0)))), 2.0);
}
public static double code(double a, double b, double angle) {
return (a * a) + Math.pow((b * Math.sin((Math.PI * (angle / 180.0)))), 2.0);
}
def code(a, b, angle): return (a * a) + math.pow((b * math.sin((math.pi * (angle / 180.0)))), 2.0)
function code(a, b, angle) return Float64(Float64(a * a) + (Float64(b * sin(Float64(pi * Float64(angle / 180.0)))) ^ 2.0)) end
function tmp = code(a, b, angle) tmp = (a * a) + ((b * sin((pi * (angle / 180.0)))) ^ 2.0); end
code[a_, b_, angle_] := N[(N[(a * a), $MachinePrecision] + N[Power[N[(b * N[Sin[N[(Pi * N[(angle / 180.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
a \cdot a + {\left(b \cdot \sin \left(\pi \cdot \frac{angle}{180}\right)\right)}^{2}
\end{array}
Initial program 76.7%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6477.1%
Simplified77.1%
(FPCore (a b angle)
:precision binary64
(if (<= angle 0.195)
(+
(* a a)
(pow
(*
b
(*
angle
(+
(* PI 0.005555555555555556)
(* angle (* angle (* PI (* (* PI PI) -2.8577960676726107e-8)))))))
2.0))
(+
(* a a)
(* (- 0.5 (* 0.5 (cos (* 2.0 (/ PI (/ 180.0 angle)))))) (* b b)))))
double code(double a, double b, double angle) {
double tmp;
if (angle <= 0.195) {
tmp = (a * a) + pow((b * (angle * ((((double) M_PI) * 0.005555555555555556) + (angle * (angle * (((double) M_PI) * ((((double) M_PI) * ((double) M_PI)) * -2.8577960676726107e-8))))))), 2.0);
} else {
tmp = (a * a) + ((0.5 - (0.5 * cos((2.0 * (((double) M_PI) / (180.0 / angle)))))) * (b * b));
}
return tmp;
}
public static double code(double a, double b, double angle) {
double tmp;
if (angle <= 0.195) {
tmp = (a * a) + Math.pow((b * (angle * ((Math.PI * 0.005555555555555556) + (angle * (angle * (Math.PI * ((Math.PI * Math.PI) * -2.8577960676726107e-8))))))), 2.0);
} else {
tmp = (a * a) + ((0.5 - (0.5 * Math.cos((2.0 * (Math.PI / (180.0 / angle)))))) * (b * b));
}
return tmp;
}
def code(a, b, angle): tmp = 0 if angle <= 0.195: tmp = (a * a) + math.pow((b * (angle * ((math.pi * 0.005555555555555556) + (angle * (angle * (math.pi * ((math.pi * math.pi) * -2.8577960676726107e-8))))))), 2.0) else: tmp = (a * a) + ((0.5 - (0.5 * math.cos((2.0 * (math.pi / (180.0 / angle)))))) * (b * b)) return tmp
function code(a, b, angle) tmp = 0.0 if (angle <= 0.195) tmp = Float64(Float64(a * a) + (Float64(b * Float64(angle * Float64(Float64(pi * 0.005555555555555556) + Float64(angle * Float64(angle * Float64(pi * Float64(Float64(pi * pi) * -2.8577960676726107e-8))))))) ^ 2.0)); else tmp = Float64(Float64(a * a) + Float64(Float64(0.5 - Float64(0.5 * cos(Float64(2.0 * Float64(pi / Float64(180.0 / angle)))))) * Float64(b * b))); end return tmp end
function tmp_2 = code(a, b, angle) tmp = 0.0; if (angle <= 0.195) tmp = (a * a) + ((b * (angle * ((pi * 0.005555555555555556) + (angle * (angle * (pi * ((pi * pi) * -2.8577960676726107e-8))))))) ^ 2.0); else tmp = (a * a) + ((0.5 - (0.5 * cos((2.0 * (pi / (180.0 / angle)))))) * (b * b)); end tmp_2 = tmp; end
code[a_, b_, angle_] := If[LessEqual[angle, 0.195], N[(N[(a * a), $MachinePrecision] + N[Power[N[(b * N[(angle * N[(N[(Pi * 0.005555555555555556), $MachinePrecision] + N[(angle * N[(angle * N[(Pi * N[(N[(Pi * Pi), $MachinePrecision] * -2.8577960676726107e-8), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision], N[(N[(a * a), $MachinePrecision] + N[(N[(0.5 - N[(0.5 * N[Cos[N[(2.0 * N[(Pi / N[(180.0 / angle), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(b * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;angle \leq 0.195:\\
\;\;\;\;a \cdot a + {\left(b \cdot \left(angle \cdot \left(\pi \cdot 0.005555555555555556 + angle \cdot \left(angle \cdot \left(\pi \cdot \left(\left(\pi \cdot \pi\right) \cdot -2.8577960676726107 \cdot 10^{-8}\right)\right)\right)\right)\right)\right)}^{2}\\
\mathbf{else}:\\
\;\;\;\;a \cdot a + \left(0.5 - 0.5 \cdot \cos \left(2 \cdot \frac{\pi}{\frac{180}{angle}}\right)\right) \cdot \left(b \cdot b\right)\\
\end{array}
\end{array}
if angle < 0.19500000000000001Initial program 83.4%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6483.4%
Simplified83.4%
Taylor expanded in angle around 0
+-commutativeN/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
+-lowering-+.f64N/A
*-lowering-*.f64N/A
PI-lowering-PI.f64N/A
*-commutativeN/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
cube-multN/A
unpow2N/A
associate-*l*N/A
*-lowering-*.f64N/A
Simplified77.1%
if 0.19500000000000001 < angle Initial program 57.9%
+-lowering-+.f64N/A
pow-lowering-pow.f64N/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
PI-lowering-PI.f64N/A
pow-lowering-pow.f64N/A
Simplified56.0%
*-commutativeN/A
associate-*r/N/A
unpow-prod-downN/A
*-lowering-*.f64N/A
Applied egg-rr56.3%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6459.7%
Simplified59.7%
Final simplification72.5%
(FPCore (a b angle)
:precision binary64
(if (<= angle 0.0045)
(+ (* a a) (pow (* angle (* b (* PI 0.005555555555555556))) 2.0))
(+
(* a a)
(* (- 0.5 (* 0.5 (cos (* 2.0 (/ PI (/ 180.0 angle)))))) (* b b)))))
double code(double a, double b, double angle) {
double tmp;
if (angle <= 0.0045) {
tmp = (a * a) + pow((angle * (b * (((double) M_PI) * 0.005555555555555556))), 2.0);
} else {
tmp = (a * a) + ((0.5 - (0.5 * cos((2.0 * (((double) M_PI) / (180.0 / angle)))))) * (b * b));
}
return tmp;
}
public static double code(double a, double b, double angle) {
double tmp;
if (angle <= 0.0045) {
tmp = (a * a) + Math.pow((angle * (b * (Math.PI * 0.005555555555555556))), 2.0);
} else {
tmp = (a * a) + ((0.5 - (0.5 * Math.cos((2.0 * (Math.PI / (180.0 / angle)))))) * (b * b));
}
return tmp;
}
def code(a, b, angle): tmp = 0 if angle <= 0.0045: tmp = (a * a) + math.pow((angle * (b * (math.pi * 0.005555555555555556))), 2.0) else: tmp = (a * a) + ((0.5 - (0.5 * math.cos((2.0 * (math.pi / (180.0 / angle)))))) * (b * b)) return tmp
function code(a, b, angle) tmp = 0.0 if (angle <= 0.0045) tmp = Float64(Float64(a * a) + (Float64(angle * Float64(b * Float64(pi * 0.005555555555555556))) ^ 2.0)); else tmp = Float64(Float64(a * a) + Float64(Float64(0.5 - Float64(0.5 * cos(Float64(2.0 * Float64(pi / Float64(180.0 / angle)))))) * Float64(b * b))); end return tmp end
function tmp_2 = code(a, b, angle) tmp = 0.0; if (angle <= 0.0045) tmp = (a * a) + ((angle * (b * (pi * 0.005555555555555556))) ^ 2.0); else tmp = (a * a) + ((0.5 - (0.5 * cos((2.0 * (pi / (180.0 / angle)))))) * (b * b)); end tmp_2 = tmp; end
code[a_, b_, angle_] := If[LessEqual[angle, 0.0045], N[(N[(a * a), $MachinePrecision] + N[Power[N[(angle * N[(b * N[(Pi * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision], N[(N[(a * a), $MachinePrecision] + N[(N[(0.5 - N[(0.5 * N[Cos[N[(2.0 * N[(Pi / N[(180.0 / angle), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(b * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;angle \leq 0.0045:\\
\;\;\;\;a \cdot a + {\left(angle \cdot \left(b \cdot \left(\pi \cdot 0.005555555555555556\right)\right)\right)}^{2}\\
\mathbf{else}:\\
\;\;\;\;a \cdot a + \left(0.5 - 0.5 \cdot \cos \left(2 \cdot \frac{\pi}{\frac{180}{angle}}\right)\right) \cdot \left(b \cdot b\right)\\
\end{array}
\end{array}
if angle < 0.00449999999999999966Initial program 83.4%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6483.4%
Simplified83.4%
Taylor expanded in angle around 0
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
PI-lowering-PI.f6478.8%
Simplified78.8%
if 0.00449999999999999966 < angle Initial program 57.9%
+-lowering-+.f64N/A
pow-lowering-pow.f64N/A
*-lowering-*.f64N/A
cos-lowering-cos.f64N/A
associate-*r/N/A
/-lowering-/.f64N/A
*-lowering-*.f64N/A
PI-lowering-PI.f64N/A
pow-lowering-pow.f64N/A
Simplified56.0%
*-commutativeN/A
associate-*r/N/A
unpow-prod-downN/A
*-lowering-*.f64N/A
Applied egg-rr56.3%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6459.7%
Simplified59.7%
Final simplification73.7%
(FPCore (a b angle)
:precision binary64
(if (<= angle 0.0045)
(+ (* a a) (pow (* angle (* b (* PI 0.005555555555555556))) 2.0))
(+
(* a a)
(* b (* b (+ 0.5 (/ (cos (* PI (* angle 0.011111111111111112))) -2.0)))))))
double code(double a, double b, double angle) {
double tmp;
if (angle <= 0.0045) {
tmp = (a * a) + pow((angle * (b * (((double) M_PI) * 0.005555555555555556))), 2.0);
} else {
tmp = (a * a) + (b * (b * (0.5 + (cos((((double) M_PI) * (angle * 0.011111111111111112))) / -2.0))));
}
return tmp;
}
public static double code(double a, double b, double angle) {
double tmp;
if (angle <= 0.0045) {
tmp = (a * a) + Math.pow((angle * (b * (Math.PI * 0.005555555555555556))), 2.0);
} else {
tmp = (a * a) + (b * (b * (0.5 + (Math.cos((Math.PI * (angle * 0.011111111111111112))) / -2.0))));
}
return tmp;
}
def code(a, b, angle): tmp = 0 if angle <= 0.0045: tmp = (a * a) + math.pow((angle * (b * (math.pi * 0.005555555555555556))), 2.0) else: tmp = (a * a) + (b * (b * (0.5 + (math.cos((math.pi * (angle * 0.011111111111111112))) / -2.0)))) return tmp
function code(a, b, angle) tmp = 0.0 if (angle <= 0.0045) tmp = Float64(Float64(a * a) + (Float64(angle * Float64(b * Float64(pi * 0.005555555555555556))) ^ 2.0)); else tmp = Float64(Float64(a * a) + Float64(b * Float64(b * Float64(0.5 + Float64(cos(Float64(pi * Float64(angle * 0.011111111111111112))) / -2.0))))); end return tmp end
function tmp_2 = code(a, b, angle) tmp = 0.0; if (angle <= 0.0045) tmp = (a * a) + ((angle * (b * (pi * 0.005555555555555556))) ^ 2.0); else tmp = (a * a) + (b * (b * (0.5 + (cos((pi * (angle * 0.011111111111111112))) / -2.0)))); end tmp_2 = tmp; end
code[a_, b_, angle_] := If[LessEqual[angle, 0.0045], N[(N[(a * a), $MachinePrecision] + N[Power[N[(angle * N[(b * N[(Pi * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision], N[(N[(a * a), $MachinePrecision] + N[(b * N[(b * N[(0.5 + N[(N[Cos[N[(Pi * N[(angle * 0.011111111111111112), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / -2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;angle \leq 0.0045:\\
\;\;\;\;a \cdot a + {\left(angle \cdot \left(b \cdot \left(\pi \cdot 0.005555555555555556\right)\right)\right)}^{2}\\
\mathbf{else}:\\
\;\;\;\;a \cdot a + b \cdot \left(b \cdot \left(0.5 + \frac{\cos \left(\pi \cdot \left(angle \cdot 0.011111111111111112\right)\right)}{-2}\right)\right)\\
\end{array}
\end{array}
if angle < 0.00449999999999999966Initial program 83.4%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6483.4%
Simplified83.4%
Taylor expanded in angle around 0
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
PI-lowering-PI.f6478.8%
Simplified78.8%
if 0.00449999999999999966 < angle Initial program 57.9%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6459.6%
Simplified59.6%
unpow2N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
Applied egg-rr59.7%
Applied egg-rr59.6%
Final simplification73.7%
(FPCore (a b angle) :precision binary64 (if (<= b 1.8e+14) (* a a) (+ (* a a) (pow (* angle (* b (* PI 0.005555555555555556))) 2.0))))
double code(double a, double b, double angle) {
double tmp;
if (b <= 1.8e+14) {
tmp = a * a;
} else {
tmp = (a * a) + pow((angle * (b * (((double) M_PI) * 0.005555555555555556))), 2.0);
}
return tmp;
}
public static double code(double a, double b, double angle) {
double tmp;
if (b <= 1.8e+14) {
tmp = a * a;
} else {
tmp = (a * a) + Math.pow((angle * (b * (Math.PI * 0.005555555555555556))), 2.0);
}
return tmp;
}
def code(a, b, angle): tmp = 0 if b <= 1.8e+14: tmp = a * a else: tmp = (a * a) + math.pow((angle * (b * (math.pi * 0.005555555555555556))), 2.0) return tmp
function code(a, b, angle) tmp = 0.0 if (b <= 1.8e+14) tmp = Float64(a * a); else tmp = Float64(Float64(a * a) + (Float64(angle * Float64(b * Float64(pi * 0.005555555555555556))) ^ 2.0)); end return tmp end
function tmp_2 = code(a, b, angle) tmp = 0.0; if (b <= 1.8e+14) tmp = a * a; else tmp = (a * a) + ((angle * (b * (pi * 0.005555555555555556))) ^ 2.0); end tmp_2 = tmp; end
code[a_, b_, angle_] := If[LessEqual[b, 1.8e+14], N[(a * a), $MachinePrecision], N[(N[(a * a), $MachinePrecision] + N[Power[N[(angle * N[(b * N[(Pi * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq 1.8 \cdot 10^{+14}:\\
\;\;\;\;a \cdot a\\
\mathbf{else}:\\
\;\;\;\;a \cdot a + {\left(angle \cdot \left(b \cdot \left(\pi \cdot 0.005555555555555556\right)\right)\right)}^{2}\\
\end{array}
\end{array}
if b < 1.8e14Initial program 74.4%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6458.9%
Simplified58.9%
if 1.8e14 < b Initial program 86.3%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6486.2%
Simplified86.2%
Taylor expanded in angle around 0
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
PI-lowering-PI.f6484.8%
Simplified84.8%
Final simplification63.9%
(FPCore (a b angle) :precision binary64 (if (<= b 1.32e+14) (* a a) (+ (* a a) (pow (* 0.005555555555555556 (* PI (* b angle))) 2.0))))
double code(double a, double b, double angle) {
double tmp;
if (b <= 1.32e+14) {
tmp = a * a;
} else {
tmp = (a * a) + pow((0.005555555555555556 * (((double) M_PI) * (b * angle))), 2.0);
}
return tmp;
}
public static double code(double a, double b, double angle) {
double tmp;
if (b <= 1.32e+14) {
tmp = a * a;
} else {
tmp = (a * a) + Math.pow((0.005555555555555556 * (Math.PI * (b * angle))), 2.0);
}
return tmp;
}
def code(a, b, angle): tmp = 0 if b <= 1.32e+14: tmp = a * a else: tmp = (a * a) + math.pow((0.005555555555555556 * (math.pi * (b * angle))), 2.0) return tmp
function code(a, b, angle) tmp = 0.0 if (b <= 1.32e+14) tmp = Float64(a * a); else tmp = Float64(Float64(a * a) + (Float64(0.005555555555555556 * Float64(pi * Float64(b * angle))) ^ 2.0)); end return tmp end
function tmp_2 = code(a, b, angle) tmp = 0.0; if (b <= 1.32e+14) tmp = a * a; else tmp = (a * a) + ((0.005555555555555556 * (pi * (b * angle))) ^ 2.0); end tmp_2 = tmp; end
code[a_, b_, angle_] := If[LessEqual[b, 1.32e+14], N[(a * a), $MachinePrecision], N[(N[(a * a), $MachinePrecision] + N[Power[N[(0.005555555555555556 * N[(Pi * N[(b * angle), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq 1.32 \cdot 10^{+14}:\\
\;\;\;\;a \cdot a\\
\mathbf{else}:\\
\;\;\;\;a \cdot a + {\left(0.005555555555555556 \cdot \left(\pi \cdot \left(b \cdot angle\right)\right)\right)}^{2}\\
\end{array}
\end{array}
if b < 1.32e14Initial program 74.4%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6458.9%
Simplified58.9%
if 1.32e14 < b Initial program 86.3%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6486.2%
Simplified86.2%
clear-numN/A
div-invN/A
div-invN/A
associate-/r*N/A
/-lowering-/.f64N/A
/-lowering-/.f64N/A
PI-lowering-PI.f64N/A
/-lowering-/.f6486.6%
Applied egg-rr86.6%
Taylor expanded in angle around 0
*-lowering-*.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
PI-lowering-PI.f64N/A
*-lowering-*.f6484.8%
Simplified84.8%
Final simplification63.9%
(FPCore (a b angle)
:precision binary64
(if (<= b 1.46e+14)
(* a a)
(if (<= b 9.5e+148)
(+
(* a a)
(* (* b (* b (* PI PI))) (* 3.08641975308642e-5 (* angle angle))))
(* (* (* b angle) (* b angle)) (* (* PI PI) 3.08641975308642e-5)))))
double code(double a, double b, double angle) {
double tmp;
if (b <= 1.46e+14) {
tmp = a * a;
} else if (b <= 9.5e+148) {
tmp = (a * a) + ((b * (b * (((double) M_PI) * ((double) M_PI)))) * (3.08641975308642e-5 * (angle * angle)));
} else {
tmp = ((b * angle) * (b * angle)) * ((((double) M_PI) * ((double) M_PI)) * 3.08641975308642e-5);
}
return tmp;
}
public static double code(double a, double b, double angle) {
double tmp;
if (b <= 1.46e+14) {
tmp = a * a;
} else if (b <= 9.5e+148) {
tmp = (a * a) + ((b * (b * (Math.PI * Math.PI))) * (3.08641975308642e-5 * (angle * angle)));
} else {
tmp = ((b * angle) * (b * angle)) * ((Math.PI * Math.PI) * 3.08641975308642e-5);
}
return tmp;
}
def code(a, b, angle): tmp = 0 if b <= 1.46e+14: tmp = a * a elif b <= 9.5e+148: tmp = (a * a) + ((b * (b * (math.pi * math.pi))) * (3.08641975308642e-5 * (angle * angle))) else: tmp = ((b * angle) * (b * angle)) * ((math.pi * math.pi) * 3.08641975308642e-5) return tmp
function code(a, b, angle) tmp = 0.0 if (b <= 1.46e+14) tmp = Float64(a * a); elseif (b <= 9.5e+148) tmp = Float64(Float64(a * a) + Float64(Float64(b * Float64(b * Float64(pi * pi))) * Float64(3.08641975308642e-5 * Float64(angle * angle)))); else tmp = Float64(Float64(Float64(b * angle) * Float64(b * angle)) * Float64(Float64(pi * pi) * 3.08641975308642e-5)); end return tmp end
function tmp_2 = code(a, b, angle) tmp = 0.0; if (b <= 1.46e+14) tmp = a * a; elseif (b <= 9.5e+148) tmp = (a * a) + ((b * (b * (pi * pi))) * (3.08641975308642e-5 * (angle * angle))); else tmp = ((b * angle) * (b * angle)) * ((pi * pi) * 3.08641975308642e-5); end tmp_2 = tmp; end
code[a_, b_, angle_] := If[LessEqual[b, 1.46e+14], N[(a * a), $MachinePrecision], If[LessEqual[b, 9.5e+148], N[(N[(a * a), $MachinePrecision] + N[(N[(b * N[(b * N[(Pi * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(3.08641975308642e-5 * N[(angle * angle), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(b * angle), $MachinePrecision] * N[(b * angle), $MachinePrecision]), $MachinePrecision] * N[(N[(Pi * Pi), $MachinePrecision] * 3.08641975308642e-5), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq 1.46 \cdot 10^{+14}:\\
\;\;\;\;a \cdot a\\
\mathbf{elif}\;b \leq 9.5 \cdot 10^{+148}:\\
\;\;\;\;a \cdot a + \left(b \cdot \left(b \cdot \left(\pi \cdot \pi\right)\right)\right) \cdot \left(3.08641975308642 \cdot 10^{-5} \cdot \left(angle \cdot angle\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(b \cdot angle\right) \cdot \left(b \cdot angle\right)\right) \cdot \left(\left(\pi \cdot \pi\right) \cdot 3.08641975308642 \cdot 10^{-5}\right)\\
\end{array}
\end{array}
if b < 1.46e14Initial program 74.4%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6458.9%
Simplified58.9%
if 1.46e14 < b < 9.5000000000000002e148Initial program 68.4%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6468.2%
Simplified68.2%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
+-commutativeN/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
Simplified55.8%
if 9.5000000000000002e148 < b Initial program 99.7%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6499.7%
Simplified99.7%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
+-commutativeN/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
Simplified72.2%
Taylor expanded in a around 0
*-commutativeN/A
associate-*r*N/A
associate-*l*N/A
metadata-evalN/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
distribute-lft-neg-inN/A
metadata-evalN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
PI-lowering-PI.f64N/A
PI-lowering-PI.f6472.4%
Simplified72.4%
associate-*l*N/A
unswap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6486.2%
Applied egg-rr86.2%
Final simplification61.7%
(FPCore (a b angle)
:precision binary64
(if (<= b 1.8e+165)
(+
(* a a)
(* angle (* angle (* (* b 3.08641975308642e-5) (* b (* PI PI))))))
(* (* (* b angle) (* b angle)) (* (* PI PI) 3.08641975308642e-5))))
double code(double a, double b, double angle) {
double tmp;
if (b <= 1.8e+165) {
tmp = (a * a) + (angle * (angle * ((b * 3.08641975308642e-5) * (b * (((double) M_PI) * ((double) M_PI))))));
} else {
tmp = ((b * angle) * (b * angle)) * ((((double) M_PI) * ((double) M_PI)) * 3.08641975308642e-5);
}
return tmp;
}
public static double code(double a, double b, double angle) {
double tmp;
if (b <= 1.8e+165) {
tmp = (a * a) + (angle * (angle * ((b * 3.08641975308642e-5) * (b * (Math.PI * Math.PI)))));
} else {
tmp = ((b * angle) * (b * angle)) * ((Math.PI * Math.PI) * 3.08641975308642e-5);
}
return tmp;
}
def code(a, b, angle): tmp = 0 if b <= 1.8e+165: tmp = (a * a) + (angle * (angle * ((b * 3.08641975308642e-5) * (b * (math.pi * math.pi))))) else: tmp = ((b * angle) * (b * angle)) * ((math.pi * math.pi) * 3.08641975308642e-5) return tmp
function code(a, b, angle) tmp = 0.0 if (b <= 1.8e+165) tmp = Float64(Float64(a * a) + Float64(angle * Float64(angle * Float64(Float64(b * 3.08641975308642e-5) * Float64(b * Float64(pi * pi)))))); else tmp = Float64(Float64(Float64(b * angle) * Float64(b * angle)) * Float64(Float64(pi * pi) * 3.08641975308642e-5)); end return tmp end
function tmp_2 = code(a, b, angle) tmp = 0.0; if (b <= 1.8e+165) tmp = (a * a) + (angle * (angle * ((b * 3.08641975308642e-5) * (b * (pi * pi))))); else tmp = ((b * angle) * (b * angle)) * ((pi * pi) * 3.08641975308642e-5); end tmp_2 = tmp; end
code[a_, b_, angle_] := If[LessEqual[b, 1.8e+165], N[(N[(a * a), $MachinePrecision] + N[(angle * N[(angle * N[(N[(b * 3.08641975308642e-5), $MachinePrecision] * N[(b * N[(Pi * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(b * angle), $MachinePrecision] * N[(b * angle), $MachinePrecision]), $MachinePrecision] * N[(N[(Pi * Pi), $MachinePrecision] * 3.08641975308642e-5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq 1.8 \cdot 10^{+165}:\\
\;\;\;\;a \cdot a + angle \cdot \left(angle \cdot \left(\left(b \cdot 3.08641975308642 \cdot 10^{-5}\right) \cdot \left(b \cdot \left(\pi \cdot \pi\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(b \cdot angle\right) \cdot \left(b \cdot angle\right)\right) \cdot \left(\left(\pi \cdot \pi\right) \cdot 3.08641975308642 \cdot 10^{-5}\right)\\
\end{array}
\end{array}
if b < 1.7999999999999999e165Initial program 74.2%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6474.7%
Simplified74.7%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
+-commutativeN/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
Simplified60.6%
associate-*r*N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
PI-lowering-PI.f64N/A
PI-lowering-PI.f64N/A
*-lowering-*.f6467.6%
Applied egg-rr67.6%
if 1.7999999999999999e165 < b Initial program 99.7%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6499.7%
Simplified99.7%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
+-commutativeN/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
Simplified72.8%
Taylor expanded in a around 0
*-commutativeN/A
associate-*r*N/A
associate-*l*N/A
metadata-evalN/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
distribute-lft-neg-inN/A
metadata-evalN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
PI-lowering-PI.f64N/A
PI-lowering-PI.f6476.6%
Simplified76.6%
associate-*l*N/A
unswap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6492.1%
Applied egg-rr92.1%
Final simplification70.0%
(FPCore (a b angle) :precision binary64 (if (<= b 5.7e+135) (* a a) (* (* (* b angle) (* b angle)) (* (* PI PI) 3.08641975308642e-5))))
double code(double a, double b, double angle) {
double tmp;
if (b <= 5.7e+135) {
tmp = a * a;
} else {
tmp = ((b * angle) * (b * angle)) * ((((double) M_PI) * ((double) M_PI)) * 3.08641975308642e-5);
}
return tmp;
}
public static double code(double a, double b, double angle) {
double tmp;
if (b <= 5.7e+135) {
tmp = a * a;
} else {
tmp = ((b * angle) * (b * angle)) * ((Math.PI * Math.PI) * 3.08641975308642e-5);
}
return tmp;
}
def code(a, b, angle): tmp = 0 if b <= 5.7e+135: tmp = a * a else: tmp = ((b * angle) * (b * angle)) * ((math.pi * math.pi) * 3.08641975308642e-5) return tmp
function code(a, b, angle) tmp = 0.0 if (b <= 5.7e+135) tmp = Float64(a * a); else tmp = Float64(Float64(Float64(b * angle) * Float64(b * angle)) * Float64(Float64(pi * pi) * 3.08641975308642e-5)); end return tmp end
function tmp_2 = code(a, b, angle) tmp = 0.0; if (b <= 5.7e+135) tmp = a * a; else tmp = ((b * angle) * (b * angle)) * ((pi * pi) * 3.08641975308642e-5); end tmp_2 = tmp; end
code[a_, b_, angle_] := If[LessEqual[b, 5.7e+135], N[(a * a), $MachinePrecision], N[(N[(N[(b * angle), $MachinePrecision] * N[(b * angle), $MachinePrecision]), $MachinePrecision] * N[(N[(Pi * Pi), $MachinePrecision] * 3.08641975308642e-5), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq 5.7 \cdot 10^{+135}:\\
\;\;\;\;a \cdot a\\
\mathbf{else}:\\
\;\;\;\;\left(\left(b \cdot angle\right) \cdot \left(b \cdot angle\right)\right) \cdot \left(\left(\pi \cdot \pi\right) \cdot 3.08641975308642 \cdot 10^{-5}\right)\\
\end{array}
\end{array}
if b < 5.7000000000000002e135Initial program 73.7%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6457.7%
Simplified57.7%
if 5.7000000000000002e135 < b Initial program 95.1%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6495.0%
Simplified95.0%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
+-commutativeN/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
Simplified69.8%
Taylor expanded in a around 0
*-commutativeN/A
associate-*r*N/A
associate-*l*N/A
metadata-evalN/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
distribute-lft-neg-inN/A
metadata-evalN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
PI-lowering-PI.f64N/A
PI-lowering-PI.f6464.8%
Simplified64.8%
associate-*l*N/A
unswap-sqrN/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f6478.6%
Applied egg-rr78.6%
Final simplification60.6%
(FPCore (a b angle) :precision binary64 (if (<= b 1.4e+136) (* a a) (* angle (* (* b angle) (* b (* PI (* PI 3.08641975308642e-5)))))))
double code(double a, double b, double angle) {
double tmp;
if (b <= 1.4e+136) {
tmp = a * a;
} else {
tmp = angle * ((b * angle) * (b * (((double) M_PI) * (((double) M_PI) * 3.08641975308642e-5))));
}
return tmp;
}
public static double code(double a, double b, double angle) {
double tmp;
if (b <= 1.4e+136) {
tmp = a * a;
} else {
tmp = angle * ((b * angle) * (b * (Math.PI * (Math.PI * 3.08641975308642e-5))));
}
return tmp;
}
def code(a, b, angle): tmp = 0 if b <= 1.4e+136: tmp = a * a else: tmp = angle * ((b * angle) * (b * (math.pi * (math.pi * 3.08641975308642e-5)))) return tmp
function code(a, b, angle) tmp = 0.0 if (b <= 1.4e+136) tmp = Float64(a * a); else tmp = Float64(angle * Float64(Float64(b * angle) * Float64(b * Float64(pi * Float64(pi * 3.08641975308642e-5))))); end return tmp end
function tmp_2 = code(a, b, angle) tmp = 0.0; if (b <= 1.4e+136) tmp = a * a; else tmp = angle * ((b * angle) * (b * (pi * (pi * 3.08641975308642e-5)))); end tmp_2 = tmp; end
code[a_, b_, angle_] := If[LessEqual[b, 1.4e+136], N[(a * a), $MachinePrecision], N[(angle * N[(N[(b * angle), $MachinePrecision] * N[(b * N[(Pi * N[(Pi * 3.08641975308642e-5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;b \leq 1.4 \cdot 10^{+136}:\\
\;\;\;\;a \cdot a\\
\mathbf{else}:\\
\;\;\;\;angle \cdot \left(\left(b \cdot angle\right) \cdot \left(b \cdot \left(\pi \cdot \left(\pi \cdot 3.08641975308642 \cdot 10^{-5}\right)\right)\right)\right)\\
\end{array}
\end{array}
if b < 1.4000000000000001e136Initial program 73.7%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6457.7%
Simplified57.7%
if 1.4000000000000001e136 < b Initial program 95.1%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6495.0%
Simplified95.0%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
+-commutativeN/A
+-lowering-+.f64N/A
unpow2N/A
*-lowering-*.f64N/A
*-commutativeN/A
*-commutativeN/A
associate-*l*N/A
*-lowering-*.f64N/A
Simplified69.8%
Taylor expanded in a around 0
*-commutativeN/A
associate-*r*N/A
associate-*l*N/A
metadata-evalN/A
distribute-rgt-neg-inN/A
*-commutativeN/A
*-lowering-*.f64N/A
unpow2N/A
associate-*r*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
distribute-lft-neg-inN/A
metadata-evalN/A
*-lowering-*.f64N/A
unpow2N/A
*-lowering-*.f64N/A
PI-lowering-PI.f64N/A
PI-lowering-PI.f6464.8%
Simplified64.8%
associate-*l*N/A
associate-*l*N/A
associate-*l*N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
*-lowering-*.f64N/A
associate-*r*N/A
*-commutativeN/A
*-lowering-*.f64N/A
PI-lowering-PI.f64N/A
*-commutativeN/A
*-lowering-*.f64N/A
PI-lowering-PI.f6473.6%
Applied egg-rr73.6%
Final simplification59.9%
(FPCore (a b angle) :precision binary64 (* a a))
double code(double a, double b, double angle) {
return a * a;
}
real(8) function code(a, b, angle)
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: angle
code = a * a
end function
public static double code(double a, double b, double angle) {
return a * a;
}
def code(a, b, angle): return a * a
function code(a, b, angle) return Float64(a * a) end
function tmp = code(a, b, angle) tmp = a * a; end
code[a_, b_, angle_] := N[(a * a), $MachinePrecision]
\begin{array}{l}
\\
a \cdot a
\end{array}
Initial program 76.7%
Taylor expanded in angle around 0
unpow2N/A
*-lowering-*.f6454.6%
Simplified54.6%
herbie shell --seed 2024161
(FPCore (a b angle)
:name "ab-angle->ABCF C"
:precision binary64
(+ (pow (* a (cos (* PI (/ angle 180.0)))) 2.0) (pow (* b (sin (* PI (/ angle 180.0)))) 2.0)))