
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (/ angle 180.0) PI))
(t_1 (cos t_0))
(t_2 (sin t_0))
(t_3
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_2) t_1) x-scale)
y-scale))
(t_4
(/ (/ (+ (pow (* a t_1) 2.0) (pow (* b t_2) 2.0)) y-scale) y-scale))
(t_5
(/ (/ (+ (pow (* a t_2) 2.0) (pow (* b t_1) 2.0)) x-scale) x-scale)))
(*
180.0
(/
(atan
(/ (- (- t_4 t_5) (sqrt (+ (pow (- t_5 t_4) 2.0) (pow t_3 2.0)))) t_3))
PI))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (angle / 180.0) * ((double) M_PI);
double t_1 = cos(t_0);
double t_2 = sin(t_0);
double t_3 = ((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_2) * t_1) / x_45_scale) / y_45_scale;
double t_4 = ((pow((a * t_1), 2.0) + pow((b * t_2), 2.0)) / y_45_scale) / y_45_scale;
double t_5 = ((pow((a * t_2), 2.0) + pow((b * t_1), 2.0)) / x_45_scale) / x_45_scale;
return 180.0 * (atan((((t_4 - t_5) - sqrt((pow((t_5 - t_4), 2.0) + pow(t_3, 2.0)))) / t_3)) / ((double) M_PI));
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (angle / 180.0) * Math.PI;
double t_1 = Math.cos(t_0);
double t_2 = Math.sin(t_0);
double t_3 = ((((2.0 * (Math.pow(b, 2.0) - Math.pow(a, 2.0))) * t_2) * t_1) / x_45_scale) / y_45_scale;
double t_4 = ((Math.pow((a * t_1), 2.0) + Math.pow((b * t_2), 2.0)) / y_45_scale) / y_45_scale;
double t_5 = ((Math.pow((a * t_2), 2.0) + Math.pow((b * t_1), 2.0)) / x_45_scale) / x_45_scale;
return 180.0 * (Math.atan((((t_4 - t_5) - Math.sqrt((Math.pow((t_5 - t_4), 2.0) + Math.pow(t_3, 2.0)))) / t_3)) / Math.PI);
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = (angle / 180.0) * math.pi t_1 = math.cos(t_0) t_2 = math.sin(t_0) t_3 = ((((2.0 * (math.pow(b, 2.0) - math.pow(a, 2.0))) * t_2) * t_1) / x_45_scale) / y_45_scale t_4 = ((math.pow((a * t_1), 2.0) + math.pow((b * t_2), 2.0)) / y_45_scale) / y_45_scale t_5 = ((math.pow((a * t_2), 2.0) + math.pow((b * t_1), 2.0)) / x_45_scale) / x_45_scale return 180.0 * (math.atan((((t_4 - t_5) - math.sqrt((math.pow((t_5 - t_4), 2.0) + math.pow(t_3, 2.0)))) / t_3)) / math.pi)
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(angle / 180.0) * pi) t_1 = cos(t_0) t_2 = sin(t_0) t_3 = Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_2) * t_1) / x_45_scale) / y_45_scale) t_4 = Float64(Float64(Float64((Float64(a * t_1) ^ 2.0) + (Float64(b * t_2) ^ 2.0)) / y_45_scale) / y_45_scale) t_5 = Float64(Float64(Float64((Float64(a * t_2) ^ 2.0) + (Float64(b * t_1) ^ 2.0)) / x_45_scale) / x_45_scale) return Float64(180.0 * Float64(atan(Float64(Float64(Float64(t_4 - t_5) - sqrt(Float64((Float64(t_5 - t_4) ^ 2.0) + (t_3 ^ 2.0)))) / t_3)) / pi)) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) t_0 = (angle / 180.0) * pi; t_1 = cos(t_0); t_2 = sin(t_0); t_3 = ((((2.0 * ((b ^ 2.0) - (a ^ 2.0))) * t_2) * t_1) / x_45_scale) / y_45_scale; t_4 = ((((a * t_1) ^ 2.0) + ((b * t_2) ^ 2.0)) / y_45_scale) / y_45_scale; t_5 = ((((a * t_2) ^ 2.0) + ((b * t_1) ^ 2.0)) / x_45_scale) / x_45_scale; tmp = 180.0 * (atan((((t_4 - t_5) - sqrt((((t_5 - t_4) ^ 2.0) + (t_3 ^ 2.0)))) / t_3)) / pi); end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$1 = N[Cos[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[Sin[t$95$0], $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision] * t$95$1), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[Power[N[(a * t$95$1), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$2), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$5 = N[(N[(N[(N[Power[N[(a * t$95$2), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$1), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, N[(180.0 * N[(N[ArcTan[N[(N[(N[(t$95$4 - t$95$5), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(t$95$5 - t$95$4), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[t$95$3, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$3), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
t_0 := \frac{angle}{180} \cdot \pi\\
t_1 := \cos t\_0\\
t_2 := \sin t\_0\\
t_3 := \frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_2\right) \cdot t\_1}{x-scale}}{y-scale}\\
t_4 := \frac{\frac{{\left(a \cdot t\_1\right)}^{2} + {\left(b \cdot t\_2\right)}^{2}}{y-scale}}{y-scale}\\
t_5 := \frac{\frac{{\left(a \cdot t\_2\right)}^{2} + {\left(b \cdot t\_1\right)}^{2}}{x-scale}}{x-scale}\\
180 \cdot \frac{\tan^{-1} \left(\frac{\left(t\_4 - t\_5\right) - \sqrt{{\left(t\_5 - t\_4\right)}^{2} + {t\_3}^{2}}}{t\_3}\right)}{\pi}
\end{array}
Herbie found 22 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (/ angle 180.0) PI))
(t_1 (cos t_0))
(t_2 (sin t_0))
(t_3
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_2) t_1) x-scale)
y-scale))
(t_4
(/ (/ (+ (pow (* a t_1) 2.0) (pow (* b t_2) 2.0)) y-scale) y-scale))
(t_5
(/ (/ (+ (pow (* a t_2) 2.0) (pow (* b t_1) 2.0)) x-scale) x-scale)))
(*
180.0
(/
(atan
(/ (- (- t_4 t_5) (sqrt (+ (pow (- t_5 t_4) 2.0) (pow t_3 2.0)))) t_3))
PI))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (angle / 180.0) * ((double) M_PI);
double t_1 = cos(t_0);
double t_2 = sin(t_0);
double t_3 = ((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_2) * t_1) / x_45_scale) / y_45_scale;
double t_4 = ((pow((a * t_1), 2.0) + pow((b * t_2), 2.0)) / y_45_scale) / y_45_scale;
double t_5 = ((pow((a * t_2), 2.0) + pow((b * t_1), 2.0)) / x_45_scale) / x_45_scale;
return 180.0 * (atan((((t_4 - t_5) - sqrt((pow((t_5 - t_4), 2.0) + pow(t_3, 2.0)))) / t_3)) / ((double) M_PI));
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (angle / 180.0) * Math.PI;
double t_1 = Math.cos(t_0);
double t_2 = Math.sin(t_0);
double t_3 = ((((2.0 * (Math.pow(b, 2.0) - Math.pow(a, 2.0))) * t_2) * t_1) / x_45_scale) / y_45_scale;
double t_4 = ((Math.pow((a * t_1), 2.0) + Math.pow((b * t_2), 2.0)) / y_45_scale) / y_45_scale;
double t_5 = ((Math.pow((a * t_2), 2.0) + Math.pow((b * t_1), 2.0)) / x_45_scale) / x_45_scale;
return 180.0 * (Math.atan((((t_4 - t_5) - Math.sqrt((Math.pow((t_5 - t_4), 2.0) + Math.pow(t_3, 2.0)))) / t_3)) / Math.PI);
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = (angle / 180.0) * math.pi t_1 = math.cos(t_0) t_2 = math.sin(t_0) t_3 = ((((2.0 * (math.pow(b, 2.0) - math.pow(a, 2.0))) * t_2) * t_1) / x_45_scale) / y_45_scale t_4 = ((math.pow((a * t_1), 2.0) + math.pow((b * t_2), 2.0)) / y_45_scale) / y_45_scale t_5 = ((math.pow((a * t_2), 2.0) + math.pow((b * t_1), 2.0)) / x_45_scale) / x_45_scale return 180.0 * (math.atan((((t_4 - t_5) - math.sqrt((math.pow((t_5 - t_4), 2.0) + math.pow(t_3, 2.0)))) / t_3)) / math.pi)
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(angle / 180.0) * pi) t_1 = cos(t_0) t_2 = sin(t_0) t_3 = Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_2) * t_1) / x_45_scale) / y_45_scale) t_4 = Float64(Float64(Float64((Float64(a * t_1) ^ 2.0) + (Float64(b * t_2) ^ 2.0)) / y_45_scale) / y_45_scale) t_5 = Float64(Float64(Float64((Float64(a * t_2) ^ 2.0) + (Float64(b * t_1) ^ 2.0)) / x_45_scale) / x_45_scale) return Float64(180.0 * Float64(atan(Float64(Float64(Float64(t_4 - t_5) - sqrt(Float64((Float64(t_5 - t_4) ^ 2.0) + (t_3 ^ 2.0)))) / t_3)) / pi)) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) t_0 = (angle / 180.0) * pi; t_1 = cos(t_0); t_2 = sin(t_0); t_3 = ((((2.0 * ((b ^ 2.0) - (a ^ 2.0))) * t_2) * t_1) / x_45_scale) / y_45_scale; t_4 = ((((a * t_1) ^ 2.0) + ((b * t_2) ^ 2.0)) / y_45_scale) / y_45_scale; t_5 = ((((a * t_2) ^ 2.0) + ((b * t_1) ^ 2.0)) / x_45_scale) / x_45_scale; tmp = 180.0 * (atan((((t_4 - t_5) - sqrt((((t_5 - t_4) ^ 2.0) + (t_3 ^ 2.0)))) / t_3)) / pi); end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$1 = N[Cos[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[Sin[t$95$0], $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision] * t$95$1), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[Power[N[(a * t$95$1), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$2), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$5 = N[(N[(N[(N[Power[N[(a * t$95$2), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$1), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, N[(180.0 * N[(N[ArcTan[N[(N[(N[(t$95$4 - t$95$5), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(t$95$5 - t$95$4), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[t$95$3, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$3), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
t_0 := \frac{angle}{180} \cdot \pi\\
t_1 := \cos t\_0\\
t_2 := \sin t\_0\\
t_3 := \frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_2\right) \cdot t\_1}{x-scale}}{y-scale}\\
t_4 := \frac{\frac{{\left(a \cdot t\_1\right)}^{2} + {\left(b \cdot t\_2\right)}^{2}}{y-scale}}{y-scale}\\
t_5 := \frac{\frac{{\left(a \cdot t\_2\right)}^{2} + {\left(b \cdot t\_1\right)}^{2}}{x-scale}}{x-scale}\\
180 \cdot \frac{\tan^{-1} \left(\frac{\left(t\_4 - t\_5\right) - \sqrt{{\left(t\_5 - t\_4\right)}^{2} + {t\_3}^{2}}}{t\_3}\right)}{\pi}
\end{array}
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* PI angle) 0.005555555555555556))
(t_1 (sin (+ (- t_0) (* PI 0.5))))
(t_2 (* 0.005555555555555556 (* angle PI)))
(t_3 (cos t_2))
(t_4 (sqrt (pow t_3 4.0)))
(t_5 (/ (fma PI angle (* PI angle)) 180.0))
(t_6 (+ t_5 (* PI 0.5)))
(t_7 (+ t_6 (* PI 0.5)))
(t_8 (sin t_2))
(t_9 (- (/ (- (* PI angle) (* PI angle)) 180.0) (* PI 0.5)))
(t_10 (+ t_9 (* PI 0.5))))
(if (<= (fabs a) 1.28e-117)
(*
180.0
(/
(atan
(*
0.5
(/
(*
-1.0
(/
(*
y-scale
(+
t_4
(/
(+
(sin
(- (fma (* PI angle) 0.005555555555555556 (* PI 0.5)) t_0))
(sin t_6))
2.0)))
x-scale))
(* t_3 t_8))))
PI))
(if (<= (fabs a) 1.75e+71)
(*
180.0
(/
(atan
(*
0.5
(/
(*
-1.0
(/
(*
y-scale
(+
(sqrt (pow t_1 4.0))
(-
0.5
(*
0.5
(cos
(*
2.0
(fma (* PI angle) 0.005555555555555556 (/ PI 2.0))))))))
x-scale))
(* t_1 t_8))))
PI))
(if (<= (fabs a) 1.8e+244)
(*
180.0
(/
(atan
(*
0.5
(*
(/
(*
(- y-scale)
(/
(fma
(+ (cos (* (* PI angle) 0.011111111111111112)) 1.0)
0.5
(sqrt (pow (cos t_0) 4.0)))
x-scale))
(- (cos t_9) (- (sin t_5))))
2.0)))
PI))
(*
180.0
(/
(atan
(*
0.5
(/
(* -1.0 (/ (* y-scale (+ t_4 (pow t_3 2.0))) x-scale))
(/
(*
2.0
(* (sin (/ (- t_10 t_7) 2.0)) (cos (/ (+ t_10 t_7) 2.0))))
2.0))))
PI)))))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (((double) M_PI) * angle) * 0.005555555555555556;
double t_1 = sin((-t_0 + (((double) M_PI) * 0.5)));
double t_2 = 0.005555555555555556 * (angle * ((double) M_PI));
double t_3 = cos(t_2);
double t_4 = sqrt(pow(t_3, 4.0));
double t_5 = fma(((double) M_PI), angle, (((double) M_PI) * angle)) / 180.0;
double t_6 = t_5 + (((double) M_PI) * 0.5);
double t_7 = t_6 + (((double) M_PI) * 0.5);
double t_8 = sin(t_2);
double t_9 = (((((double) M_PI) * angle) - (((double) M_PI) * angle)) / 180.0) - (((double) M_PI) * 0.5);
double t_10 = t_9 + (((double) M_PI) * 0.5);
double tmp;
if (fabs(a) <= 1.28e-117) {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * (t_4 + ((sin((fma((((double) M_PI) * angle), 0.005555555555555556, (((double) M_PI) * 0.5)) - t_0)) + sin(t_6)) / 2.0))) / x_45_scale)) / (t_3 * t_8)))) / ((double) M_PI));
} else if (fabs(a) <= 1.75e+71) {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * (sqrt(pow(t_1, 4.0)) + (0.5 - (0.5 * cos((2.0 * fma((((double) M_PI) * angle), 0.005555555555555556, (((double) M_PI) / 2.0)))))))) / x_45_scale)) / (t_1 * t_8)))) / ((double) M_PI));
} else if (fabs(a) <= 1.8e+244) {
tmp = 180.0 * (atan((0.5 * (((-y_45_scale * (fma((cos(((((double) M_PI) * angle) * 0.011111111111111112)) + 1.0), 0.5, sqrt(pow(cos(t_0), 4.0))) / x_45_scale)) / (cos(t_9) - -sin(t_5))) * 2.0))) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * (t_4 + pow(t_3, 2.0))) / x_45_scale)) / ((2.0 * (sin(((t_10 - t_7) / 2.0)) * cos(((t_10 + t_7) / 2.0)))) / 2.0)))) / ((double) M_PI));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(pi * angle) * 0.005555555555555556) t_1 = sin(Float64(Float64(-t_0) + Float64(pi * 0.5))) t_2 = Float64(0.005555555555555556 * Float64(angle * pi)) t_3 = cos(t_2) t_4 = sqrt((t_3 ^ 4.0)) t_5 = Float64(fma(pi, angle, Float64(pi * angle)) / 180.0) t_6 = Float64(t_5 + Float64(pi * 0.5)) t_7 = Float64(t_6 + Float64(pi * 0.5)) t_8 = sin(t_2) t_9 = Float64(Float64(Float64(Float64(pi * angle) - Float64(pi * angle)) / 180.0) - Float64(pi * 0.5)) t_10 = Float64(t_9 + Float64(pi * 0.5)) tmp = 0.0 if (abs(a) <= 1.28e-117) tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(t_4 + Float64(Float64(sin(Float64(fma(Float64(pi * angle), 0.005555555555555556, Float64(pi * 0.5)) - t_0)) + sin(t_6)) / 2.0))) / x_45_scale)) / Float64(t_3 * t_8)))) / pi)); elseif (abs(a) <= 1.75e+71) tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(sqrt((t_1 ^ 4.0)) + Float64(0.5 - Float64(0.5 * cos(Float64(2.0 * fma(Float64(pi * angle), 0.005555555555555556, Float64(pi / 2.0)))))))) / x_45_scale)) / Float64(t_1 * t_8)))) / pi)); elseif (abs(a) <= 1.8e+244) tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(Float64(Float64(-y_45_scale) * Float64(fma(Float64(cos(Float64(Float64(pi * angle) * 0.011111111111111112)) + 1.0), 0.5, sqrt((cos(t_0) ^ 4.0))) / x_45_scale)) / Float64(cos(t_9) - Float64(-sin(t_5)))) * 2.0))) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(t_4 + (t_3 ^ 2.0))) / x_45_scale)) / Float64(Float64(2.0 * Float64(sin(Float64(Float64(t_10 - t_7) / 2.0)) * cos(Float64(Float64(t_10 + t_7) / 2.0)))) / 2.0)))) / pi)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]}, Block[{t$95$1 = N[Sin[N[((-t$95$0) + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Cos[t$95$2], $MachinePrecision]}, Block[{t$95$4 = N[Sqrt[N[Power[t$95$3, 4.0], $MachinePrecision]], $MachinePrecision]}, Block[{t$95$5 = N[(N[(Pi * angle + N[(Pi * angle), $MachinePrecision]), $MachinePrecision] / 180.0), $MachinePrecision]}, Block[{t$95$6 = N[(t$95$5 + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[(t$95$6 + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$8 = N[Sin[t$95$2], $MachinePrecision]}, Block[{t$95$9 = N[(N[(N[(N[(Pi * angle), $MachinePrecision] - N[(Pi * angle), $MachinePrecision]), $MachinePrecision] / 180.0), $MachinePrecision] - N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$10 = N[(t$95$9 + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[a], $MachinePrecision], 1.28e-117], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(t$95$4 + N[(N[(N[Sin[N[(N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556 + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]], $MachinePrecision] + N[Sin[t$95$6], $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(t$95$3 * t$95$8), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[Abs[a], $MachinePrecision], 1.75e+71], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(N[Sqrt[N[Power[t$95$1, 4.0], $MachinePrecision]], $MachinePrecision] + N[(0.5 - N[(0.5 * N[Cos[N[(2.0 * N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556 + N[(Pi / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(t$95$1 * t$95$8), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[Abs[a], $MachinePrecision], 1.8e+244], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(N[((-y$45$scale) * N[(N[(N[(N[Cos[N[(N[(Pi * angle), $MachinePrecision] * 0.011111111111111112), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision] * 0.5 + N[Sqrt[N[Power[N[Cos[t$95$0], $MachinePrecision], 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(N[Cos[t$95$9], $MachinePrecision] - (-N[Sin[t$95$5], $MachinePrecision])), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(t$95$4 + N[Power[t$95$3, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(N[(2.0 * N[(N[Sin[N[(N[(t$95$10 - t$95$7), $MachinePrecision] / 2.0), $MachinePrecision]], $MachinePrecision] * N[Cos[N[(N[(t$95$10 + t$95$7), $MachinePrecision] / 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]
\begin{array}{l}
t_0 := \left(\pi \cdot angle\right) \cdot 0.005555555555555556\\
t_1 := \sin \left(\left(-t\_0\right) + \pi \cdot 0.5\right)\\
t_2 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
t_3 := \cos t\_2\\
t_4 := \sqrt{{t\_3}^{4}}\\
t_5 := \frac{\mathsf{fma}\left(\pi, angle, \pi \cdot angle\right)}{180}\\
t_6 := t\_5 + \pi \cdot 0.5\\
t_7 := t\_6 + \pi \cdot 0.5\\
t_8 := \sin t\_2\\
t_9 := \frac{\pi \cdot angle - \pi \cdot angle}{180} - \pi \cdot 0.5\\
t_10 := t\_9 + \pi \cdot 0.5\\
\mathbf{if}\;\left|a\right| \leq 1.28 \cdot 10^{-117}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(t\_4 + \frac{\sin \left(\mathsf{fma}\left(\pi \cdot angle, 0.005555555555555556, \pi \cdot 0.5\right) - t\_0\right) + \sin t\_6}{2}\right)}{x-scale}}{t\_3 \cdot t\_8}\right)}{\pi}\\
\mathbf{elif}\;\left|a\right| \leq 1.75 \cdot 10^{+71}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(\sqrt{{t\_1}^{4}} + \left(0.5 - 0.5 \cdot \cos \left(2 \cdot \mathsf{fma}\left(\pi \cdot angle, 0.005555555555555556, \frac{\pi}{2}\right)\right)\right)\right)}{x-scale}}{t\_1 \cdot t\_8}\right)}{\pi}\\
\mathbf{elif}\;\left|a\right| \leq 1.8 \cdot 10^{+244}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \left(\frac{\left(-y-scale\right) \cdot \frac{\mathsf{fma}\left(\cos \left(\left(\pi \cdot angle\right) \cdot 0.011111111111111112\right) + 1, 0.5, \sqrt{{\cos t\_0}^{4}}\right)}{x-scale}}{\cos t\_9 - \left(-\sin t\_5\right)} \cdot 2\right)\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(t\_4 + {t\_3}^{2}\right)}{x-scale}}{\frac{2 \cdot \left(\sin \left(\frac{t\_10 - t\_7}{2}\right) \cdot \cos \left(\frac{t\_10 + t\_7}{2}\right)\right)}{2}}\right)}{\pi}\\
\end{array}
if a < 1.28e-117Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Applied rewrites45.4%
if 1.28e-117 < a < 1.75e71Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
lift-cos.f64N/A
cos-neg-revN/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lift-PI.f64N/A
lift-/.f64N/A
lower-+.f64N/A
lower-neg.f6445.4%
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6445.4%
Applied rewrites45.4%
lift-cos.f64N/A
cos-neg-revN/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lift-PI.f64N/A
lift-/.f64N/A
lower-+.f64N/A
lower-neg.f6445.7%
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6445.7%
Applied rewrites45.7%
if 1.75e71 < a < 1.8e244Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Applied rewrites37.7%
if 1.8e244 < a Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-*.f64N/A
*-commutativeN/A
lift-sin.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
cos-neg-revN/A
cos-neg-revN/A
sin-+PI/2-revN/A
Applied rewrites34.5%
Applied rewrites37.1%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* PI angle) 0.005555555555555556))
(t_1 (sin (+ (- t_0) (* PI 0.5))))
(t_2 (* 0.005555555555555556 (* angle PI)))
(t_3 (cos t_2))
(t_4 (sin t_2))
(t_5 (/ (fma PI angle (* PI angle)) 180.0)))
(if (<= (fabs a) 1.28e-117)
(*
180.0
(/
(atan
(*
0.5
(/
(*
-1.0
(/
(*
y-scale
(+
(sqrt (pow t_3 4.0))
(/
(+
(sin
(- (fma (* PI angle) 0.005555555555555556 (* PI 0.5)) t_0))
(sin (+ t_5 (* PI 0.5))))
2.0)))
x-scale))
(* t_3 t_4))))
PI))
(if (<= (fabs a) 1.75e+71)
(*
180.0
(/
(atan
(*
0.5
(/
(*
-1.0
(/
(*
y-scale
(+
(sqrt (pow t_1 4.0))
(-
0.5
(*
0.5
(cos
(*
2.0
(fma (* PI angle) 0.005555555555555556 (/ PI 2.0))))))))
x-scale))
(* t_1 t_4))))
PI))
(*
180.0
(/
(atan
(*
0.5
(*
(/
(*
(- y-scale)
(/
(fma
(+ (cos (* (* PI angle) 0.011111111111111112)) 1.0)
0.5
(sqrt (pow (cos t_0) 4.0)))
x-scale))
(-
(cos (- (/ (- (* PI angle) (* PI angle)) 180.0) (* PI 0.5)))
(- (sin t_5))))
2.0)))
PI))))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (((double) M_PI) * angle) * 0.005555555555555556;
double t_1 = sin((-t_0 + (((double) M_PI) * 0.5)));
double t_2 = 0.005555555555555556 * (angle * ((double) M_PI));
double t_3 = cos(t_2);
double t_4 = sin(t_2);
double t_5 = fma(((double) M_PI), angle, (((double) M_PI) * angle)) / 180.0;
double tmp;
if (fabs(a) <= 1.28e-117) {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * (sqrt(pow(t_3, 4.0)) + ((sin((fma((((double) M_PI) * angle), 0.005555555555555556, (((double) M_PI) * 0.5)) - t_0)) + sin((t_5 + (((double) M_PI) * 0.5)))) / 2.0))) / x_45_scale)) / (t_3 * t_4)))) / ((double) M_PI));
} else if (fabs(a) <= 1.75e+71) {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * (sqrt(pow(t_1, 4.0)) + (0.5 - (0.5 * cos((2.0 * fma((((double) M_PI) * angle), 0.005555555555555556, (((double) M_PI) / 2.0)))))))) / x_45_scale)) / (t_1 * t_4)))) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((0.5 * (((-y_45_scale * (fma((cos(((((double) M_PI) * angle) * 0.011111111111111112)) + 1.0), 0.5, sqrt(pow(cos(t_0), 4.0))) / x_45_scale)) / (cos(((((((double) M_PI) * angle) - (((double) M_PI) * angle)) / 180.0) - (((double) M_PI) * 0.5))) - -sin(t_5))) * 2.0))) / ((double) M_PI));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(pi * angle) * 0.005555555555555556) t_1 = sin(Float64(Float64(-t_0) + Float64(pi * 0.5))) t_2 = Float64(0.005555555555555556 * Float64(angle * pi)) t_3 = cos(t_2) t_4 = sin(t_2) t_5 = Float64(fma(pi, angle, Float64(pi * angle)) / 180.0) tmp = 0.0 if (abs(a) <= 1.28e-117) tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(sqrt((t_3 ^ 4.0)) + Float64(Float64(sin(Float64(fma(Float64(pi * angle), 0.005555555555555556, Float64(pi * 0.5)) - t_0)) + sin(Float64(t_5 + Float64(pi * 0.5)))) / 2.0))) / x_45_scale)) / Float64(t_3 * t_4)))) / pi)); elseif (abs(a) <= 1.75e+71) tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(sqrt((t_1 ^ 4.0)) + Float64(0.5 - Float64(0.5 * cos(Float64(2.0 * fma(Float64(pi * angle), 0.005555555555555556, Float64(pi / 2.0)))))))) / x_45_scale)) / Float64(t_1 * t_4)))) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(Float64(Float64(-y_45_scale) * Float64(fma(Float64(cos(Float64(Float64(pi * angle) * 0.011111111111111112)) + 1.0), 0.5, sqrt((cos(t_0) ^ 4.0))) / x_45_scale)) / Float64(cos(Float64(Float64(Float64(Float64(pi * angle) - Float64(pi * angle)) / 180.0) - Float64(pi * 0.5))) - Float64(-sin(t_5)))) * 2.0))) / pi)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]}, Block[{t$95$1 = N[Sin[N[((-t$95$0) + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Cos[t$95$2], $MachinePrecision]}, Block[{t$95$4 = N[Sin[t$95$2], $MachinePrecision]}, Block[{t$95$5 = N[(N[(Pi * angle + N[(Pi * angle), $MachinePrecision]), $MachinePrecision] / 180.0), $MachinePrecision]}, If[LessEqual[N[Abs[a], $MachinePrecision], 1.28e-117], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(N[Sqrt[N[Power[t$95$3, 4.0], $MachinePrecision]], $MachinePrecision] + N[(N[(N[Sin[N[(N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556 + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]], $MachinePrecision] + N[Sin[N[(t$95$5 + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(t$95$3 * t$95$4), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[Abs[a], $MachinePrecision], 1.75e+71], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(N[Sqrt[N[Power[t$95$1, 4.0], $MachinePrecision]], $MachinePrecision] + N[(0.5 - N[(0.5 * N[Cos[N[(2.0 * N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556 + N[(Pi / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(t$95$1 * t$95$4), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(N[((-y$45$scale) * N[(N[(N[(N[Cos[N[(N[(Pi * angle), $MachinePrecision] * 0.011111111111111112), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision] * 0.5 + N[Sqrt[N[Power[N[Cos[t$95$0], $MachinePrecision], 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(N[Cos[N[(N[(N[(N[(Pi * angle), $MachinePrecision] - N[(Pi * angle), $MachinePrecision]), $MachinePrecision] / 180.0), $MachinePrecision] - N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] - (-N[Sin[t$95$5], $MachinePrecision])), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
t_0 := \left(\pi \cdot angle\right) \cdot 0.005555555555555556\\
t_1 := \sin \left(\left(-t\_0\right) + \pi \cdot 0.5\right)\\
t_2 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
t_3 := \cos t\_2\\
t_4 := \sin t\_2\\
t_5 := \frac{\mathsf{fma}\left(\pi, angle, \pi \cdot angle\right)}{180}\\
\mathbf{if}\;\left|a\right| \leq 1.28 \cdot 10^{-117}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(\sqrt{{t\_3}^{4}} + \frac{\sin \left(\mathsf{fma}\left(\pi \cdot angle, 0.005555555555555556, \pi \cdot 0.5\right) - t\_0\right) + \sin \left(t\_5 + \pi \cdot 0.5\right)}{2}\right)}{x-scale}}{t\_3 \cdot t\_4}\right)}{\pi}\\
\mathbf{elif}\;\left|a\right| \leq 1.75 \cdot 10^{+71}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(\sqrt{{t\_1}^{4}} + \left(0.5 - 0.5 \cdot \cos \left(2 \cdot \mathsf{fma}\left(\pi \cdot angle, 0.005555555555555556, \frac{\pi}{2}\right)\right)\right)\right)}{x-scale}}{t\_1 \cdot t\_4}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \left(\frac{\left(-y-scale\right) \cdot \frac{\mathsf{fma}\left(\cos \left(\left(\pi \cdot angle\right) \cdot 0.011111111111111112\right) + 1, 0.5, \sqrt{{\cos t\_0}^{4}}\right)}{x-scale}}{\cos \left(\frac{\pi \cdot angle - \pi \cdot angle}{180} - \pi \cdot 0.5\right) - \left(-\sin t\_5\right)} \cdot 2\right)\right)}{\pi}\\
\end{array}
if a < 1.28e-117Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Applied rewrites45.4%
if 1.28e-117 < a < 1.75e71Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
lift-cos.f64N/A
cos-neg-revN/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lift-PI.f64N/A
lift-/.f64N/A
lower-+.f64N/A
lower-neg.f6445.4%
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6445.4%
Applied rewrites45.4%
lift-cos.f64N/A
cos-neg-revN/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lift-PI.f64N/A
lift-/.f64N/A
lower-+.f64N/A
lower-neg.f6445.7%
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6445.7%
Applied rewrites45.7%
if 1.75e71 < a Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Applied rewrites37.7%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* 0.005555555555555556 (* angle PI)))
(t_1 (* (* PI angle) 0.005555555555555556))
(t_2 (sin (+ (- t_1) (* PI 0.5))))
(t_3
(-
0.5
(*
0.5
(cos (* 2.0 (fma (* PI angle) 0.005555555555555556 (/ PI 2.0)))))))
(t_4 (sin t_0)))
(if (<= (fabs a) 8e-55)
(*
180.0
(/
(atan
(*
0.5
(/ (* -1.0 (/ (* y-scale (+ 1.0 t_3)) x-scale)) (* (cos t_0) t_4))))
PI))
(if (<= (fabs a) 1.75e+71)
(*
180.0
(/
(atan
(*
0.5
(/
(* -1.0 (/ (* y-scale (+ (sqrt (pow t_2 4.0)) t_3)) x-scale))
(* t_2 t_4))))
PI))
(*
180.0
(/
(atan
(*
0.5
(*
(/
(*
(- y-scale)
(/
(fma
(+ (cos (* (* PI angle) 0.011111111111111112)) 1.0)
0.5
(sqrt (pow (cos t_1) 4.0)))
x-scale))
(-
(cos (- (/ (- (* PI angle) (* PI angle)) 180.0) (* PI 0.5)))
(- (sin (/ (fma PI angle (* PI angle)) 180.0)))))
2.0)))
PI))))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = 0.005555555555555556 * (angle * ((double) M_PI));
double t_1 = (((double) M_PI) * angle) * 0.005555555555555556;
double t_2 = sin((-t_1 + (((double) M_PI) * 0.5)));
double t_3 = 0.5 - (0.5 * cos((2.0 * fma((((double) M_PI) * angle), 0.005555555555555556, (((double) M_PI) / 2.0)))));
double t_4 = sin(t_0);
double tmp;
if (fabs(a) <= 8e-55) {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * (1.0 + t_3)) / x_45_scale)) / (cos(t_0) * t_4)))) / ((double) M_PI));
} else if (fabs(a) <= 1.75e+71) {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * (sqrt(pow(t_2, 4.0)) + t_3)) / x_45_scale)) / (t_2 * t_4)))) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((0.5 * (((-y_45_scale * (fma((cos(((((double) M_PI) * angle) * 0.011111111111111112)) + 1.0), 0.5, sqrt(pow(cos(t_1), 4.0))) / x_45_scale)) / (cos(((((((double) M_PI) * angle) - (((double) M_PI) * angle)) / 180.0) - (((double) M_PI) * 0.5))) - -sin((fma(((double) M_PI), angle, (((double) M_PI) * angle)) / 180.0)))) * 2.0))) / ((double) M_PI));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(0.005555555555555556 * Float64(angle * pi)) t_1 = Float64(Float64(pi * angle) * 0.005555555555555556) t_2 = sin(Float64(Float64(-t_1) + Float64(pi * 0.5))) t_3 = Float64(0.5 - Float64(0.5 * cos(Float64(2.0 * fma(Float64(pi * angle), 0.005555555555555556, Float64(pi / 2.0)))))) t_4 = sin(t_0) tmp = 0.0 if (abs(a) <= 8e-55) tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(1.0 + t_3)) / x_45_scale)) / Float64(cos(t_0) * t_4)))) / pi)); elseif (abs(a) <= 1.75e+71) tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(sqrt((t_2 ^ 4.0)) + t_3)) / x_45_scale)) / Float64(t_2 * t_4)))) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(Float64(Float64(-y_45_scale) * Float64(fma(Float64(cos(Float64(Float64(pi * angle) * 0.011111111111111112)) + 1.0), 0.5, sqrt((cos(t_1) ^ 4.0))) / x_45_scale)) / Float64(cos(Float64(Float64(Float64(Float64(pi * angle) - Float64(pi * angle)) / 180.0) - Float64(pi * 0.5))) - Float64(-sin(Float64(fma(pi, angle, Float64(pi * angle)) / 180.0))))) * 2.0))) / pi)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]}, Block[{t$95$2 = N[Sin[N[((-t$95$1) + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$3 = N[(0.5 - N[(0.5 * N[Cos[N[(2.0 * N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556 + N[(Pi / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[Sin[t$95$0], $MachinePrecision]}, If[LessEqual[N[Abs[a], $MachinePrecision], 8e-55], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(1.0 + t$95$3), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(N[Cos[t$95$0], $MachinePrecision] * t$95$4), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[Abs[a], $MachinePrecision], 1.75e+71], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(N[Sqrt[N[Power[t$95$2, 4.0], $MachinePrecision]], $MachinePrecision] + t$95$3), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(t$95$2 * t$95$4), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(N[((-y$45$scale) * N[(N[(N[(N[Cos[N[(N[(Pi * angle), $MachinePrecision] * 0.011111111111111112), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision] * 0.5 + N[Sqrt[N[Power[N[Cos[t$95$1], $MachinePrecision], 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(N[Cos[N[(N[(N[(N[(Pi * angle), $MachinePrecision] - N[(Pi * angle), $MachinePrecision]), $MachinePrecision] / 180.0), $MachinePrecision] - N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] - (-N[Sin[N[(N[(Pi * angle + N[(Pi * angle), $MachinePrecision]), $MachinePrecision] / 180.0), $MachinePrecision]], $MachinePrecision])), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
t_0 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
t_1 := \left(\pi \cdot angle\right) \cdot 0.005555555555555556\\
t_2 := \sin \left(\left(-t\_1\right) + \pi \cdot 0.5\right)\\
t_3 := 0.5 - 0.5 \cdot \cos \left(2 \cdot \mathsf{fma}\left(\pi \cdot angle, 0.005555555555555556, \frac{\pi}{2}\right)\right)\\
t_4 := \sin t\_0\\
\mathbf{if}\;\left|a\right| \leq 8 \cdot 10^{-55}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(1 + t\_3\right)}{x-scale}}{\cos t\_0 \cdot t\_4}\right)}{\pi}\\
\mathbf{elif}\;\left|a\right| \leq 1.75 \cdot 10^{+71}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(\sqrt{{t\_2}^{4}} + t\_3\right)}{x-scale}}{t\_2 \cdot t\_4}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \left(\frac{\left(-y-scale\right) \cdot \frac{\mathsf{fma}\left(\cos \left(\left(\pi \cdot angle\right) \cdot 0.011111111111111112\right) + 1, 0.5, \sqrt{{\cos t\_1}^{4}}\right)}{x-scale}}{\cos \left(\frac{\pi \cdot angle - \pi \cdot angle}{180} - \pi \cdot 0.5\right) - \left(-\sin \left(\frac{\mathsf{fma}\left(\pi, angle, \pi \cdot angle\right)}{180}\right)\right)} \cdot 2\right)\right)}{\pi}\\
\end{array}
if a < 8e-55Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Taylor expanded in angle around 0
Applied rewrites45.1%
if 8e-55 < a < 1.75e71Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
lift-cos.f64N/A
cos-neg-revN/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lift-PI.f64N/A
lift-/.f64N/A
lower-+.f64N/A
lower-neg.f6445.4%
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6445.4%
Applied rewrites45.4%
lift-cos.f64N/A
cos-neg-revN/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lift-PI.f64N/A
lift-/.f64N/A
lower-+.f64N/A
lower-neg.f6445.7%
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6445.7%
Applied rewrites45.7%
if 1.75e71 < a Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Applied rewrites37.7%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* PI angle) 0.005555555555555556))
(t_1 (cos t_0))
(t_2 (sqrt (pow t_1 4.0))))
(if (<= (fabs a) 2.1e+57)
(/
(*
180.0
(atan
(/
(*
0.5
(-
(*
y-scale
(/
(+
(fma
(sin (fma (* PI angle) 0.011111111111111112 (* PI 0.5)))
0.5
0.5)
t_2)
x-scale))))
(* (sin t_0) t_1))))
PI)
(*
180.0
(/
(atan
(*
0.5
(*
(/
(*
(- y-scale)
(/
(fma (+ (cos (* (* PI angle) 0.011111111111111112)) 1.0) 0.5 t_2)
x-scale))
(-
(cos (- (/ (- (* PI angle) (* PI angle)) 180.0) (* PI 0.5)))
(- (sin (/ (fma PI angle (* PI angle)) 180.0)))))
2.0)))
PI)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (((double) M_PI) * angle) * 0.005555555555555556;
double t_1 = cos(t_0);
double t_2 = sqrt(pow(t_1, 4.0));
double tmp;
if (fabs(a) <= 2.1e+57) {
tmp = (180.0 * atan(((0.5 * -(y_45_scale * ((fma(sin(fma((((double) M_PI) * angle), 0.011111111111111112, (((double) M_PI) * 0.5))), 0.5, 0.5) + t_2) / x_45_scale))) / (sin(t_0) * t_1)))) / ((double) M_PI);
} else {
tmp = 180.0 * (atan((0.5 * (((-y_45_scale * (fma((cos(((((double) M_PI) * angle) * 0.011111111111111112)) + 1.0), 0.5, t_2) / x_45_scale)) / (cos(((((((double) M_PI) * angle) - (((double) M_PI) * angle)) / 180.0) - (((double) M_PI) * 0.5))) - -sin((fma(((double) M_PI), angle, (((double) M_PI) * angle)) / 180.0)))) * 2.0))) / ((double) M_PI));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(pi * angle) * 0.005555555555555556) t_1 = cos(t_0) t_2 = sqrt((t_1 ^ 4.0)) tmp = 0.0 if (abs(a) <= 2.1e+57) tmp = Float64(Float64(180.0 * atan(Float64(Float64(0.5 * Float64(-Float64(y_45_scale * Float64(Float64(fma(sin(fma(Float64(pi * angle), 0.011111111111111112, Float64(pi * 0.5))), 0.5, 0.5) + t_2) / x_45_scale)))) / Float64(sin(t_0) * t_1)))) / pi); else tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(Float64(Float64(-y_45_scale) * Float64(fma(Float64(cos(Float64(Float64(pi * angle) * 0.011111111111111112)) + 1.0), 0.5, t_2) / x_45_scale)) / Float64(cos(Float64(Float64(Float64(Float64(pi * angle) - Float64(pi * angle)) / 180.0) - Float64(pi * 0.5))) - Float64(-sin(Float64(fma(pi, angle, Float64(pi * angle)) / 180.0))))) * 2.0))) / pi)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]}, Block[{t$95$1 = N[Cos[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[Sqrt[N[Power[t$95$1, 4.0], $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[Abs[a], $MachinePrecision], 2.1e+57], N[(N[(180.0 * N[ArcTan[N[(N[(0.5 * (-N[(y$45$scale * N[(N[(N[(N[Sin[N[(N[(Pi * angle), $MachinePrecision] * 0.011111111111111112 + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 0.5 + 0.5), $MachinePrecision] + t$95$2), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision])), $MachinePrecision] / N[(N[Sin[t$95$0], $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / Pi), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(N[((-y$45$scale) * N[(N[(N[(N[Cos[N[(N[(Pi * angle), $MachinePrecision] * 0.011111111111111112), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision] * 0.5 + t$95$2), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(N[Cos[N[(N[(N[(N[(Pi * angle), $MachinePrecision] - N[(Pi * angle), $MachinePrecision]), $MachinePrecision] / 180.0), $MachinePrecision] - N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] - (-N[Sin[N[(N[(Pi * angle + N[(Pi * angle), $MachinePrecision]), $MachinePrecision] / 180.0), $MachinePrecision]], $MachinePrecision])), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := \left(\pi \cdot angle\right) \cdot 0.005555555555555556\\
t_1 := \cos t\_0\\
t_2 := \sqrt{{t\_1}^{4}}\\
\mathbf{if}\;\left|a\right| \leq 2.1 \cdot 10^{+57}:\\
\;\;\;\;\frac{180 \cdot \tan^{-1} \left(\frac{0.5 \cdot \left(-y-scale \cdot \frac{\mathsf{fma}\left(\sin \left(\mathsf{fma}\left(\pi \cdot angle, 0.011111111111111112, \pi \cdot 0.5\right)\right), 0.5, 0.5\right) + t\_2}{x-scale}\right)}{\sin t\_0 \cdot t\_1}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \left(\frac{\left(-y-scale\right) \cdot \frac{\mathsf{fma}\left(\cos \left(\left(\pi \cdot angle\right) \cdot 0.011111111111111112\right) + 1, 0.5, t\_2\right)}{x-scale}}{\cos \left(\frac{\pi \cdot angle - \pi \cdot angle}{180} - \pi \cdot 0.5\right) - \left(-\sin \left(\frac{\mathsf{fma}\left(\pi, angle, \pi \cdot angle\right)}{180}\right)\right)} \cdot 2\right)\right)}{\pi}\\
\end{array}
if a < 2.0999999999999999e57Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
Applied rewrites45.4%
lift-cos.f64N/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-PI.f64N/A
lift-/.f64N/A
lower-fma.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
metadata-eval45.4%
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6445.4%
Applied rewrites45.4%
if 2.0999999999999999e57 < a Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Applied rewrites37.7%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (/ angle 180.0) PI))
(t_1 (cos t_0))
(t_2 (* 0.005555555555555556 (* angle PI)))
(t_3 (cos t_2))
(t_4 (sin t_0))
(t_5
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_4) t_1) x-scale)
y-scale))
(t_6
(/ (/ (+ (pow (* a t_1) 2.0) (pow (* b t_4) 2.0)) y-scale) y-scale))
(t_7
(/ (/ (+ (pow (* a t_4) 2.0) (pow (* b t_1) 2.0)) x-scale) x-scale))
(t_8 (* t_3 (sin t_2))))
(if (<=
(/ (- (- t_6 t_7) (sqrt (+ (pow (- t_7 t_6) 2.0) (pow t_5 2.0)))) t_5)
2e+103)
(*
180.0
(/
(atan
(*
0.5
(/
(*
-1.0
(/
(*
y-scale
(+
(+ 1.0 (* -3.08641975308642e-5 (* (pow angle 2.0) (pow PI 2.0))))
(-
0.5
(*
0.5
(cos
(*
2.0
(fma (* PI angle) 0.005555555555555556 (/ PI 2.0))))))))
x-scale))
t_8)))
PI))
(*
180.0
(/
(atan
(*
0.5
(/
(*
-1.0
(/
(*
y-scale
(+
(sqrt (pow t_3 4.0))
(-
0.5
(*
0.5
(sin
(+
(-
(* (fma (* PI angle) 0.005555555555555556 (* PI 0.5)) 2.0))
(* PI 0.5)))))))
x-scale))
t_8)))
PI)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (angle / 180.0) * ((double) M_PI);
double t_1 = cos(t_0);
double t_2 = 0.005555555555555556 * (angle * ((double) M_PI));
double t_3 = cos(t_2);
double t_4 = sin(t_0);
double t_5 = ((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_4) * t_1) / x_45_scale) / y_45_scale;
double t_6 = ((pow((a * t_1), 2.0) + pow((b * t_4), 2.0)) / y_45_scale) / y_45_scale;
double t_7 = ((pow((a * t_4), 2.0) + pow((b * t_1), 2.0)) / x_45_scale) / x_45_scale;
double t_8 = t_3 * sin(t_2);
double tmp;
if ((((t_6 - t_7) - sqrt((pow((t_7 - t_6), 2.0) + pow(t_5, 2.0)))) / t_5) <= 2e+103) {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * ((1.0 + (-3.08641975308642e-5 * (pow(angle, 2.0) * pow(((double) M_PI), 2.0)))) + (0.5 - (0.5 * cos((2.0 * fma((((double) M_PI) * angle), 0.005555555555555556, (((double) M_PI) / 2.0)))))))) / x_45_scale)) / t_8))) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * (sqrt(pow(t_3, 4.0)) + (0.5 - (0.5 * sin((-(fma((((double) M_PI) * angle), 0.005555555555555556, (((double) M_PI) * 0.5)) * 2.0) + (((double) M_PI) * 0.5))))))) / x_45_scale)) / t_8))) / ((double) M_PI));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(angle / 180.0) * pi) t_1 = cos(t_0) t_2 = Float64(0.005555555555555556 * Float64(angle * pi)) t_3 = cos(t_2) t_4 = sin(t_0) t_5 = Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_4) * t_1) / x_45_scale) / y_45_scale) t_6 = Float64(Float64(Float64((Float64(a * t_1) ^ 2.0) + (Float64(b * t_4) ^ 2.0)) / y_45_scale) / y_45_scale) t_7 = Float64(Float64(Float64((Float64(a * t_4) ^ 2.0) + (Float64(b * t_1) ^ 2.0)) / x_45_scale) / x_45_scale) t_8 = Float64(t_3 * sin(t_2)) tmp = 0.0 if (Float64(Float64(Float64(t_6 - t_7) - sqrt(Float64((Float64(t_7 - t_6) ^ 2.0) + (t_5 ^ 2.0)))) / t_5) <= 2e+103) tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(Float64(1.0 + Float64(-3.08641975308642e-5 * Float64((angle ^ 2.0) * (pi ^ 2.0)))) + Float64(0.5 - Float64(0.5 * cos(Float64(2.0 * fma(Float64(pi * angle), 0.005555555555555556, Float64(pi / 2.0)))))))) / x_45_scale)) / t_8))) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(sqrt((t_3 ^ 4.0)) + Float64(0.5 - Float64(0.5 * sin(Float64(Float64(-Float64(fma(Float64(pi * angle), 0.005555555555555556, Float64(pi * 0.5)) * 2.0)) + Float64(pi * 0.5))))))) / x_45_scale)) / t_8))) / pi)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$1 = N[Cos[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Cos[t$95$2], $MachinePrecision]}, Block[{t$95$4 = N[Sin[t$95$0], $MachinePrecision]}, Block[{t$95$5 = N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$4), $MachinePrecision] * t$95$1), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$6 = N[(N[(N[(N[Power[N[(a * t$95$1), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$4), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$7 = N[(N[(N[(N[Power[N[(a * t$95$4), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$1), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, Block[{t$95$8 = N[(t$95$3 * N[Sin[t$95$2], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[(N[(t$95$6 - t$95$7), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(t$95$7 - t$95$6), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[t$95$5, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$5), $MachinePrecision], 2e+103], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(N[(1.0 + N[(-3.08641975308642e-5 * N[(N[Power[angle, 2.0], $MachinePrecision] * N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(0.5 - N[(0.5 * N[Cos[N[(2.0 * N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556 + N[(Pi / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / t$95$8), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(N[Sqrt[N[Power[t$95$3, 4.0], $MachinePrecision]], $MachinePrecision] + N[(0.5 - N[(0.5 * N[Sin[N[((-N[(N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556 + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]) + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / t$95$8), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}
t_0 := \frac{angle}{180} \cdot \pi\\
t_1 := \cos t\_0\\
t_2 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
t_3 := \cos t\_2\\
t_4 := \sin t\_0\\
t_5 := \frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_4\right) \cdot t\_1}{x-scale}}{y-scale}\\
t_6 := \frac{\frac{{\left(a \cdot t\_1\right)}^{2} + {\left(b \cdot t\_4\right)}^{2}}{y-scale}}{y-scale}\\
t_7 := \frac{\frac{{\left(a \cdot t\_4\right)}^{2} + {\left(b \cdot t\_1\right)}^{2}}{x-scale}}{x-scale}\\
t_8 := t\_3 \cdot \sin t\_2\\
\mathbf{if}\;\frac{\left(t\_6 - t\_7\right) - \sqrt{{\left(t\_7 - t\_6\right)}^{2} + {t\_5}^{2}}}{t\_5} \leq 2 \cdot 10^{+103}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(\left(1 + -3.08641975308642 \cdot 10^{-5} \cdot \left({angle}^{2} \cdot {\pi}^{2}\right)\right) + \left(0.5 - 0.5 \cdot \cos \left(2 \cdot \mathsf{fma}\left(\pi \cdot angle, 0.005555555555555556, \frac{\pi}{2}\right)\right)\right)\right)}{x-scale}}{t\_8}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(\sqrt{{t\_3}^{4}} + \left(0.5 - 0.5 \cdot \sin \left(\left(-\mathsf{fma}\left(\pi \cdot angle, 0.005555555555555556, \pi \cdot 0.5\right) \cdot 2\right) + \pi \cdot 0.5\right)\right)\right)}{x-scale}}{t\_8}\right)}{\pi}\\
\end{array}
if (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) < 2e103Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Taylor expanded in angle around 0
lower-+.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-pow.f64N/A
lower-PI.f6439.3%
Applied rewrites39.3%
if 2e103 < (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
lift-cos.f64N/A
cos-neg-revN/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lift-PI.f64N/A
lift-/.f64N/A
lower-+.f64N/A
lower-neg.f6445.4%
lift-*.f64N/A
*-commutativeN/A
lower-*.f6445.4%
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6445.4%
lift-/.f64N/A
Applied rewrites45.4%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* PI angle) 0.005555555555555556))
(t_1 (* 0.005555555555555556 (* angle PI)))
(t_2 (* (/ angle 180.0) PI))
(t_3 (cos t_2))
(t_4 (cos t_0))
(t_5 (sin t_2))
(t_6
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_5) t_3) x-scale)
y-scale))
(t_7
(/ (/ (+ (pow (* a t_5) 2.0) (pow (* b t_3) 2.0)) x-scale) x-scale))
(t_8
(/ (/ (+ (pow (* a t_3) 2.0) (pow (* b t_5) 2.0)) y-scale) y-scale)))
(if (<=
(/ (- (- t_8 t_7) (sqrt (+ (pow (- t_7 t_8) 2.0) (pow t_6 2.0)))) t_6)
2e+103)
(*
180.0
(/
(atan
(*
0.5
(/
(*
-1.0
(/
(*
y-scale
(+
(+ 1.0 (* -3.08641975308642e-5 (* (pow angle 2.0) (pow PI 2.0))))
(-
0.5
(*
0.5
(cos
(*
2.0
(fma (* PI angle) 0.005555555555555556 (/ PI 2.0))))))))
x-scale))
(* (cos t_1) (sin t_1)))))
PI))
(/
(*
180.0
(atan
(/
(*
0.5
(-
(*
y-scale
(/
(+
(fma
(sin (fma (* PI angle) 0.011111111111111112 (* PI 0.5)))
0.5
0.5)
(sqrt (pow t_4 4.0)))
x-scale))))
(* (sin t_0) t_4))))
PI))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (((double) M_PI) * angle) * 0.005555555555555556;
double t_1 = 0.005555555555555556 * (angle * ((double) M_PI));
double t_2 = (angle / 180.0) * ((double) M_PI);
double t_3 = cos(t_2);
double t_4 = cos(t_0);
double t_5 = sin(t_2);
double t_6 = ((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_5) * t_3) / x_45_scale) / y_45_scale;
double t_7 = ((pow((a * t_5), 2.0) + pow((b * t_3), 2.0)) / x_45_scale) / x_45_scale;
double t_8 = ((pow((a * t_3), 2.0) + pow((b * t_5), 2.0)) / y_45_scale) / y_45_scale;
double tmp;
if ((((t_8 - t_7) - sqrt((pow((t_7 - t_8), 2.0) + pow(t_6, 2.0)))) / t_6) <= 2e+103) {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * ((1.0 + (-3.08641975308642e-5 * (pow(angle, 2.0) * pow(((double) M_PI), 2.0)))) + (0.5 - (0.5 * cos((2.0 * fma((((double) M_PI) * angle), 0.005555555555555556, (((double) M_PI) / 2.0)))))))) / x_45_scale)) / (cos(t_1) * sin(t_1))))) / ((double) M_PI));
} else {
tmp = (180.0 * atan(((0.5 * -(y_45_scale * ((fma(sin(fma((((double) M_PI) * angle), 0.011111111111111112, (((double) M_PI) * 0.5))), 0.5, 0.5) + sqrt(pow(t_4, 4.0))) / x_45_scale))) / (sin(t_0) * t_4)))) / ((double) M_PI);
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(pi * angle) * 0.005555555555555556) t_1 = Float64(0.005555555555555556 * Float64(angle * pi)) t_2 = Float64(Float64(angle / 180.0) * pi) t_3 = cos(t_2) t_4 = cos(t_0) t_5 = sin(t_2) t_6 = Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_5) * t_3) / x_45_scale) / y_45_scale) t_7 = Float64(Float64(Float64((Float64(a * t_5) ^ 2.0) + (Float64(b * t_3) ^ 2.0)) / x_45_scale) / x_45_scale) t_8 = Float64(Float64(Float64((Float64(a * t_3) ^ 2.0) + (Float64(b * t_5) ^ 2.0)) / y_45_scale) / y_45_scale) tmp = 0.0 if (Float64(Float64(Float64(t_8 - t_7) - sqrt(Float64((Float64(t_7 - t_8) ^ 2.0) + (t_6 ^ 2.0)))) / t_6) <= 2e+103) tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(Float64(1.0 + Float64(-3.08641975308642e-5 * Float64((angle ^ 2.0) * (pi ^ 2.0)))) + Float64(0.5 - Float64(0.5 * cos(Float64(2.0 * fma(Float64(pi * angle), 0.005555555555555556, Float64(pi / 2.0)))))))) / x_45_scale)) / Float64(cos(t_1) * sin(t_1))))) / pi)); else tmp = Float64(Float64(180.0 * atan(Float64(Float64(0.5 * Float64(-Float64(y_45_scale * Float64(Float64(fma(sin(fma(Float64(pi * angle), 0.011111111111111112, Float64(pi * 0.5))), 0.5, 0.5) + sqrt((t_4 ^ 4.0))) / x_45_scale)))) / Float64(sin(t_0) * t_4)))) / pi); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]}, Block[{t$95$1 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$3 = N[Cos[t$95$2], $MachinePrecision]}, Block[{t$95$4 = N[Cos[t$95$0], $MachinePrecision]}, Block[{t$95$5 = N[Sin[t$95$2], $MachinePrecision]}, Block[{t$95$6 = N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$5), $MachinePrecision] * t$95$3), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$7 = N[(N[(N[(N[Power[N[(a * t$95$5), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$3), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, Block[{t$95$8 = N[(N[(N[(N[Power[N[(a * t$95$3), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$5), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, If[LessEqual[N[(N[(N[(t$95$8 - t$95$7), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(t$95$7 - t$95$8), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[t$95$6, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$6), $MachinePrecision], 2e+103], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(N[(1.0 + N[(-3.08641975308642e-5 * N[(N[Power[angle, 2.0], $MachinePrecision] * N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(0.5 - N[(0.5 * N[Cos[N[(2.0 * N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556 + N[(Pi / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(N[Cos[t$95$1], $MachinePrecision] * N[Sin[t$95$1], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(N[(180.0 * N[ArcTan[N[(N[(0.5 * (-N[(y$45$scale * N[(N[(N[(N[Sin[N[(N[(Pi * angle), $MachinePrecision] * 0.011111111111111112 + N[(Pi * 0.5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * 0.5 + 0.5), $MachinePrecision] + N[Sqrt[N[Power[t$95$4, 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision])), $MachinePrecision] / N[(N[Sin[t$95$0], $MachinePrecision] * t$95$4), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / Pi), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}
t_0 := \left(\pi \cdot angle\right) \cdot 0.005555555555555556\\
t_1 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
t_2 := \frac{angle}{180} \cdot \pi\\
t_3 := \cos t\_2\\
t_4 := \cos t\_0\\
t_5 := \sin t\_2\\
t_6 := \frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_5\right) \cdot t\_3}{x-scale}}{y-scale}\\
t_7 := \frac{\frac{{\left(a \cdot t\_5\right)}^{2} + {\left(b \cdot t\_3\right)}^{2}}{x-scale}}{x-scale}\\
t_8 := \frac{\frac{{\left(a \cdot t\_3\right)}^{2} + {\left(b \cdot t\_5\right)}^{2}}{y-scale}}{y-scale}\\
\mathbf{if}\;\frac{\left(t\_8 - t\_7\right) - \sqrt{{\left(t\_7 - t\_8\right)}^{2} + {t\_6}^{2}}}{t\_6} \leq 2 \cdot 10^{+103}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(\left(1 + -3.08641975308642 \cdot 10^{-5} \cdot \left({angle}^{2} \cdot {\pi}^{2}\right)\right) + \left(0.5 - 0.5 \cdot \cos \left(2 \cdot \mathsf{fma}\left(\pi \cdot angle, 0.005555555555555556, \frac{\pi}{2}\right)\right)\right)\right)}{x-scale}}{\cos t\_1 \cdot \sin t\_1}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;\frac{180 \cdot \tan^{-1} \left(\frac{0.5 \cdot \left(-y-scale \cdot \frac{\mathsf{fma}\left(\sin \left(\mathsf{fma}\left(\pi \cdot angle, 0.011111111111111112, \pi \cdot 0.5\right)\right), 0.5, 0.5\right) + \sqrt{{t\_4}^{4}}}{x-scale}\right)}{\sin t\_0 \cdot t\_4}\right)}{\pi}\\
\end{array}
if (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) < 2e103Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Taylor expanded in angle around 0
lower-+.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-pow.f64N/A
lower-PI.f6439.3%
Applied rewrites39.3%
if 2e103 < (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
Applied rewrites45.4%
lift-cos.f64N/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-PI.f64N/A
lift-/.f64N/A
lower-fma.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
metadata-eval45.4%
lift-/.f64N/A
mult-flipN/A
metadata-evalN/A
lower-*.f6445.4%
Applied rewrites45.4%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* 0.005555555555555556 (* angle PI)))
(t_1 (* (/ angle 180.0) PI))
(t_2 (cos t_1))
(t_3 (* (* PI angle) 0.005555555555555556))
(t_4 (cos t_3))
(t_5 (sin t_1))
(t_6
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_5) t_2) x-scale)
y-scale))
(t_7
(/ (/ (+ (pow (* a t_5) 2.0) (pow (* b t_2) 2.0)) x-scale) x-scale))
(t_8
(/ (/ (+ (pow (* a t_2) 2.0) (pow (* b t_5) 2.0)) y-scale) y-scale)))
(if (<=
(/ (- (- t_8 t_7) (sqrt (+ (pow (- t_7 t_8) 2.0) (pow t_6 2.0)))) t_6)
2e+103)
(*
180.0
(/
(atan
(*
0.5
(/
(*
-1.0
(/
(*
y-scale
(+
(+ 1.0 (* -3.08641975308642e-5 (* (pow angle 2.0) (pow PI 2.0))))
(-
0.5
(*
0.5
(cos
(*
2.0
(fma (* PI angle) 0.005555555555555556 (/ PI 2.0))))))))
x-scale))
(* (cos t_0) (sin t_0)))))
PI))
(/
(*
(atan
(*
(/
(*
(- y-scale)
(/
(fma
(+ (cos (* (* PI angle) 0.011111111111111112)) 1.0)
0.5
(sqrt (pow t_4 4.0)))
x-scale))
(* t_4 (sin t_3)))
0.5))
180.0)
PI))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = 0.005555555555555556 * (angle * ((double) M_PI));
double t_1 = (angle / 180.0) * ((double) M_PI);
double t_2 = cos(t_1);
double t_3 = (((double) M_PI) * angle) * 0.005555555555555556;
double t_4 = cos(t_3);
double t_5 = sin(t_1);
double t_6 = ((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_5) * t_2) / x_45_scale) / y_45_scale;
double t_7 = ((pow((a * t_5), 2.0) + pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale;
double t_8 = ((pow((a * t_2), 2.0) + pow((b * t_5), 2.0)) / y_45_scale) / y_45_scale;
double tmp;
if ((((t_8 - t_7) - sqrt((pow((t_7 - t_8), 2.0) + pow(t_6, 2.0)))) / t_6) <= 2e+103) {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * ((1.0 + (-3.08641975308642e-5 * (pow(angle, 2.0) * pow(((double) M_PI), 2.0)))) + (0.5 - (0.5 * cos((2.0 * fma((((double) M_PI) * angle), 0.005555555555555556, (((double) M_PI) / 2.0)))))))) / x_45_scale)) / (cos(t_0) * sin(t_0))))) / ((double) M_PI));
} else {
tmp = (atan((((-y_45_scale * (fma((cos(((((double) M_PI) * angle) * 0.011111111111111112)) + 1.0), 0.5, sqrt(pow(t_4, 4.0))) / x_45_scale)) / (t_4 * sin(t_3))) * 0.5)) * 180.0) / ((double) M_PI);
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(0.005555555555555556 * Float64(angle * pi)) t_1 = Float64(Float64(angle / 180.0) * pi) t_2 = cos(t_1) t_3 = Float64(Float64(pi * angle) * 0.005555555555555556) t_4 = cos(t_3) t_5 = sin(t_1) t_6 = Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_5) * t_2) / x_45_scale) / y_45_scale) t_7 = Float64(Float64(Float64((Float64(a * t_5) ^ 2.0) + (Float64(b * t_2) ^ 2.0)) / x_45_scale) / x_45_scale) t_8 = Float64(Float64(Float64((Float64(a * t_2) ^ 2.0) + (Float64(b * t_5) ^ 2.0)) / y_45_scale) / y_45_scale) tmp = 0.0 if (Float64(Float64(Float64(t_8 - t_7) - sqrt(Float64((Float64(t_7 - t_8) ^ 2.0) + (t_6 ^ 2.0)))) / t_6) <= 2e+103) tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(Float64(1.0 + Float64(-3.08641975308642e-5 * Float64((angle ^ 2.0) * (pi ^ 2.0)))) + Float64(0.5 - Float64(0.5 * cos(Float64(2.0 * fma(Float64(pi * angle), 0.005555555555555556, Float64(pi / 2.0)))))))) / x_45_scale)) / Float64(cos(t_0) * sin(t_0))))) / pi)); else tmp = Float64(Float64(atan(Float64(Float64(Float64(Float64(-y_45_scale) * Float64(fma(Float64(cos(Float64(Float64(pi * angle) * 0.011111111111111112)) + 1.0), 0.5, sqrt((t_4 ^ 4.0))) / x_45_scale)) / Float64(t_4 * sin(t_3))) * 0.5)) * 180.0) / pi); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$2 = N[Cos[t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]}, Block[{t$95$4 = N[Cos[t$95$3], $MachinePrecision]}, Block[{t$95$5 = N[Sin[t$95$1], $MachinePrecision]}, Block[{t$95$6 = N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$5), $MachinePrecision] * t$95$2), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$7 = N[(N[(N[(N[Power[N[(a * t$95$5), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$2), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, Block[{t$95$8 = N[(N[(N[(N[Power[N[(a * t$95$2), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$5), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, If[LessEqual[N[(N[(N[(t$95$8 - t$95$7), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(t$95$7 - t$95$8), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[t$95$6, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$6), $MachinePrecision], 2e+103], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(N[(1.0 + N[(-3.08641975308642e-5 * N[(N[Power[angle, 2.0], $MachinePrecision] * N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(0.5 - N[(0.5 * N[Cos[N[(2.0 * N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556 + N[(Pi / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(N[Cos[t$95$0], $MachinePrecision] * N[Sin[t$95$0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(N[(N[ArcTan[N[(N[(N[((-y$45$scale) * N[(N[(N[(N[Cos[N[(N[(Pi * angle), $MachinePrecision] * 0.011111111111111112), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision] * 0.5 + N[Sqrt[N[Power[t$95$4, 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(t$95$4 * N[Sin[t$95$3], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision]], $MachinePrecision] * 180.0), $MachinePrecision] / Pi), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}
t_0 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
t_1 := \frac{angle}{180} \cdot \pi\\
t_2 := \cos t\_1\\
t_3 := \left(\pi \cdot angle\right) \cdot 0.005555555555555556\\
t_4 := \cos t\_3\\
t_5 := \sin t\_1\\
t_6 := \frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_5\right) \cdot t\_2}{x-scale}}{y-scale}\\
t_7 := \frac{\frac{{\left(a \cdot t\_5\right)}^{2} + {\left(b \cdot t\_2\right)}^{2}}{x-scale}}{x-scale}\\
t_8 := \frac{\frac{{\left(a \cdot t\_2\right)}^{2} + {\left(b \cdot t\_5\right)}^{2}}{y-scale}}{y-scale}\\
\mathbf{if}\;\frac{\left(t\_8 - t\_7\right) - \sqrt{{\left(t\_7 - t\_8\right)}^{2} + {t\_6}^{2}}}{t\_6} \leq 2 \cdot 10^{+103}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(\left(1 + -3.08641975308642 \cdot 10^{-5} \cdot \left({angle}^{2} \cdot {\pi}^{2}\right)\right) + \left(0.5 - 0.5 \cdot \cos \left(2 \cdot \mathsf{fma}\left(\pi \cdot angle, 0.005555555555555556, \frac{\pi}{2}\right)\right)\right)\right)}{x-scale}}{\cos t\_0 \cdot \sin t\_0}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;\frac{\tan^{-1} \left(\frac{\left(-y-scale\right) \cdot \frac{\mathsf{fma}\left(\cos \left(\left(\pi \cdot angle\right) \cdot 0.011111111111111112\right) + 1, 0.5, \sqrt{{t\_4}^{4}}\right)}{x-scale}}{t\_4 \cdot \sin t\_3} \cdot 0.5\right) \cdot 180}{\pi}\\
\end{array}
if (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) < 2e103Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Taylor expanded in angle around 0
lower-+.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-pow.f64N/A
lower-PI.f6439.3%
Applied rewrites39.3%
if 2e103 < (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Applied rewrites45.4%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* 0.005555555555555556 (* angle PI)))
(t_1 (* (/ angle 180.0) PI))
(t_2 (cos t_1))
(t_3 (* (* PI angle) 0.005555555555555556))
(t_4 (cos t_3))
(t_5 (sin t_1))
(t_6
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_5) t_2) x-scale)
y-scale))
(t_7
(/ (/ (+ (pow (* a t_5) 2.0) (pow (* b t_2) 2.0)) x-scale) x-scale))
(t_8
(/ (/ (+ (pow (* a t_2) 2.0) (pow (* b t_5) 2.0)) y-scale) y-scale)))
(if (<=
(/ (- (- t_8 t_7) (sqrt (+ (pow (- t_7 t_8) 2.0) (pow t_6 2.0)))) t_6)
2e+103)
(*
180.0
(/
(atan
(*
0.5
(/
(*
-1.0
(/
(*
y-scale
(+
(+ 1.0 (* -3.08641975308642e-5 (* (pow angle 2.0) (pow PI 2.0))))
(-
0.5
(*
0.5
(cos
(*
2.0
(fma (* PI angle) 0.005555555555555556 (/ PI 2.0))))))))
x-scale))
(* (cos t_0) (sin t_0)))))
PI))
(*
(/
(atan
(*
(/
(*
(- y-scale)
(/
(fma
(+ (cos (* (* PI angle) 0.011111111111111112)) 1.0)
0.5
(sqrt (pow t_4 4.0)))
x-scale))
(* t_4 (sin t_3)))
0.5))
PI)
180.0))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = 0.005555555555555556 * (angle * ((double) M_PI));
double t_1 = (angle / 180.0) * ((double) M_PI);
double t_2 = cos(t_1);
double t_3 = (((double) M_PI) * angle) * 0.005555555555555556;
double t_4 = cos(t_3);
double t_5 = sin(t_1);
double t_6 = ((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_5) * t_2) / x_45_scale) / y_45_scale;
double t_7 = ((pow((a * t_5), 2.0) + pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale;
double t_8 = ((pow((a * t_2), 2.0) + pow((b * t_5), 2.0)) / y_45_scale) / y_45_scale;
double tmp;
if ((((t_8 - t_7) - sqrt((pow((t_7 - t_8), 2.0) + pow(t_6, 2.0)))) / t_6) <= 2e+103) {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * ((1.0 + (-3.08641975308642e-5 * (pow(angle, 2.0) * pow(((double) M_PI), 2.0)))) + (0.5 - (0.5 * cos((2.0 * fma((((double) M_PI) * angle), 0.005555555555555556, (((double) M_PI) / 2.0)))))))) / x_45_scale)) / (cos(t_0) * sin(t_0))))) / ((double) M_PI));
} else {
tmp = (atan((((-y_45_scale * (fma((cos(((((double) M_PI) * angle) * 0.011111111111111112)) + 1.0), 0.5, sqrt(pow(t_4, 4.0))) / x_45_scale)) / (t_4 * sin(t_3))) * 0.5)) / ((double) M_PI)) * 180.0;
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(0.005555555555555556 * Float64(angle * pi)) t_1 = Float64(Float64(angle / 180.0) * pi) t_2 = cos(t_1) t_3 = Float64(Float64(pi * angle) * 0.005555555555555556) t_4 = cos(t_3) t_5 = sin(t_1) t_6 = Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_5) * t_2) / x_45_scale) / y_45_scale) t_7 = Float64(Float64(Float64((Float64(a * t_5) ^ 2.0) + (Float64(b * t_2) ^ 2.0)) / x_45_scale) / x_45_scale) t_8 = Float64(Float64(Float64((Float64(a * t_2) ^ 2.0) + (Float64(b * t_5) ^ 2.0)) / y_45_scale) / y_45_scale) tmp = 0.0 if (Float64(Float64(Float64(t_8 - t_7) - sqrt(Float64((Float64(t_7 - t_8) ^ 2.0) + (t_6 ^ 2.0)))) / t_6) <= 2e+103) tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(Float64(1.0 + Float64(-3.08641975308642e-5 * Float64((angle ^ 2.0) * (pi ^ 2.0)))) + Float64(0.5 - Float64(0.5 * cos(Float64(2.0 * fma(Float64(pi * angle), 0.005555555555555556, Float64(pi / 2.0)))))))) / x_45_scale)) / Float64(cos(t_0) * sin(t_0))))) / pi)); else tmp = Float64(Float64(atan(Float64(Float64(Float64(Float64(-y_45_scale) * Float64(fma(Float64(cos(Float64(Float64(pi * angle) * 0.011111111111111112)) + 1.0), 0.5, sqrt((t_4 ^ 4.0))) / x_45_scale)) / Float64(t_4 * sin(t_3))) * 0.5)) / pi) * 180.0); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$2 = N[Cos[t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]}, Block[{t$95$4 = N[Cos[t$95$3], $MachinePrecision]}, Block[{t$95$5 = N[Sin[t$95$1], $MachinePrecision]}, Block[{t$95$6 = N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$5), $MachinePrecision] * t$95$2), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$7 = N[(N[(N[(N[Power[N[(a * t$95$5), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$2), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, Block[{t$95$8 = N[(N[(N[(N[Power[N[(a * t$95$2), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$5), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, If[LessEqual[N[(N[(N[(t$95$8 - t$95$7), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(t$95$7 - t$95$8), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[t$95$6, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$6), $MachinePrecision], 2e+103], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(N[(1.0 + N[(-3.08641975308642e-5 * N[(N[Power[angle, 2.0], $MachinePrecision] * N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(0.5 - N[(0.5 * N[Cos[N[(2.0 * N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556 + N[(Pi / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(N[Cos[t$95$0], $MachinePrecision] * N[Sin[t$95$0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(N[(N[ArcTan[N[(N[(N[((-y$45$scale) * N[(N[(N[(N[Cos[N[(N[(Pi * angle), $MachinePrecision] * 0.011111111111111112), $MachinePrecision]], $MachinePrecision] + 1.0), $MachinePrecision] * 0.5 + N[Sqrt[N[Power[t$95$4, 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(t$95$4 * N[Sin[t$95$3], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision] * 180.0), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}
t_0 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
t_1 := \frac{angle}{180} \cdot \pi\\
t_2 := \cos t\_1\\
t_3 := \left(\pi \cdot angle\right) \cdot 0.005555555555555556\\
t_4 := \cos t\_3\\
t_5 := \sin t\_1\\
t_6 := \frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_5\right) \cdot t\_2}{x-scale}}{y-scale}\\
t_7 := \frac{\frac{{\left(a \cdot t\_5\right)}^{2} + {\left(b \cdot t\_2\right)}^{2}}{x-scale}}{x-scale}\\
t_8 := \frac{\frac{{\left(a \cdot t\_2\right)}^{2} + {\left(b \cdot t\_5\right)}^{2}}{y-scale}}{y-scale}\\
\mathbf{if}\;\frac{\left(t\_8 - t\_7\right) - \sqrt{{\left(t\_7 - t\_8\right)}^{2} + {t\_6}^{2}}}{t\_6} \leq 2 \cdot 10^{+103}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(\left(1 + -3.08641975308642 \cdot 10^{-5} \cdot \left({angle}^{2} \cdot {\pi}^{2}\right)\right) + \left(0.5 - 0.5 \cdot \cos \left(2 \cdot \mathsf{fma}\left(\pi \cdot angle, 0.005555555555555556, \frac{\pi}{2}\right)\right)\right)\right)}{x-scale}}{\cos t\_0 \cdot \sin t\_0}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;\frac{\tan^{-1} \left(\frac{\left(-y-scale\right) \cdot \frac{\mathsf{fma}\left(\cos \left(\left(\pi \cdot angle\right) \cdot 0.011111111111111112\right) + 1, 0.5, \sqrt{{t\_4}^{4}}\right)}{x-scale}}{t\_4 \cdot \sin t\_3} \cdot 0.5\right)}{\pi} \cdot 180\\
\end{array}
if (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) < 2e103Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Taylor expanded in angle around 0
lower-+.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-pow.f64N/A
lower-PI.f6439.3%
Applied rewrites39.3%
if 2e103 < (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Applied rewrites45.4%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (/ angle 180.0) PI))
(t_1 (cos t_0))
(t_2
(-
0.5
(*
0.5
(cos (* 2.0 (fma (* PI angle) 0.005555555555555556 (/ PI 2.0)))))))
(t_3 (* 0.005555555555555556 (* angle PI)))
(t_4 (sin t_0))
(t_5
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_4) t_1) x-scale)
y-scale))
(t_6
(/ (/ (+ (pow (* a t_1) 2.0) (pow (* b t_4) 2.0)) y-scale) y-scale))
(t_7
(/ (/ (+ (pow (* a t_4) 2.0) (pow (* b t_1) 2.0)) x-scale) x-scale))
(t_8 (* (cos t_3) (sin t_3))))
(if (<=
(/ (- (- t_6 t_7) (sqrt (+ (pow (- t_7 t_6) 2.0) (pow t_5 2.0)))) t_5)
2e+103)
(*
180.0
(/
(atan
(*
0.5
(/
(*
-1.0
(/
(*
y-scale
(+
(+ 1.0 (* -3.08641975308642e-5 (* (pow angle 2.0) (pow PI 2.0))))
t_2))
x-scale))
t_8)))
PI))
(*
180.0
(/
(atan (* 0.5 (/ (* -1.0 (/ (* y-scale (+ 1.0 t_2)) x-scale)) t_8)))
PI)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (angle / 180.0) * ((double) M_PI);
double t_1 = cos(t_0);
double t_2 = 0.5 - (0.5 * cos((2.0 * fma((((double) M_PI) * angle), 0.005555555555555556, (((double) M_PI) / 2.0)))));
double t_3 = 0.005555555555555556 * (angle * ((double) M_PI));
double t_4 = sin(t_0);
double t_5 = ((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_4) * t_1) / x_45_scale) / y_45_scale;
double t_6 = ((pow((a * t_1), 2.0) + pow((b * t_4), 2.0)) / y_45_scale) / y_45_scale;
double t_7 = ((pow((a * t_4), 2.0) + pow((b * t_1), 2.0)) / x_45_scale) / x_45_scale;
double t_8 = cos(t_3) * sin(t_3);
double tmp;
if ((((t_6 - t_7) - sqrt((pow((t_7 - t_6), 2.0) + pow(t_5, 2.0)))) / t_5) <= 2e+103) {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * ((1.0 + (-3.08641975308642e-5 * (pow(angle, 2.0) * pow(((double) M_PI), 2.0)))) + t_2)) / x_45_scale)) / t_8))) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * (1.0 + t_2)) / x_45_scale)) / t_8))) / ((double) M_PI));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(angle / 180.0) * pi) t_1 = cos(t_0) t_2 = Float64(0.5 - Float64(0.5 * cos(Float64(2.0 * fma(Float64(pi * angle), 0.005555555555555556, Float64(pi / 2.0)))))) t_3 = Float64(0.005555555555555556 * Float64(angle * pi)) t_4 = sin(t_0) t_5 = Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_4) * t_1) / x_45_scale) / y_45_scale) t_6 = Float64(Float64(Float64((Float64(a * t_1) ^ 2.0) + (Float64(b * t_4) ^ 2.0)) / y_45_scale) / y_45_scale) t_7 = Float64(Float64(Float64((Float64(a * t_4) ^ 2.0) + (Float64(b * t_1) ^ 2.0)) / x_45_scale) / x_45_scale) t_8 = Float64(cos(t_3) * sin(t_3)) tmp = 0.0 if (Float64(Float64(Float64(t_6 - t_7) - sqrt(Float64((Float64(t_7 - t_6) ^ 2.0) + (t_5 ^ 2.0)))) / t_5) <= 2e+103) tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(Float64(1.0 + Float64(-3.08641975308642e-5 * Float64((angle ^ 2.0) * (pi ^ 2.0)))) + t_2)) / x_45_scale)) / t_8))) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(1.0 + t_2)) / x_45_scale)) / t_8))) / pi)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$1 = N[Cos[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[(0.5 - N[(0.5 * N[Cos[N[(2.0 * N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556 + N[(Pi / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[Sin[t$95$0], $MachinePrecision]}, Block[{t$95$5 = N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$4), $MachinePrecision] * t$95$1), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$6 = N[(N[(N[(N[Power[N[(a * t$95$1), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$4), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$7 = N[(N[(N[(N[Power[N[(a * t$95$4), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$1), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, Block[{t$95$8 = N[(N[Cos[t$95$3], $MachinePrecision] * N[Sin[t$95$3], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[(N[(t$95$6 - t$95$7), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(t$95$7 - t$95$6), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[t$95$5, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$5), $MachinePrecision], 2e+103], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(N[(1.0 + N[(-3.08641975308642e-5 * N[(N[Power[angle, 2.0], $MachinePrecision] * N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + t$95$2), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / t$95$8), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(1.0 + t$95$2), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / t$95$8), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}
t_0 := \frac{angle}{180} \cdot \pi\\
t_1 := \cos t\_0\\
t_2 := 0.5 - 0.5 \cdot \cos \left(2 \cdot \mathsf{fma}\left(\pi \cdot angle, 0.005555555555555556, \frac{\pi}{2}\right)\right)\\
t_3 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
t_4 := \sin t\_0\\
t_5 := \frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_4\right) \cdot t\_1}{x-scale}}{y-scale}\\
t_6 := \frac{\frac{{\left(a \cdot t\_1\right)}^{2} + {\left(b \cdot t\_4\right)}^{2}}{y-scale}}{y-scale}\\
t_7 := \frac{\frac{{\left(a \cdot t\_4\right)}^{2} + {\left(b \cdot t\_1\right)}^{2}}{x-scale}}{x-scale}\\
t_8 := \cos t\_3 \cdot \sin t\_3\\
\mathbf{if}\;\frac{\left(t\_6 - t\_7\right) - \sqrt{{\left(t\_7 - t\_6\right)}^{2} + {t\_5}^{2}}}{t\_5} \leq 2 \cdot 10^{+103}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(\left(1 + -3.08641975308642 \cdot 10^{-5} \cdot \left({angle}^{2} \cdot {\pi}^{2}\right)\right) + t\_2\right)}{x-scale}}{t\_8}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(1 + t\_2\right)}{x-scale}}{t\_8}\right)}{\pi}\\
\end{array}
if (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) < 2e103Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Taylor expanded in angle around 0
lower-+.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-pow.f64N/A
lower-PI.f6439.3%
Applied rewrites39.3%
if 2e103 < (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Taylor expanded in angle around 0
Applied rewrites45.1%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (/ angle 180.0) PI))
(t_1 (cos t_0))
(t_2 (* (* PI angle) 0.005555555555555556))
(t_3 (sin t_0))
(t_4
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_3) t_1) x-scale)
y-scale))
(t_5
(/ (/ (+ (pow (* a t_3) 2.0) (pow (* b t_1) 2.0)) x-scale) x-scale))
(t_6
(/ (/ (+ (pow (* a t_1) 2.0) (pow (* b t_3) 2.0)) y-scale) y-scale))
(t_7 (* 0.005555555555555556 (* angle PI))))
(if (<=
(/ (- (- t_6 t_5) (sqrt (+ (pow (- t_5 t_6) 2.0) (pow t_4 2.0)))) t_4)
2e+103)
(/
(*
180.0
(atan
(/
(*
0.5
(-
(*
y-scale
(/
(+ 2.0 (* -6.17283950617284e-5 (* (pow angle 2.0) (pow PI 2.0))))
x-scale))))
(* (sin t_2) (cos t_2)))))
PI)
(*
180.0
(/
(atan
(*
0.5
(/
(*
-1.0
(/
(*
y-scale
(+
1.0
(-
0.5
(*
0.5
(cos
(*
2.0
(fma (* PI angle) 0.005555555555555556 (/ PI 2.0))))))))
x-scale))
(* (cos t_7) (sin t_7)))))
PI)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (angle / 180.0) * ((double) M_PI);
double t_1 = cos(t_0);
double t_2 = (((double) M_PI) * angle) * 0.005555555555555556;
double t_3 = sin(t_0);
double t_4 = ((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_3) * t_1) / x_45_scale) / y_45_scale;
double t_5 = ((pow((a * t_3), 2.0) + pow((b * t_1), 2.0)) / x_45_scale) / x_45_scale;
double t_6 = ((pow((a * t_1), 2.0) + pow((b * t_3), 2.0)) / y_45_scale) / y_45_scale;
double t_7 = 0.005555555555555556 * (angle * ((double) M_PI));
double tmp;
if ((((t_6 - t_5) - sqrt((pow((t_5 - t_6), 2.0) + pow(t_4, 2.0)))) / t_4) <= 2e+103) {
tmp = (180.0 * atan(((0.5 * -(y_45_scale * ((2.0 + (-6.17283950617284e-5 * (pow(angle, 2.0) * pow(((double) M_PI), 2.0)))) / x_45_scale))) / (sin(t_2) * cos(t_2))))) / ((double) M_PI);
} else {
tmp = 180.0 * (atan((0.5 * ((-1.0 * ((y_45_scale * (1.0 + (0.5 - (0.5 * cos((2.0 * fma((((double) M_PI) * angle), 0.005555555555555556, (((double) M_PI) / 2.0)))))))) / x_45_scale)) / (cos(t_7) * sin(t_7))))) / ((double) M_PI));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(angle / 180.0) * pi) t_1 = cos(t_0) t_2 = Float64(Float64(pi * angle) * 0.005555555555555556) t_3 = sin(t_0) t_4 = Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_3) * t_1) / x_45_scale) / y_45_scale) t_5 = Float64(Float64(Float64((Float64(a * t_3) ^ 2.0) + (Float64(b * t_1) ^ 2.0)) / x_45_scale) / x_45_scale) t_6 = Float64(Float64(Float64((Float64(a * t_1) ^ 2.0) + (Float64(b * t_3) ^ 2.0)) / y_45_scale) / y_45_scale) t_7 = Float64(0.005555555555555556 * Float64(angle * pi)) tmp = 0.0 if (Float64(Float64(Float64(t_6 - t_5) - sqrt(Float64((Float64(t_5 - t_6) ^ 2.0) + (t_4 ^ 2.0)))) / t_4) <= 2e+103) tmp = Float64(Float64(180.0 * atan(Float64(Float64(0.5 * Float64(-Float64(y_45_scale * Float64(Float64(2.0 + Float64(-6.17283950617284e-5 * Float64((angle ^ 2.0) * (pi ^ 2.0)))) / x_45_scale)))) / Float64(sin(t_2) * cos(t_2))))) / pi); else tmp = Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-1.0 * Float64(Float64(y_45_scale * Float64(1.0 + Float64(0.5 - Float64(0.5 * cos(Float64(2.0 * fma(Float64(pi * angle), 0.005555555555555556, Float64(pi / 2.0)))))))) / x_45_scale)) / Float64(cos(t_7) * sin(t_7))))) / pi)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$1 = N[Cos[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]}, Block[{t$95$3 = N[Sin[t$95$0], $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$3), $MachinePrecision] * t$95$1), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$5 = N[(N[(N[(N[Power[N[(a * t$95$3), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$1), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, Block[{t$95$6 = N[(N[(N[(N[Power[N[(a * t$95$1), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$3), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$7 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[(N[(t$95$6 - t$95$5), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(t$95$5 - t$95$6), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[t$95$4, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$4), $MachinePrecision], 2e+103], N[(N[(180.0 * N[ArcTan[N[(N[(0.5 * (-N[(y$45$scale * N[(N[(2.0 + N[(-6.17283950617284e-5 * N[(N[Power[angle, 2.0], $MachinePrecision] * N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision])), $MachinePrecision] / N[(N[Sin[t$95$2], $MachinePrecision] * N[Cos[t$95$2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / Pi), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-1.0 * N[(N[(y$45$scale * N[(1.0 + N[(0.5 - N[(0.5 * N[Cos[N[(2.0 * N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556 + N[(Pi / 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(N[Cos[t$95$7], $MachinePrecision] * N[Sin[t$95$7], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
t_0 := \frac{angle}{180} \cdot \pi\\
t_1 := \cos t\_0\\
t_2 := \left(\pi \cdot angle\right) \cdot 0.005555555555555556\\
t_3 := \sin t\_0\\
t_4 := \frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_3\right) \cdot t\_1}{x-scale}}{y-scale}\\
t_5 := \frac{\frac{{\left(a \cdot t\_3\right)}^{2} + {\left(b \cdot t\_1\right)}^{2}}{x-scale}}{x-scale}\\
t_6 := \frac{\frac{{\left(a \cdot t\_1\right)}^{2} + {\left(b \cdot t\_3\right)}^{2}}{y-scale}}{y-scale}\\
t_7 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
\mathbf{if}\;\frac{\left(t\_6 - t\_5\right) - \sqrt{{\left(t\_5 - t\_6\right)}^{2} + {t\_4}^{2}}}{t\_4} \leq 2 \cdot 10^{+103}:\\
\;\;\;\;\frac{180 \cdot \tan^{-1} \left(\frac{0.5 \cdot \left(-y-scale \cdot \frac{2 + -6.17283950617284 \cdot 10^{-5} \cdot \left({angle}^{2} \cdot {\pi}^{2}\right)}{x-scale}\right)}{\sin t\_2 \cdot \cos t\_2}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-1 \cdot \frac{y-scale \cdot \left(1 + \left(0.5 - 0.5 \cdot \cos \left(2 \cdot \mathsf{fma}\left(\pi \cdot angle, 0.005555555555555556, \frac{\pi}{2}\right)\right)\right)\right)}{x-scale}}{\cos t\_7 \cdot \sin t\_7}\right)}{\pi}\\
\end{array}
if (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) < 2e103Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
Applied rewrites45.4%
Taylor expanded in angle around 0
lower-+.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-pow.f64N/A
lower-PI.f6439.3%
Applied rewrites39.3%
if 2e103 < (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
lift-pow.f64N/A
unpow2N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-cos.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
sin-+PI/2-revN/A
sin-+PI/2-revN/A
sqr-sin-aN/A
lower--.f64N/A
Applied rewrites45.4%
Taylor expanded in angle around 0
Applied rewrites45.1%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* PI angle) 0.005555555555555556))
(t_1 (* (/ angle 180.0) PI))
(t_2 (cos t_1))
(t_3 (* (sin t_0) (cos t_0)))
(t_4 (sin t_1))
(t_5
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_4) t_2) x-scale)
y-scale))
(t_6
(/ (/ (+ (pow (* a t_4) 2.0) (pow (* b t_2) 2.0)) x-scale) x-scale))
(t_7
(/ (/ (+ (pow (* a t_2) 2.0) (pow (* b t_4) 2.0)) y-scale) y-scale)))
(if (<=
(/ (- (- t_7 t_6) (sqrt (+ (pow (- t_6 t_7) 2.0) (pow t_5 2.0)))) t_5)
2e+103)
(/
(*
180.0
(atan
(/
(*
0.5
(-
(*
y-scale
(/
(+ 2.0 (* -6.17283950617284e-5 (* (pow angle 2.0) (pow PI 2.0))))
x-scale))))
t_3)))
PI)
(/ (* 180.0 (atan (/ (* 0.5 (- (* y-scale (/ 2.0 x-scale)))) t_3))) PI))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (((double) M_PI) * angle) * 0.005555555555555556;
double t_1 = (angle / 180.0) * ((double) M_PI);
double t_2 = cos(t_1);
double t_3 = sin(t_0) * cos(t_0);
double t_4 = sin(t_1);
double t_5 = ((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_4) * t_2) / x_45_scale) / y_45_scale;
double t_6 = ((pow((a * t_4), 2.0) + pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale;
double t_7 = ((pow((a * t_2), 2.0) + pow((b * t_4), 2.0)) / y_45_scale) / y_45_scale;
double tmp;
if ((((t_7 - t_6) - sqrt((pow((t_6 - t_7), 2.0) + pow(t_5, 2.0)))) / t_5) <= 2e+103) {
tmp = (180.0 * atan(((0.5 * -(y_45_scale * ((2.0 + (-6.17283950617284e-5 * (pow(angle, 2.0) * pow(((double) M_PI), 2.0)))) / x_45_scale))) / t_3))) / ((double) M_PI);
} else {
tmp = (180.0 * atan(((0.5 * -(y_45_scale * (2.0 / x_45_scale))) / t_3))) / ((double) M_PI);
}
return tmp;
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (Math.PI * angle) * 0.005555555555555556;
double t_1 = (angle / 180.0) * Math.PI;
double t_2 = Math.cos(t_1);
double t_3 = Math.sin(t_0) * Math.cos(t_0);
double t_4 = Math.sin(t_1);
double t_5 = ((((2.0 * (Math.pow(b, 2.0) - Math.pow(a, 2.0))) * t_4) * t_2) / x_45_scale) / y_45_scale;
double t_6 = ((Math.pow((a * t_4), 2.0) + Math.pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale;
double t_7 = ((Math.pow((a * t_2), 2.0) + Math.pow((b * t_4), 2.0)) / y_45_scale) / y_45_scale;
double tmp;
if ((((t_7 - t_6) - Math.sqrt((Math.pow((t_6 - t_7), 2.0) + Math.pow(t_5, 2.0)))) / t_5) <= 2e+103) {
tmp = (180.0 * Math.atan(((0.5 * -(y_45_scale * ((2.0 + (-6.17283950617284e-5 * (Math.pow(angle, 2.0) * Math.pow(Math.PI, 2.0)))) / x_45_scale))) / t_3))) / Math.PI;
} else {
tmp = (180.0 * Math.atan(((0.5 * -(y_45_scale * (2.0 / x_45_scale))) / t_3))) / Math.PI;
}
return tmp;
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = (math.pi * angle) * 0.005555555555555556 t_1 = (angle / 180.0) * math.pi t_2 = math.cos(t_1) t_3 = math.sin(t_0) * math.cos(t_0) t_4 = math.sin(t_1) t_5 = ((((2.0 * (math.pow(b, 2.0) - math.pow(a, 2.0))) * t_4) * t_2) / x_45_scale) / y_45_scale t_6 = ((math.pow((a * t_4), 2.0) + math.pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale t_7 = ((math.pow((a * t_2), 2.0) + math.pow((b * t_4), 2.0)) / y_45_scale) / y_45_scale tmp = 0 if (((t_7 - t_6) - math.sqrt((math.pow((t_6 - t_7), 2.0) + math.pow(t_5, 2.0)))) / t_5) <= 2e+103: tmp = (180.0 * math.atan(((0.5 * -(y_45_scale * ((2.0 + (-6.17283950617284e-5 * (math.pow(angle, 2.0) * math.pow(math.pi, 2.0)))) / x_45_scale))) / t_3))) / math.pi else: tmp = (180.0 * math.atan(((0.5 * -(y_45_scale * (2.0 / x_45_scale))) / t_3))) / math.pi return tmp
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(pi * angle) * 0.005555555555555556) t_1 = Float64(Float64(angle / 180.0) * pi) t_2 = cos(t_1) t_3 = Float64(sin(t_0) * cos(t_0)) t_4 = sin(t_1) t_5 = Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_4) * t_2) / x_45_scale) / y_45_scale) t_6 = Float64(Float64(Float64((Float64(a * t_4) ^ 2.0) + (Float64(b * t_2) ^ 2.0)) / x_45_scale) / x_45_scale) t_7 = Float64(Float64(Float64((Float64(a * t_2) ^ 2.0) + (Float64(b * t_4) ^ 2.0)) / y_45_scale) / y_45_scale) tmp = 0.0 if (Float64(Float64(Float64(t_7 - t_6) - sqrt(Float64((Float64(t_6 - t_7) ^ 2.0) + (t_5 ^ 2.0)))) / t_5) <= 2e+103) tmp = Float64(Float64(180.0 * atan(Float64(Float64(0.5 * Float64(-Float64(y_45_scale * Float64(Float64(2.0 + Float64(-6.17283950617284e-5 * Float64((angle ^ 2.0) * (pi ^ 2.0)))) / x_45_scale)))) / t_3))) / pi); else tmp = Float64(Float64(180.0 * atan(Float64(Float64(0.5 * Float64(-Float64(y_45_scale * Float64(2.0 / x_45_scale)))) / t_3))) / pi); end return tmp end
function tmp_2 = code(a, b, angle, x_45_scale, y_45_scale) t_0 = (pi * angle) * 0.005555555555555556; t_1 = (angle / 180.0) * pi; t_2 = cos(t_1); t_3 = sin(t_0) * cos(t_0); t_4 = sin(t_1); t_5 = ((((2.0 * ((b ^ 2.0) - (a ^ 2.0))) * t_4) * t_2) / x_45_scale) / y_45_scale; t_6 = ((((a * t_4) ^ 2.0) + ((b * t_2) ^ 2.0)) / x_45_scale) / x_45_scale; t_7 = ((((a * t_2) ^ 2.0) + ((b * t_4) ^ 2.0)) / y_45_scale) / y_45_scale; tmp = 0.0; if ((((t_7 - t_6) - sqrt((((t_6 - t_7) ^ 2.0) + (t_5 ^ 2.0)))) / t_5) <= 2e+103) tmp = (180.0 * atan(((0.5 * -(y_45_scale * ((2.0 + (-6.17283950617284e-5 * ((angle ^ 2.0) * (pi ^ 2.0)))) / x_45_scale))) / t_3))) / pi; else tmp = (180.0 * atan(((0.5 * -(y_45_scale * (2.0 / x_45_scale))) / t_3))) / pi; end tmp_2 = tmp; end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]}, Block[{t$95$1 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$2 = N[Cos[t$95$1], $MachinePrecision]}, Block[{t$95$3 = N[(N[Sin[t$95$0], $MachinePrecision] * N[Cos[t$95$0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[Sin[t$95$1], $MachinePrecision]}, Block[{t$95$5 = N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$4), $MachinePrecision] * t$95$2), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$6 = N[(N[(N[(N[Power[N[(a * t$95$4), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$2), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, Block[{t$95$7 = N[(N[(N[(N[Power[N[(a * t$95$2), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$4), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, If[LessEqual[N[(N[(N[(t$95$7 - t$95$6), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(t$95$6 - t$95$7), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[t$95$5, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$5), $MachinePrecision], 2e+103], N[(N[(180.0 * N[ArcTan[N[(N[(0.5 * (-N[(y$45$scale * N[(N[(2.0 + N[(-6.17283950617284e-5 * N[(N[Power[angle, 2.0], $MachinePrecision] * N[Power[Pi, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision])), $MachinePrecision] / t$95$3), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / Pi), $MachinePrecision], N[(N[(180.0 * N[ArcTan[N[(N[(0.5 * (-N[(y$45$scale * N[(2.0 / x$45$scale), $MachinePrecision]), $MachinePrecision])), $MachinePrecision] / t$95$3), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / Pi), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
t_0 := \left(\pi \cdot angle\right) \cdot 0.005555555555555556\\
t_1 := \frac{angle}{180} \cdot \pi\\
t_2 := \cos t\_1\\
t_3 := \sin t\_0 \cdot \cos t\_0\\
t_4 := \sin t\_1\\
t_5 := \frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_4\right) \cdot t\_2}{x-scale}}{y-scale}\\
t_6 := \frac{\frac{{\left(a \cdot t\_4\right)}^{2} + {\left(b \cdot t\_2\right)}^{2}}{x-scale}}{x-scale}\\
t_7 := \frac{\frac{{\left(a \cdot t\_2\right)}^{2} + {\left(b \cdot t\_4\right)}^{2}}{y-scale}}{y-scale}\\
\mathbf{if}\;\frac{\left(t\_7 - t\_6\right) - \sqrt{{\left(t\_6 - t\_7\right)}^{2} + {t\_5}^{2}}}{t\_5} \leq 2 \cdot 10^{+103}:\\
\;\;\;\;\frac{180 \cdot \tan^{-1} \left(\frac{0.5 \cdot \left(-y-scale \cdot \frac{2 + -6.17283950617284 \cdot 10^{-5} \cdot \left({angle}^{2} \cdot {\pi}^{2}\right)}{x-scale}\right)}{t\_3}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;\frac{180 \cdot \tan^{-1} \left(\frac{0.5 \cdot \left(-y-scale \cdot \frac{2}{x-scale}\right)}{t\_3}\right)}{\pi}\\
\end{array}
if (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) < 2e103Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
Applied rewrites45.4%
Taylor expanded in angle around 0
lower-+.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-pow.f64N/A
lower-PI.f6439.3%
Applied rewrites39.3%
if 2e103 < (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
Applied rewrites45.4%
Taylor expanded in angle around 0
Applied rewrites45.0%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* PI angle) 0.005555555555555556)))
(/
(*
180.0
(atan
(/ (* 0.5 (- (* y-scale (/ 2.0 x-scale)))) (* (sin t_0) (cos t_0)))))
PI)))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (((double) M_PI) * angle) * 0.005555555555555556;
return (180.0 * atan(((0.5 * -(y_45_scale * (2.0 / x_45_scale))) / (sin(t_0) * cos(t_0))))) / ((double) M_PI);
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (Math.PI * angle) * 0.005555555555555556;
return (180.0 * Math.atan(((0.5 * -(y_45_scale * (2.0 / x_45_scale))) / (Math.sin(t_0) * Math.cos(t_0))))) / Math.PI;
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = (math.pi * angle) * 0.005555555555555556 return (180.0 * math.atan(((0.5 * -(y_45_scale * (2.0 / x_45_scale))) / (math.sin(t_0) * math.cos(t_0))))) / math.pi
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(pi * angle) * 0.005555555555555556) return Float64(Float64(180.0 * atan(Float64(Float64(0.5 * Float64(-Float64(y_45_scale * Float64(2.0 / x_45_scale)))) / Float64(sin(t_0) * cos(t_0))))) / pi) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) t_0 = (pi * angle) * 0.005555555555555556; tmp = (180.0 * atan(((0.5 * -(y_45_scale * (2.0 / x_45_scale))) / (sin(t_0) * cos(t_0))))) / pi; end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]}, N[(N[(180.0 * N[ArcTan[N[(N[(0.5 * (-N[(y$45$scale * N[(2.0 / x$45$scale), $MachinePrecision]), $MachinePrecision])), $MachinePrecision] / N[(N[Sin[t$95$0], $MachinePrecision] * N[Cos[t$95$0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / Pi), $MachinePrecision]]
\begin{array}{l}
t_0 := \left(\pi \cdot angle\right) \cdot 0.005555555555555556\\
\frac{180 \cdot \tan^{-1} \left(\frac{0.5 \cdot \left(-y-scale \cdot \frac{2}{x-scale}\right)}{\sin t\_0 \cdot \cos t\_0}\right)}{\pi}
\end{array}
Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
Applied rewrites45.4%
Taylor expanded in angle around 0
Applied rewrites45.0%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* 0.005555555555555556 (* angle PI))))
(*
180.0
(/
(atan (* 0.5 (/ (* -2.0 (/ y-scale x-scale)) (* (cos t_0) (sin t_0)))))
PI))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = 0.005555555555555556 * (angle * ((double) M_PI));
return 180.0 * (atan((0.5 * ((-2.0 * (y_45_scale / x_45_scale)) / (cos(t_0) * sin(t_0))))) / ((double) M_PI));
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = 0.005555555555555556 * (angle * Math.PI);
return 180.0 * (Math.atan((0.5 * ((-2.0 * (y_45_scale / x_45_scale)) / (Math.cos(t_0) * Math.sin(t_0))))) / Math.PI);
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = 0.005555555555555556 * (angle * math.pi) return 180.0 * (math.atan((0.5 * ((-2.0 * (y_45_scale / x_45_scale)) / (math.cos(t_0) * math.sin(t_0))))) / math.pi)
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(0.005555555555555556 * Float64(angle * pi)) return Float64(180.0 * Float64(atan(Float64(0.5 * Float64(Float64(-2.0 * Float64(y_45_scale / x_45_scale)) / Float64(cos(t_0) * sin(t_0))))) / pi)) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) t_0 = 0.005555555555555556 * (angle * pi); tmp = 180.0 * (atan((0.5 * ((-2.0 * (y_45_scale / x_45_scale)) / (cos(t_0) * sin(t_0))))) / pi); end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, N[(180.0 * N[(N[ArcTan[N[(0.5 * N[(N[(-2.0 * N[(y$45$scale / x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(N[Cos[t$95$0], $MachinePrecision] * N[Sin[t$95$0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
t_0 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
180 \cdot \frac{\tan^{-1} \left(0.5 \cdot \frac{-2 \cdot \frac{y-scale}{x-scale}}{\cos t\_0 \cdot \sin t\_0}\right)}{\pi}
\end{array}
Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
Taylor expanded in angle around 0
lower-*.f64N/A
lower-/.f6445.0%
Applied rewrites45.0%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* PI angle) 0.005555555555555556)))
(/
(*
180.0
(atan (/ (* 0.5 (* -2.0 (/ y-scale x-scale))) (* (sin t_0) (cos t_0)))))
PI)))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (((double) M_PI) * angle) * 0.005555555555555556;
return (180.0 * atan(((0.5 * (-2.0 * (y_45_scale / x_45_scale))) / (sin(t_0) * cos(t_0))))) / ((double) M_PI);
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (Math.PI * angle) * 0.005555555555555556;
return (180.0 * Math.atan(((0.5 * (-2.0 * (y_45_scale / x_45_scale))) / (Math.sin(t_0) * Math.cos(t_0))))) / Math.PI;
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = (math.pi * angle) * 0.005555555555555556 return (180.0 * math.atan(((0.5 * (-2.0 * (y_45_scale / x_45_scale))) / (math.sin(t_0) * math.cos(t_0))))) / math.pi
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(pi * angle) * 0.005555555555555556) return Float64(Float64(180.0 * atan(Float64(Float64(0.5 * Float64(-2.0 * Float64(y_45_scale / x_45_scale))) / Float64(sin(t_0) * cos(t_0))))) / pi) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) t_0 = (pi * angle) * 0.005555555555555556; tmp = (180.0 * atan(((0.5 * (-2.0 * (y_45_scale / x_45_scale))) / (sin(t_0) * cos(t_0))))) / pi; end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(Pi * angle), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]}, N[(N[(180.0 * N[ArcTan[N[(N[(0.5 * N[(-2.0 * N[(y$45$scale / x$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[Sin[t$95$0], $MachinePrecision] * N[Cos[t$95$0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / Pi), $MachinePrecision]]
\begin{array}{l}
t_0 := \left(\pi \cdot angle\right) \cdot 0.005555555555555556\\
\frac{180 \cdot \tan^{-1} \left(\frac{0.5 \cdot \left(-2 \cdot \frac{y-scale}{x-scale}\right)}{\sin t\_0 \cdot \cos t\_0}\right)}{\pi}
\end{array}
Initial program 13.7%
Taylor expanded in b around inf
Applied rewrites23.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites45.4%
Applied rewrites45.4%
Taylor expanded in angle around 0
lower-*.f64N/A
lower-/.f6445.0%
Applied rewrites45.0%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (/ b (* x-scale x-scale))) (t_1 (* a (/ a (* y-scale y-scale)))))
(if (<= y-scale 2.5e-40)
(*
180.0
(/
(atan
(*
-90.0
(/
(*
x-scale
(*
y-scale
(+ (sqrt (/ 1.0 (pow x-scale 4.0))) (/ 1.0 (pow x-scale 2.0)))))
(* angle PI))))
PI))
(*
180.0
(/
(atan
(*
(/ (/ 90.0 angle) (+ b a))
(/
(* (* (- t_1 (fma b t_0 (fabs (- t_1 (* b t_0))))) y-scale) x-scale)
(* (- b a) PI))))
PI)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = b / (x_45_scale * x_45_scale);
double t_1 = a * (a / (y_45_scale * y_45_scale));
double tmp;
if (y_45_scale <= 2.5e-40) {
tmp = 180.0 * (atan((-90.0 * ((x_45_scale * (y_45_scale * (sqrt((1.0 / pow(x_45_scale, 4.0))) + (1.0 / pow(x_45_scale, 2.0))))) / (angle * ((double) M_PI))))) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((((90.0 / angle) / (b + a)) * ((((t_1 - fma(b, t_0, fabs((t_1 - (b * t_0))))) * y_45_scale) * x_45_scale) / ((b - a) * ((double) M_PI))))) / ((double) M_PI));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(b / Float64(x_45_scale * x_45_scale)) t_1 = Float64(a * Float64(a / Float64(y_45_scale * y_45_scale))) tmp = 0.0 if (y_45_scale <= 2.5e-40) tmp = Float64(180.0 * Float64(atan(Float64(-90.0 * Float64(Float64(x_45_scale * Float64(y_45_scale * Float64(sqrt(Float64(1.0 / (x_45_scale ^ 4.0))) + Float64(1.0 / (x_45_scale ^ 2.0))))) / Float64(angle * pi)))) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(Float64(Float64(90.0 / angle) / Float64(b + a)) * Float64(Float64(Float64(Float64(t_1 - fma(b, t_0, abs(Float64(t_1 - Float64(b * t_0))))) * y_45_scale) * x_45_scale) / Float64(Float64(b - a) * pi)))) / pi)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(a * N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$45$scale, 2.5e-40], N[(180.0 * N[(N[ArcTan[N[(-90.0 * N[(N[(x$45$scale * N[(y$45$scale * N[(N[Sqrt[N[(1.0 / N[Power[x$45$scale, 4.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(angle * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(N[(N[(90.0 / angle), $MachinePrecision] / N[(b + a), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(t$95$1 - N[(b * t$95$0 + N[Abs[N[(t$95$1 - N[(b * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] / N[(N[(b - a), $MachinePrecision] * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
t_0 := \frac{b}{x-scale \cdot x-scale}\\
t_1 := a \cdot \frac{a}{y-scale \cdot y-scale}\\
\mathbf{if}\;y-scale \leq 2.5 \cdot 10^{-40}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(-90 \cdot \frac{x-scale \cdot \left(y-scale \cdot \left(\sqrt{\frac{1}{{x-scale}^{4}}} + \frac{1}{{x-scale}^{2}}\right)\right)}{angle \cdot \pi}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(\frac{\frac{90}{angle}}{b + a} \cdot \frac{\left(\left(t\_1 - \mathsf{fma}\left(b, t\_0, \left|t\_1 - b \cdot t\_0\right|\right)\right) \cdot y-scale\right) \cdot x-scale}{\left(b - a\right) \cdot \pi}\right)}{\pi}\\
\end{array}
if y-scale < 2.4999999999999998e-40Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
Taylor expanded in b around inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites39.2%
if 2.4999999999999998e-40 < y-scale Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
Applied rewrites14.7%
Applied rewrites24.7%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (/ angle 180.0) PI))
(t_1 (cos t_0))
(t_2 (/ b (* x-scale x-scale)))
(t_3 (sin t_0))
(t_4
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_3) t_1) x-scale)
y-scale))
(t_5
(/ (/ (+ (pow (* a t_3) 2.0) (pow (* b t_1) 2.0)) x-scale) x-scale))
(t_6
(/ (/ (+ (pow (* a t_1) 2.0) (pow (* b t_3) 2.0)) y-scale) y-scale)))
(if (<=
(/ (- (- t_6 t_5) (sqrt (+ (pow (- t_5 t_6) 2.0) (pow t_4 2.0)))) t_4)
2e+103)
(*
180.0
(/
(atan
(*
(/ 90.0 angle)
(/
(*
(*
(-
(/ (* a a) (* y-scale y-scale))
(fma b t_2 (fabs (- (* a (/ a (* y-scale y-scale))) (* b t_2)))))
y-scale)
x-scale)
(* (* (+ b a) (- b a)) PI))))
PI))
(*
180.0
(/
(atan
(*
-90.0
(/
(*
x-scale
(*
y-scale
(+ (sqrt (/ 1.0 (pow x-scale 4.0))) (/ 1.0 (pow x-scale 2.0)))))
(* angle PI))))
PI)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (angle / 180.0) * ((double) M_PI);
double t_1 = cos(t_0);
double t_2 = b / (x_45_scale * x_45_scale);
double t_3 = sin(t_0);
double t_4 = ((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_3) * t_1) / x_45_scale) / y_45_scale;
double t_5 = ((pow((a * t_3), 2.0) + pow((b * t_1), 2.0)) / x_45_scale) / x_45_scale;
double t_6 = ((pow((a * t_1), 2.0) + pow((b * t_3), 2.0)) / y_45_scale) / y_45_scale;
double tmp;
if ((((t_6 - t_5) - sqrt((pow((t_5 - t_6), 2.0) + pow(t_4, 2.0)))) / t_4) <= 2e+103) {
tmp = 180.0 * (atan(((90.0 / angle) * ((((((a * a) / (y_45_scale * y_45_scale)) - fma(b, t_2, fabs(((a * (a / (y_45_scale * y_45_scale))) - (b * t_2))))) * y_45_scale) * x_45_scale) / (((b + a) * (b - a)) * ((double) M_PI))))) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((-90.0 * ((x_45_scale * (y_45_scale * (sqrt((1.0 / pow(x_45_scale, 4.0))) + (1.0 / pow(x_45_scale, 2.0))))) / (angle * ((double) M_PI))))) / ((double) M_PI));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(angle / 180.0) * pi) t_1 = cos(t_0) t_2 = Float64(b / Float64(x_45_scale * x_45_scale)) t_3 = sin(t_0) t_4 = Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_3) * t_1) / x_45_scale) / y_45_scale) t_5 = Float64(Float64(Float64((Float64(a * t_3) ^ 2.0) + (Float64(b * t_1) ^ 2.0)) / x_45_scale) / x_45_scale) t_6 = Float64(Float64(Float64((Float64(a * t_1) ^ 2.0) + (Float64(b * t_3) ^ 2.0)) / y_45_scale) / y_45_scale) tmp = 0.0 if (Float64(Float64(Float64(t_6 - t_5) - sqrt(Float64((Float64(t_5 - t_6) ^ 2.0) + (t_4 ^ 2.0)))) / t_4) <= 2e+103) tmp = Float64(180.0 * Float64(atan(Float64(Float64(90.0 / angle) * Float64(Float64(Float64(Float64(Float64(Float64(a * a) / Float64(y_45_scale * y_45_scale)) - fma(b, t_2, abs(Float64(Float64(a * Float64(a / Float64(y_45_scale * y_45_scale))) - Float64(b * t_2))))) * y_45_scale) * x_45_scale) / Float64(Float64(Float64(b + a) * Float64(b - a)) * pi)))) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(-90.0 * Float64(Float64(x_45_scale * Float64(y_45_scale * Float64(sqrt(Float64(1.0 / (x_45_scale ^ 4.0))) + Float64(1.0 / (x_45_scale ^ 2.0))))) / Float64(angle * pi)))) / pi)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$1 = N[Cos[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Sin[t$95$0], $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$3), $MachinePrecision] * t$95$1), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$5 = N[(N[(N[(N[Power[N[(a * t$95$3), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$1), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, Block[{t$95$6 = N[(N[(N[(N[Power[N[(a * t$95$1), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$3), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, If[LessEqual[N[(N[(N[(t$95$6 - t$95$5), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(t$95$5 - t$95$6), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[t$95$4, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$4), $MachinePrecision], 2e+103], N[(180.0 * N[(N[ArcTan[N[(N[(90.0 / angle), $MachinePrecision] * N[(N[(N[(N[(N[(N[(a * a), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] - N[(b * t$95$2 + N[Abs[N[(N[(a * N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(b * t$95$2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] / N[(N[(N[(b + a), $MachinePrecision] * N[(b - a), $MachinePrecision]), $MachinePrecision] * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(-90.0 * N[(N[(x$45$scale * N[(y$45$scale * N[(N[Sqrt[N[(1.0 / N[Power[x$45$scale, 4.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(angle * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]]]]]]
\begin{array}{l}
t_0 := \frac{angle}{180} \cdot \pi\\
t_1 := \cos t\_0\\
t_2 := \frac{b}{x-scale \cdot x-scale}\\
t_3 := \sin t\_0\\
t_4 := \frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_3\right) \cdot t\_1}{x-scale}}{y-scale}\\
t_5 := \frac{\frac{{\left(a \cdot t\_3\right)}^{2} + {\left(b \cdot t\_1\right)}^{2}}{x-scale}}{x-scale}\\
t_6 := \frac{\frac{{\left(a \cdot t\_1\right)}^{2} + {\left(b \cdot t\_3\right)}^{2}}{y-scale}}{y-scale}\\
\mathbf{if}\;\frac{\left(t\_6 - t\_5\right) - \sqrt{{\left(t\_5 - t\_6\right)}^{2} + {t\_4}^{2}}}{t\_4} \leq 2 \cdot 10^{+103}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(\frac{90}{angle} \cdot \frac{\left(\left(\frac{a \cdot a}{y-scale \cdot y-scale} - \mathsf{fma}\left(b, t\_2, \left|a \cdot \frac{a}{y-scale \cdot y-scale} - b \cdot t\_2\right|\right)\right) \cdot y-scale\right) \cdot x-scale}{\left(\left(b + a\right) \cdot \left(b - a\right)\right) \cdot \pi}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(-90 \cdot \frac{x-scale \cdot \left(y-scale \cdot \left(\sqrt{\frac{1}{{x-scale}^{4}}} + \frac{1}{{x-scale}^{2}}\right)\right)}{angle \cdot \pi}\right)}{\pi}\\
\end{array}
if (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) < 2e103Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
Applied rewrites14.7%
Applied rewrites16.1%
if 2e103 < (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
Taylor expanded in b around inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites39.2%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (/ angle 180.0) PI))
(t_1 (cos t_0))
(t_2 (/ b (* x-scale x-scale)))
(t_3 (sin t_0))
(t_4
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_3) t_1) x-scale)
y-scale))
(t_5
(/ (/ (+ (pow (* a t_3) 2.0) (pow (* b t_1) 2.0)) x-scale) x-scale))
(t_6
(/ (/ (+ (pow (* a t_1) 2.0) (pow (* b t_3) 2.0)) y-scale) y-scale))
(t_7 (* a (/ a (* y-scale y-scale)))))
(if (<=
(/ (- (- t_6 t_5) (sqrt (+ (pow (- t_5 t_6) 2.0) (pow t_4 2.0)))) t_4)
2e+103)
(*
(/
(atan
(/
(*
(* (* (- t_7 (fma b t_2 (fabs (- t_7 (* b t_2))))) y-scale) x-scale)
90.0)
(* (* PI angle) (* (- b a) (+ b a)))))
PI)
180.0)
(*
180.0
(/
(atan
(*
-90.0
(/
(*
x-scale
(*
y-scale
(+ (sqrt (/ 1.0 (pow x-scale 4.0))) (/ 1.0 (pow x-scale 2.0)))))
(* angle PI))))
PI)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (angle / 180.0) * ((double) M_PI);
double t_1 = cos(t_0);
double t_2 = b / (x_45_scale * x_45_scale);
double t_3 = sin(t_0);
double t_4 = ((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_3) * t_1) / x_45_scale) / y_45_scale;
double t_5 = ((pow((a * t_3), 2.0) + pow((b * t_1), 2.0)) / x_45_scale) / x_45_scale;
double t_6 = ((pow((a * t_1), 2.0) + pow((b * t_3), 2.0)) / y_45_scale) / y_45_scale;
double t_7 = a * (a / (y_45_scale * y_45_scale));
double tmp;
if ((((t_6 - t_5) - sqrt((pow((t_5 - t_6), 2.0) + pow(t_4, 2.0)))) / t_4) <= 2e+103) {
tmp = (atan((((((t_7 - fma(b, t_2, fabs((t_7 - (b * t_2))))) * y_45_scale) * x_45_scale) * 90.0) / ((((double) M_PI) * angle) * ((b - a) * (b + a))))) / ((double) M_PI)) * 180.0;
} else {
tmp = 180.0 * (atan((-90.0 * ((x_45_scale * (y_45_scale * (sqrt((1.0 / pow(x_45_scale, 4.0))) + (1.0 / pow(x_45_scale, 2.0))))) / (angle * ((double) M_PI))))) / ((double) M_PI));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(angle / 180.0) * pi) t_1 = cos(t_0) t_2 = Float64(b / Float64(x_45_scale * x_45_scale)) t_3 = sin(t_0) t_4 = Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_3) * t_1) / x_45_scale) / y_45_scale) t_5 = Float64(Float64(Float64((Float64(a * t_3) ^ 2.0) + (Float64(b * t_1) ^ 2.0)) / x_45_scale) / x_45_scale) t_6 = Float64(Float64(Float64((Float64(a * t_1) ^ 2.0) + (Float64(b * t_3) ^ 2.0)) / y_45_scale) / y_45_scale) t_7 = Float64(a * Float64(a / Float64(y_45_scale * y_45_scale))) tmp = 0.0 if (Float64(Float64(Float64(t_6 - t_5) - sqrt(Float64((Float64(t_5 - t_6) ^ 2.0) + (t_4 ^ 2.0)))) / t_4) <= 2e+103) tmp = Float64(Float64(atan(Float64(Float64(Float64(Float64(Float64(t_7 - fma(b, t_2, abs(Float64(t_7 - Float64(b * t_2))))) * y_45_scale) * x_45_scale) * 90.0) / Float64(Float64(pi * angle) * Float64(Float64(b - a) * Float64(b + a))))) / pi) * 180.0); else tmp = Float64(180.0 * Float64(atan(Float64(-90.0 * Float64(Float64(x_45_scale * Float64(y_45_scale * Float64(sqrt(Float64(1.0 / (x_45_scale ^ 4.0))) + Float64(1.0 / (x_45_scale ^ 2.0))))) / Float64(angle * pi)))) / pi)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$1 = N[Cos[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Sin[t$95$0], $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$3), $MachinePrecision] * t$95$1), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$5 = N[(N[(N[(N[Power[N[(a * t$95$3), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$1), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, Block[{t$95$6 = N[(N[(N[(N[Power[N[(a * t$95$1), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$3), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$7 = N[(a * N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[(N[(t$95$6 - t$95$5), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(t$95$5 - t$95$6), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[t$95$4, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$4), $MachinePrecision], 2e+103], N[(N[(N[ArcTan[N[(N[(N[(N[(N[(t$95$7 - N[(b * t$95$2 + N[Abs[N[(t$95$7 - N[(b * t$95$2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * 90.0), $MachinePrecision] / N[(N[(Pi * angle), $MachinePrecision] * N[(N[(b - a), $MachinePrecision] * N[(b + a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision] * 180.0), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(-90.0 * N[(N[(x$45$scale * N[(y$45$scale * N[(N[Sqrt[N[(1.0 / N[Power[x$45$scale, 4.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(angle * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]]]]]]]
\begin{array}{l}
t_0 := \frac{angle}{180} \cdot \pi\\
t_1 := \cos t\_0\\
t_2 := \frac{b}{x-scale \cdot x-scale}\\
t_3 := \sin t\_0\\
t_4 := \frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_3\right) \cdot t\_1}{x-scale}}{y-scale}\\
t_5 := \frac{\frac{{\left(a \cdot t\_3\right)}^{2} + {\left(b \cdot t\_1\right)}^{2}}{x-scale}}{x-scale}\\
t_6 := \frac{\frac{{\left(a \cdot t\_1\right)}^{2} + {\left(b \cdot t\_3\right)}^{2}}{y-scale}}{y-scale}\\
t_7 := a \cdot \frac{a}{y-scale \cdot y-scale}\\
\mathbf{if}\;\frac{\left(t\_6 - t\_5\right) - \sqrt{{\left(t\_5 - t\_6\right)}^{2} + {t\_4}^{2}}}{t\_4} \leq 2 \cdot 10^{+103}:\\
\;\;\;\;\frac{\tan^{-1} \left(\frac{\left(\left(\left(t\_7 - \mathsf{fma}\left(b, t\_2, \left|t\_7 - b \cdot t\_2\right|\right)\right) \cdot y-scale\right) \cdot x-scale\right) \cdot 90}{\left(\pi \cdot angle\right) \cdot \left(\left(b - a\right) \cdot \left(b + a\right)\right)}\right)}{\pi} \cdot 180\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(-90 \cdot \frac{x-scale \cdot \left(y-scale \cdot \left(\sqrt{\frac{1}{{x-scale}^{4}}} + \frac{1}{{x-scale}^{2}}\right)\right)}{angle \cdot \pi}\right)}{\pi}\\
\end{array}
if (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) < 2e103Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
Applied rewrites14.7%
Applied rewrites15.8%
if 2e103 < (/.f64 (-.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale)) (sqrt.f64 (+.f64 (pow.f64 (-.f64 (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) x-scale) x-scale) (/.f64 (/.f64 (+.f64 (pow.f64 (*.f64 a (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64)) (pow.f64 (*.f64 b (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) #s(literal 2 binary64))) y-scale) y-scale)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale) #s(literal 2 binary64))))) (/.f64 (/.f64 (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) (cos.f64 (*.f64 (/.f64 angle #s(literal 180 binary64)) (PI.f64)))) x-scale) y-scale)) Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
Taylor expanded in b around inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites39.2%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(*
180.0
(/
(atan
(*
-90.0
(/
(*
x-scale
(*
y-scale
(+ (sqrt (/ 1.0 (pow x-scale 4.0))) (/ 1.0 (pow x-scale 2.0)))))
(* angle PI))))
PI)))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return 180.0 * (atan((-90.0 * ((x_45_scale * (y_45_scale * (sqrt((1.0 / pow(x_45_scale, 4.0))) + (1.0 / pow(x_45_scale, 2.0))))) / (angle * ((double) M_PI))))) / ((double) M_PI));
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return 180.0 * (Math.atan((-90.0 * ((x_45_scale * (y_45_scale * (Math.sqrt((1.0 / Math.pow(x_45_scale, 4.0))) + (1.0 / Math.pow(x_45_scale, 2.0))))) / (angle * Math.PI)))) / Math.PI);
}
def code(a, b, angle, x_45_scale, y_45_scale): return 180.0 * (math.atan((-90.0 * ((x_45_scale * (y_45_scale * (math.sqrt((1.0 / math.pow(x_45_scale, 4.0))) + (1.0 / math.pow(x_45_scale, 2.0))))) / (angle * math.pi)))) / math.pi)
function code(a, b, angle, x_45_scale, y_45_scale) return Float64(180.0 * Float64(atan(Float64(-90.0 * Float64(Float64(x_45_scale * Float64(y_45_scale * Float64(sqrt(Float64(1.0 / (x_45_scale ^ 4.0))) + Float64(1.0 / (x_45_scale ^ 2.0))))) / Float64(angle * pi)))) / pi)) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) tmp = 180.0 * (atan((-90.0 * ((x_45_scale * (y_45_scale * (sqrt((1.0 / (x_45_scale ^ 4.0))) + (1.0 / (x_45_scale ^ 2.0))))) / (angle * pi)))) / pi); end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := N[(180.0 * N[(N[ArcTan[N[(-90.0 * N[(N[(x$45$scale * N[(y$45$scale * N[(N[Sqrt[N[(1.0 / N[Power[x$45$scale, 4.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(angle * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]
180 \cdot \frac{\tan^{-1} \left(-90 \cdot \frac{x-scale \cdot \left(y-scale \cdot \left(\sqrt{\frac{1}{{x-scale}^{4}}} + \frac{1}{{x-scale}^{2}}\right)\right)}{angle \cdot \pi}\right)}{\pi}
Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
Taylor expanded in b around inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites39.2%
(FPCore (a b angle x-scale y-scale) :precision binary64 (* 180.0 (/ (atan (* (/ 90.0 angle) (* -1.0 (/ y-scale (* x-scale PI))))) PI)))
double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return 180.0 * (atan(((90.0 / angle) * (-1.0 * (y_45_scale / (x_45_scale * ((double) M_PI)))))) / ((double) M_PI));
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return 180.0 * (Math.atan(((90.0 / angle) * (-1.0 * (y_45_scale / (x_45_scale * Math.PI))))) / Math.PI);
}
def code(a, b, angle, x_45_scale, y_45_scale): return 180.0 * (math.atan(((90.0 / angle) * (-1.0 * (y_45_scale / (x_45_scale * math.pi))))) / math.pi)
function code(a, b, angle, x_45_scale, y_45_scale) return Float64(180.0 * Float64(atan(Float64(Float64(90.0 / angle) * Float64(-1.0 * Float64(y_45_scale / Float64(x_45_scale * pi))))) / pi)) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) tmp = 180.0 * (atan(((90.0 / angle) * (-1.0 * (y_45_scale / (x_45_scale * pi))))) / pi); end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := N[(180.0 * N[(N[ArcTan[N[(N[(90.0 / angle), $MachinePrecision] * N[(-1.0 * N[(y$45$scale / N[(x$45$scale * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]
180 \cdot \frac{\tan^{-1} \left(\frac{90}{angle} \cdot \left(-1 \cdot \frac{y-scale}{x-scale \cdot \pi}\right)\right)}{\pi}
Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
Applied rewrites14.7%
Taylor expanded in b around inf
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-PI.f6436.3%
Applied rewrites36.3%
(FPCore (a b angle x-scale y-scale) :precision binary64 (if (<= x-scale 1.28e+113) (* 180.0 (/ (atan (* -90.0 (/ y-scale (* angle (* x-scale PI))))) PI)) (* 180.0 (/ (atan 0.0) PI))))
double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double tmp;
if (x_45_scale <= 1.28e+113) {
tmp = 180.0 * (atan((-90.0 * (y_45_scale / (angle * (x_45_scale * ((double) M_PI)))))) / ((double) M_PI));
} else {
tmp = 180.0 * (atan(0.0) / ((double) M_PI));
}
return tmp;
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double tmp;
if (x_45_scale <= 1.28e+113) {
tmp = 180.0 * (Math.atan((-90.0 * (y_45_scale / (angle * (x_45_scale * Math.PI))))) / Math.PI);
} else {
tmp = 180.0 * (Math.atan(0.0) / Math.PI);
}
return tmp;
}
def code(a, b, angle, x_45_scale, y_45_scale): tmp = 0 if x_45_scale <= 1.28e+113: tmp = 180.0 * (math.atan((-90.0 * (y_45_scale / (angle * (x_45_scale * math.pi))))) / math.pi) else: tmp = 180.0 * (math.atan(0.0) / math.pi) return tmp
function code(a, b, angle, x_45_scale, y_45_scale) tmp = 0.0 if (x_45_scale <= 1.28e+113) tmp = Float64(180.0 * Float64(atan(Float64(-90.0 * Float64(y_45_scale / Float64(angle * Float64(x_45_scale * pi))))) / pi)); else tmp = Float64(180.0 * Float64(atan(0.0) / pi)); end return tmp end
function tmp_2 = code(a, b, angle, x_45_scale, y_45_scale) tmp = 0.0; if (x_45_scale <= 1.28e+113) tmp = 180.0 * (atan((-90.0 * (y_45_scale / (angle * (x_45_scale * pi))))) / pi); else tmp = 180.0 * (atan(0.0) / pi); end tmp_2 = tmp; end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := If[LessEqual[x$45$scale, 1.28e+113], N[(180.0 * N[(N[ArcTan[N[(-90.0 * N[(y$45$scale / N[(angle * N[(x$45$scale * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[0.0], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;x-scale \leq 1.28 \cdot 10^{+113}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(-90 \cdot \frac{y-scale}{angle \cdot \left(x-scale \cdot \pi\right)}\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} 0}{\pi}\\
\end{array}
if x-scale < 1.2799999999999999e113Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
lift--.f64N/A
lift-/.f64N/A
lift-+.f64N/A
lift-/.f64N/A
add-to-fractionN/A
frac-subN/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f64N/A
Applied rewrites4.1%
Taylor expanded in b around inf
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6434.3%
Applied rewrites34.3%
if 1.2799999999999999e113 < x-scale Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
Taylor expanded in a around inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites7.1%
Taylor expanded in y-scale around 0
Applied rewrites18.1%
(FPCore (a b angle x-scale y-scale) :precision binary64 (if (<= y-scale 1.45e+15) (* 180.0 (/ (atan 0.0) PI)) (* 180.0 (/ (atan (* -90.0 (/ x-scale (* angle (* y-scale PI))))) PI))))
double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double tmp;
if (y_45_scale <= 1.45e+15) {
tmp = 180.0 * (atan(0.0) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((-90.0 * (x_45_scale / (angle * (y_45_scale * ((double) M_PI)))))) / ((double) M_PI));
}
return tmp;
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double tmp;
if (y_45_scale <= 1.45e+15) {
tmp = 180.0 * (Math.atan(0.0) / Math.PI);
} else {
tmp = 180.0 * (Math.atan((-90.0 * (x_45_scale / (angle * (y_45_scale * Math.PI))))) / Math.PI);
}
return tmp;
}
def code(a, b, angle, x_45_scale, y_45_scale): tmp = 0 if y_45_scale <= 1.45e+15: tmp = 180.0 * (math.atan(0.0) / math.pi) else: tmp = 180.0 * (math.atan((-90.0 * (x_45_scale / (angle * (y_45_scale * math.pi))))) / math.pi) return tmp
function code(a, b, angle, x_45_scale, y_45_scale) tmp = 0.0 if (y_45_scale <= 1.45e+15) tmp = Float64(180.0 * Float64(atan(0.0) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(-90.0 * Float64(x_45_scale / Float64(angle * Float64(y_45_scale * pi))))) / pi)); end return tmp end
function tmp_2 = code(a, b, angle, x_45_scale, y_45_scale) tmp = 0.0; if (y_45_scale <= 1.45e+15) tmp = 180.0 * (atan(0.0) / pi); else tmp = 180.0 * (atan((-90.0 * (x_45_scale / (angle * (y_45_scale * pi))))) / pi); end tmp_2 = tmp; end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := If[LessEqual[y$45$scale, 1.45e+15], N[(180.0 * N[(N[ArcTan[0.0], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(-90.0 * N[(x$45$scale / N[(angle * N[(y$45$scale * Pi), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\mathbf{if}\;y-scale \leq 1.45 \cdot 10^{+15}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} 0}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(-90 \cdot \frac{x-scale}{angle \cdot \left(y-scale \cdot \pi\right)}\right)}{\pi}\\
\end{array}
if y-scale < 1.45e15Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
Taylor expanded in a around inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites7.1%
Taylor expanded in y-scale around 0
Applied rewrites18.1%
if 1.45e15 < y-scale Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
lift--.f64N/A
lift-/.f64N/A
lift-+.f64N/A
lift-/.f64N/A
add-to-fractionN/A
frac-subN/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f64N/A
Applied rewrites4.1%
Taylor expanded in a around inf
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f6411.6%
Applied rewrites11.6%
(FPCore (a b angle x-scale y-scale) :precision binary64 (* 180.0 (/ (atan 0.0) PI)))
double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return 180.0 * (atan(0.0) / ((double) M_PI));
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return 180.0 * (Math.atan(0.0) / Math.PI);
}
def code(a, b, angle, x_45_scale, y_45_scale): return 180.0 * (math.atan(0.0) / math.pi)
function code(a, b, angle, x_45_scale, y_45_scale) return Float64(180.0 * Float64(atan(0.0) / pi)) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) tmp = 180.0 * (atan(0.0) / pi); end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := N[(180.0 * N[(N[ArcTan[0.0], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]
180 \cdot \frac{\tan^{-1} 0}{\pi}
Initial program 13.7%
Taylor expanded in angle around 0
Applied rewrites12.0%
Taylor expanded in a around inf
lower-*.f64N/A
lower-/.f64N/A
Applied rewrites7.1%
Taylor expanded in y-scale around 0
Applied rewrites18.1%
herbie shell --seed 2025189
(FPCore (a b angle x-scale y-scale)
:name "raw-angle from scale-rotated-ellipse"
:precision binary64
(* 180.0 (/ (atan (/ (- (- (/ (/ (+ (pow (* a (cos (* (/ angle 180.0) PI))) 2.0) (pow (* b (sin (* (/ angle 180.0) PI))) 2.0)) y-scale) y-scale) (/ (/ (+ (pow (* a (sin (* (/ angle 180.0) PI))) 2.0) (pow (* b (cos (* (/ angle 180.0) PI))) 2.0)) x-scale) x-scale)) (sqrt (+ (pow (- (/ (/ (+ (pow (* a (sin (* (/ angle 180.0) PI))) 2.0) (pow (* b (cos (* (/ angle 180.0) PI))) 2.0)) x-scale) x-scale) (/ (/ (+ (pow (* a (cos (* (/ angle 180.0) PI))) 2.0) (pow (* b (sin (* (/ angle 180.0) PI))) 2.0)) y-scale) y-scale)) 2.0) (pow (/ (/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) (sin (* (/ angle 180.0) PI))) (cos (* (/ angle 180.0) PI))) x-scale) y-scale) 2.0)))) (/ (/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) (sin (* (/ angle 180.0) PI))) (cos (* (/ angle 180.0) PI))) x-scale) y-scale))) PI)))