(FPCore (a b angle x-scale y-scale)
: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)))(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* PI (/ angle 180.0)))
(t_1 (* PI (* 0.005555555555555556 angle)))
(t_2 (* 0.005555555555555556 (* angle PI)))
(t_3 (cbrt (sin t_1)))
(t_4 (* 2.0 (- (* b b) (* a a))))
(t_5 (sin t_0))
(t_6 (sin t_2))
(t_7 (pow t_6 4.0))
(t_8 (pow t_6 2.0))
(t_9 (cos t_2))
(t_10 (pow t_9 2.0))
(t_11 (/ (* t_8 t_10) (* (pow x-scale 2.0) (pow y-scale 2.0))))
(t_12 (pow t_9 4.0))
(t_13
(/
(fma
(pow a 2.0)
t_8
(fma
t_10
(pow b 2.0)
(sqrt
(fma
2.0
(* t_10 (* (pow a 2.0) (* t_8 (pow b 2.0))))
(fma t_12 (pow b 4.0) (* (pow a 4.0) t_7))))))
(pow x-scale 2.0)))
(t_14 (cbrt (cos t_1))))
(if (<= b 8e-217)
(*
180.0
(/
(atan
(*
(/
t_13
(/
(*
(*
t_3
(*
(cbrt
(expm1 (log1p (sin (* angle (* 0.005555555555555556 PI))))))
t_3))
(* (* t_14 (* t_14 t_14)) t_4))
y-scale))
(- x-scale)))
PI))
(if (<= b 2.8e+53)
(* 180.0 (/ (atan (* (/ t_13 (/ (* t_4 t_5) y-scale)) (- x-scale))) PI))
(*
180.0
(/
(atan
(*
x-scale
(/
(*
(pow b 2.0)
(-
(/ t_8 (pow y-scale 2.0))
(+
(sqrt
(-
(+
(/ t_12 (pow x-scale 4.0))
(fma 3.0 t_11 (/ t_7 (pow y-scale 4.0))))
t_11))
(/ t_10 (pow x-scale 2.0)))))
(/ (* t_5 (* t_4 (cos t_0))) y-scale))))
PI))))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return 180.0 * (atan(((((((pow((a * cos(((angle / 180.0) * ((double) M_PI)))), 2.0) + pow((b * sin(((angle / 180.0) * ((double) M_PI)))), 2.0)) / y_45_scale) / y_45_scale) - (((pow((a * sin(((angle / 180.0) * ((double) M_PI)))), 2.0) + pow((b * cos(((angle / 180.0) * ((double) M_PI)))), 2.0)) / x_45_scale) / x_45_scale)) - sqrt((pow(((((pow((a * sin(((angle / 180.0) * ((double) M_PI)))), 2.0) + pow((b * cos(((angle / 180.0) * ((double) M_PI)))), 2.0)) / x_45_scale) / x_45_scale) - (((pow((a * cos(((angle / 180.0) * ((double) M_PI)))), 2.0) + pow((b * sin(((angle / 180.0) * ((double) M_PI)))), 2.0)) / y_45_scale) / y_45_scale)), 2.0) + pow((((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * sin(((angle / 180.0) * ((double) M_PI)))) * cos(((angle / 180.0) * ((double) M_PI)))) / x_45_scale) / y_45_scale), 2.0)))) / (((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * sin(((angle / 180.0) * ((double) M_PI)))) * cos(((angle / 180.0) * ((double) M_PI)))) / x_45_scale) / y_45_scale))) / ((double) M_PI));
}
double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = ((double) M_PI) * (angle / 180.0);
double t_1 = ((double) M_PI) * (0.005555555555555556 * angle);
double t_2 = 0.005555555555555556 * (angle * ((double) M_PI));
double t_3 = cbrt(sin(t_1));
double t_4 = 2.0 * ((b * b) - (a * a));
double t_5 = sin(t_0);
double t_6 = sin(t_2);
double t_7 = pow(t_6, 4.0);
double t_8 = pow(t_6, 2.0);
double t_9 = cos(t_2);
double t_10 = pow(t_9, 2.0);
double t_11 = (t_8 * t_10) / (pow(x_45_scale, 2.0) * pow(y_45_scale, 2.0));
double t_12 = pow(t_9, 4.0);
double t_13 = fma(pow(a, 2.0), t_8, fma(t_10, pow(b, 2.0), sqrt(fma(2.0, (t_10 * (pow(a, 2.0) * (t_8 * pow(b, 2.0)))), fma(t_12, pow(b, 4.0), (pow(a, 4.0) * t_7)))))) / pow(x_45_scale, 2.0);
double t_14 = cbrt(cos(t_1));
double tmp;
if (b <= 8e-217) {
tmp = 180.0 * (atan(((t_13 / (((t_3 * (cbrt(expm1(log1p(sin((angle * (0.005555555555555556 * ((double) M_PI))))))) * t_3)) * ((t_14 * (t_14 * t_14)) * t_4)) / y_45_scale)) * -x_45_scale)) / ((double) M_PI));
} else if (b <= 2.8e+53) {
tmp = 180.0 * (atan(((t_13 / ((t_4 * t_5) / y_45_scale)) * -x_45_scale)) / ((double) M_PI));
} else {
tmp = 180.0 * (atan((x_45_scale * ((pow(b, 2.0) * ((t_8 / pow(y_45_scale, 2.0)) - (sqrt((((t_12 / pow(x_45_scale, 4.0)) + fma(3.0, t_11, (t_7 / pow(y_45_scale, 4.0)))) - t_11)) + (t_10 / pow(x_45_scale, 2.0))))) / ((t_5 * (t_4 * cos(t_0))) / y_45_scale)))) / ((double) M_PI));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) return Float64(180.0 * Float64(atan(Float64(Float64(Float64(Float64(Float64(Float64((Float64(a * cos(Float64(Float64(angle / 180.0) * pi))) ^ 2.0) + (Float64(b * sin(Float64(Float64(angle / 180.0) * pi))) ^ 2.0)) / y_45_scale) / y_45_scale) - Float64(Float64(Float64((Float64(a * sin(Float64(Float64(angle / 180.0) * pi))) ^ 2.0) + (Float64(b * cos(Float64(Float64(angle / 180.0) * pi))) ^ 2.0)) / x_45_scale) / x_45_scale)) - sqrt(Float64((Float64(Float64(Float64(Float64((Float64(a * sin(Float64(Float64(angle / 180.0) * pi))) ^ 2.0) + (Float64(b * cos(Float64(Float64(angle / 180.0) * pi))) ^ 2.0)) / x_45_scale) / x_45_scale) - Float64(Float64(Float64((Float64(a * cos(Float64(Float64(angle / 180.0) * pi))) ^ 2.0) + (Float64(b * sin(Float64(Float64(angle / 180.0) * pi))) ^ 2.0)) / y_45_scale) / y_45_scale)) ^ 2.0) + (Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * sin(Float64(Float64(angle / 180.0) * pi))) * cos(Float64(Float64(angle / 180.0) * pi))) / x_45_scale) / y_45_scale) ^ 2.0)))) / Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * sin(Float64(Float64(angle / 180.0) * pi))) * cos(Float64(Float64(angle / 180.0) * pi))) / x_45_scale) / y_45_scale))) / pi)) end
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(pi * Float64(angle / 180.0)) t_1 = Float64(pi * Float64(0.005555555555555556 * angle)) t_2 = Float64(0.005555555555555556 * Float64(angle * pi)) t_3 = cbrt(sin(t_1)) t_4 = Float64(2.0 * Float64(Float64(b * b) - Float64(a * a))) t_5 = sin(t_0) t_6 = sin(t_2) t_7 = t_6 ^ 4.0 t_8 = t_6 ^ 2.0 t_9 = cos(t_2) t_10 = t_9 ^ 2.0 t_11 = Float64(Float64(t_8 * t_10) / Float64((x_45_scale ^ 2.0) * (y_45_scale ^ 2.0))) t_12 = t_9 ^ 4.0 t_13 = Float64(fma((a ^ 2.0), t_8, fma(t_10, (b ^ 2.0), sqrt(fma(2.0, Float64(t_10 * Float64((a ^ 2.0) * Float64(t_8 * (b ^ 2.0)))), fma(t_12, (b ^ 4.0), Float64((a ^ 4.0) * t_7)))))) / (x_45_scale ^ 2.0)) t_14 = cbrt(cos(t_1)) tmp = 0.0 if (b <= 8e-217) tmp = Float64(180.0 * Float64(atan(Float64(Float64(t_13 / Float64(Float64(Float64(t_3 * Float64(cbrt(expm1(log1p(sin(Float64(angle * Float64(0.005555555555555556 * pi)))))) * t_3)) * Float64(Float64(t_14 * Float64(t_14 * t_14)) * t_4)) / y_45_scale)) * Float64(-x_45_scale))) / pi)); elseif (b <= 2.8e+53) tmp = Float64(180.0 * Float64(atan(Float64(Float64(t_13 / Float64(Float64(t_4 * t_5) / y_45_scale)) * Float64(-x_45_scale))) / pi)); else tmp = Float64(180.0 * Float64(atan(Float64(x_45_scale * Float64(Float64((b ^ 2.0) * Float64(Float64(t_8 / (y_45_scale ^ 2.0)) - Float64(sqrt(Float64(Float64(Float64(t_12 / (x_45_scale ^ 4.0)) + fma(3.0, t_11, Float64(t_7 / (y_45_scale ^ 4.0)))) - t_11)) + Float64(t_10 / (x_45_scale ^ 2.0))))) / Float64(Float64(t_5 * Float64(t_4 * cos(t_0))) / y_45_scale)))) / pi)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := N[(180.0 * N[(N[ArcTan[N[(N[(N[(N[(N[(N[(N[Power[N[(a * N[Cos[N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * N[Sin[N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision] - N[(N[(N[(N[Power[N[(a * N[Sin[N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * N[Cos[N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(N[(N[(N[(N[Power[N[(a * N[Sin[N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * N[Cos[N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision] - N[(N[(N[(N[Power[N[(a * N[Cos[N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * N[Sin[N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Sin[N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Cos[N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[(N[(N[(N[(2.0 * N[(N[Power[b, 2.0], $MachinePrecision] - N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Sin[N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Cos[N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(Pi * N[(angle / 180.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(Pi * N[(0.005555555555555556 * angle), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Power[N[Sin[t$95$1], $MachinePrecision], 1/3], $MachinePrecision]}, Block[{t$95$4 = N[(2.0 * N[(N[(b * b), $MachinePrecision] - N[(a * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[Sin[t$95$0], $MachinePrecision]}, Block[{t$95$6 = N[Sin[t$95$2], $MachinePrecision]}, Block[{t$95$7 = N[Power[t$95$6, 4.0], $MachinePrecision]}, Block[{t$95$8 = N[Power[t$95$6, 2.0], $MachinePrecision]}, Block[{t$95$9 = N[Cos[t$95$2], $MachinePrecision]}, Block[{t$95$10 = N[Power[t$95$9, 2.0], $MachinePrecision]}, Block[{t$95$11 = N[(N[(t$95$8 * t$95$10), $MachinePrecision] / N[(N[Power[x$45$scale, 2.0], $MachinePrecision] * N[Power[y$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$12 = N[Power[t$95$9, 4.0], $MachinePrecision]}, Block[{t$95$13 = N[(N[(N[Power[a, 2.0], $MachinePrecision] * t$95$8 + N[(t$95$10 * N[Power[b, 2.0], $MachinePrecision] + N[Sqrt[N[(2.0 * N[(t$95$10 * N[(N[Power[a, 2.0], $MachinePrecision] * N[(t$95$8 * N[Power[b, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(t$95$12 * N[Power[b, 4.0], $MachinePrecision] + N[(N[Power[a, 4.0], $MachinePrecision] * t$95$7), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$14 = N[Power[N[Cos[t$95$1], $MachinePrecision], 1/3], $MachinePrecision]}, If[LessEqual[b, 8e-217], N[(180.0 * N[(N[ArcTan[N[(N[(t$95$13 / N[(N[(N[(t$95$3 * N[(N[Power[N[(Exp[N[Log[1 + N[Sin[N[(angle * N[(0.005555555555555556 * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]], $MachinePrecision]] - 1), $MachinePrecision], 1/3], $MachinePrecision] * t$95$3), $MachinePrecision]), $MachinePrecision] * N[(N[(t$95$14 * N[(t$95$14 * t$95$14), $MachinePrecision]), $MachinePrecision] * t$95$4), $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision]), $MachinePrecision] * (-x$45$scale)), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 2.8e+53], N[(180.0 * N[(N[ArcTan[N[(N[(t$95$13 / N[(N[(t$95$4 * t$95$5), $MachinePrecision] / y$45$scale), $MachinePrecision]), $MachinePrecision] * (-x$45$scale)), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision], N[(180.0 * N[(N[ArcTan[N[(x$45$scale * N[(N[(N[Power[b, 2.0], $MachinePrecision] * N[(N[(t$95$8 / N[Power[y$45$scale, 2.0], $MachinePrecision]), $MachinePrecision] - N[(N[Sqrt[N[(N[(N[(t$95$12 / N[Power[x$45$scale, 4.0], $MachinePrecision]), $MachinePrecision] + N[(3.0 * t$95$11 + N[(t$95$7 / N[Power[y$45$scale, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$11), $MachinePrecision]], $MachinePrecision] + N[(t$95$10 / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(t$95$5 * N[(t$95$4 * N[Cos[t$95$0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / Pi), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]]]
180 \cdot \frac{\tan^{-1} \left(\frac{\left(\frac{\frac{{\left(a \cdot \cos \left(\frac{angle}{180} \cdot \pi\right)\right)}^{2} + {\left(b \cdot \sin \left(\frac{angle}{180} \cdot \pi\right)\right)}^{2}}{y-scale}}{y-scale} - \frac{\frac{{\left(a \cdot \sin \left(\frac{angle}{180} \cdot \pi\right)\right)}^{2} + {\left(b \cdot \cos \left(\frac{angle}{180} \cdot \pi\right)\right)}^{2}}{x-scale}}{x-scale}\right) - \sqrt{{\left(\frac{\frac{{\left(a \cdot \sin \left(\frac{angle}{180} \cdot \pi\right)\right)}^{2} + {\left(b \cdot \cos \left(\frac{angle}{180} \cdot \pi\right)\right)}^{2}}{x-scale}}{x-scale} - \frac{\frac{{\left(a \cdot \cos \left(\frac{angle}{180} \cdot \pi\right)\right)}^{2} + {\left(b \cdot \sin \left(\frac{angle}{180} \cdot \pi\right)\right)}^{2}}{y-scale}}{y-scale}\right)}^{2} + {\left(\frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot \sin \left(\frac{angle}{180} \cdot \pi\right)\right) \cdot \cos \left(\frac{angle}{180} \cdot \pi\right)}{x-scale}}{y-scale}\right)}^{2}}}{\frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot \sin \left(\frac{angle}{180} \cdot \pi\right)\right) \cdot \cos \left(\frac{angle}{180} \cdot \pi\right)}{x-scale}}{y-scale}}\right)}{\pi}
\begin{array}{l}
t_0 := \pi \cdot \frac{angle}{180}\\
t_1 := \pi \cdot \left(0.005555555555555556 \cdot angle\right)\\
t_2 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
t_3 := \sqrt[3]{\sin t_1}\\
t_4 := 2 \cdot \left(b \cdot b - a \cdot a\right)\\
t_5 := \sin t_0\\
t_6 := \sin t_2\\
t_7 := {t_6}^{4}\\
t_8 := {t_6}^{2}\\
t_9 := \cos t_2\\
t_10 := {t_9}^{2}\\
t_11 := \frac{t_8 \cdot t_10}{{x-scale}^{2} \cdot {y-scale}^{2}}\\
t_12 := {t_9}^{4}\\
t_13 := \frac{\mathsf{fma}\left({a}^{2}, t_8, \mathsf{fma}\left(t_10, {b}^{2}, \sqrt{\mathsf{fma}\left(2, t_10 \cdot \left({a}^{2} \cdot \left(t_8 \cdot {b}^{2}\right)\right), \mathsf{fma}\left(t_12, {b}^{4}, {a}^{4} \cdot t_7\right)\right)}\right)\right)}{{x-scale}^{2}}\\
t_14 := \sqrt[3]{\cos t_1}\\
\mathbf{if}\;b \leq 8 \cdot 10^{-217}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(\frac{t_13}{\frac{\left(t_3 \cdot \left(\sqrt[3]{\mathsf{expm1}\left(\mathsf{log1p}\left(\sin \left(angle \cdot \left(0.005555555555555556 \cdot \pi\right)\right)\right)\right)} \cdot t_3\right)\right) \cdot \left(\left(t_14 \cdot \left(t_14 \cdot t_14\right)\right) \cdot t_4\right)}{y-scale}} \cdot \left(-x-scale\right)\right)}{\pi}\\
\mathbf{elif}\;b \leq 2.8 \cdot 10^{+53}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(\frac{t_13}{\frac{t_4 \cdot t_5}{y-scale}} \cdot \left(-x-scale\right)\right)}{\pi}\\
\mathbf{else}:\\
\;\;\;\;180 \cdot \frac{\tan^{-1} \left(x-scale \cdot \frac{{b}^{2} \cdot \left(\frac{t_8}{{y-scale}^{2}} - \left(\sqrt{\left(\frac{t_12}{{x-scale}^{4}} + \mathsf{fma}\left(3, t_11, \frac{t_7}{{y-scale}^{4}}\right)\right) - t_11} + \frac{t_10}{{x-scale}^{2}}\right)\right)}{\frac{t_5 \cdot \left(t_4 \cdot \cos t_0\right)}{y-scale}}\right)}{\pi}\\
\end{array}



Bits error versus a



Bits error versus b



Bits error versus angle



Bits error versus x-scale



Bits error versus y-scale
if b < 8.00000000000000066e-217Initial program 55.4
Simplified53.2
Taylor expanded in x-scale around 0 51.3
Simplified51.3
Applied egg-rr51.4
Applied egg-rr51.3
Applied egg-rr51.4
if 8.00000000000000066e-217 < b < 2.8e53Initial program 50.8
Simplified48.4
Taylor expanded in x-scale around 0 44.4
Simplified44.4
Taylor expanded in angle around 0 44.3
if 2.8e53 < b Initial program 58.8
Simplified57.3
Taylor expanded in b around inf 59.2
Simplified59.2
Final simplification51.4
herbie shell --seed 2022160
(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)))