
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (/ angle 180.0) PI))
(t_1 (sin t_0))
(t_2 (cos t_0))
(t_3
(/ (/ (+ (pow (* a t_2) 2.0) (pow (* b t_1) 2.0)) y-scale) y-scale))
(t_4
(/ (/ (+ (pow (* a t_1) 2.0) (pow (* b t_2) 2.0)) x-scale) x-scale))
(t_5 (* (* b a) (* b (- a))))
(t_6 (/ (* 4.0 t_5) (pow (* x-scale y-scale) 2.0))))
(/
(-
(sqrt
(*
(* (* 2.0 t_6) t_5)
(+
(+ t_4 t_3)
(sqrt
(+
(pow (- t_4 t_3) 2.0)
(pow
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_1) t_2) x-scale)
y-scale)
2.0)))))))
t_6)))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 = sin(t_0);
double t_2 = cos(t_0);
double t_3 = ((pow((a * t_2), 2.0) + pow((b * t_1), 2.0)) / y_45_scale) / y_45_scale;
double t_4 = ((pow((a * t_1), 2.0) + pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale;
double t_5 = (b * a) * (b * -a);
double t_6 = (4.0 * t_5) / pow((x_45_scale * y_45_scale), 2.0);
return -sqrt((((2.0 * t_6) * t_5) * ((t_4 + t_3) + sqrt((pow((t_4 - t_3), 2.0) + pow((((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_1) * t_2) / x_45_scale) / y_45_scale), 2.0)))))) / t_6;
}
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.sin(t_0);
double t_2 = Math.cos(t_0);
double t_3 = ((Math.pow((a * t_2), 2.0) + Math.pow((b * t_1), 2.0)) / y_45_scale) / y_45_scale;
double t_4 = ((Math.pow((a * t_1), 2.0) + Math.pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale;
double t_5 = (b * a) * (b * -a);
double t_6 = (4.0 * t_5) / Math.pow((x_45_scale * y_45_scale), 2.0);
return -Math.sqrt((((2.0 * t_6) * t_5) * ((t_4 + t_3) + Math.sqrt((Math.pow((t_4 - t_3), 2.0) + Math.pow((((((2.0 * (Math.pow(b, 2.0) - Math.pow(a, 2.0))) * t_1) * t_2) / x_45_scale) / y_45_scale), 2.0)))))) / t_6;
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = (angle / 180.0) * math.pi t_1 = math.sin(t_0) t_2 = math.cos(t_0) t_3 = ((math.pow((a * t_2), 2.0) + math.pow((b * t_1), 2.0)) / y_45_scale) / y_45_scale t_4 = ((math.pow((a * t_1), 2.0) + math.pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale t_5 = (b * a) * (b * -a) t_6 = (4.0 * t_5) / math.pow((x_45_scale * y_45_scale), 2.0) return -math.sqrt((((2.0 * t_6) * t_5) * ((t_4 + t_3) + math.sqrt((math.pow((t_4 - t_3), 2.0) + math.pow((((((2.0 * (math.pow(b, 2.0) - math.pow(a, 2.0))) * t_1) * t_2) / x_45_scale) / y_45_scale), 2.0)))))) / t_6
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(angle / 180.0) * pi) t_1 = sin(t_0) t_2 = cos(t_0) t_3 = Float64(Float64(Float64((Float64(a * t_2) ^ 2.0) + (Float64(b * t_1) ^ 2.0)) / y_45_scale) / y_45_scale) t_4 = Float64(Float64(Float64((Float64(a * t_1) ^ 2.0) + (Float64(b * t_2) ^ 2.0)) / x_45_scale) / x_45_scale) t_5 = Float64(Float64(b * a) * Float64(b * Float64(-a))) t_6 = Float64(Float64(4.0 * t_5) / (Float64(x_45_scale * y_45_scale) ^ 2.0)) return Float64(Float64(-sqrt(Float64(Float64(Float64(2.0 * t_6) * t_5) * Float64(Float64(t_4 + t_3) + sqrt(Float64((Float64(t_4 - t_3) ^ 2.0) + (Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_1) * t_2) / x_45_scale) / y_45_scale) ^ 2.0))))))) / t_6) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) t_0 = (angle / 180.0) * pi; t_1 = sin(t_0); t_2 = cos(t_0); t_3 = ((((a * t_2) ^ 2.0) + ((b * t_1) ^ 2.0)) / y_45_scale) / y_45_scale; t_4 = ((((a * t_1) ^ 2.0) + ((b * t_2) ^ 2.0)) / x_45_scale) / x_45_scale; t_5 = (b * a) * (b * -a); t_6 = (4.0 * t_5) / ((x_45_scale * y_45_scale) ^ 2.0); tmp = -sqrt((((2.0 * t_6) * t_5) * ((t_4 + t_3) + sqrt((((t_4 - t_3) ^ 2.0) + ((((((2.0 * ((b ^ 2.0) - (a ^ 2.0))) * t_1) * t_2) / x_45_scale) / y_45_scale) ^ 2.0)))))) / t_6; 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[Sin[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[Cos[t$95$0], $MachinePrecision]}, Block[{t$95$3 = 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] / y$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] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, Block[{t$95$5 = N[(N[(b * a), $MachinePrecision] * N[(b * (-a)), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(N[(4.0 * t$95$5), $MachinePrecision] / N[Power[N[(x$45$scale * y$45$scale), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]}, N[((-N[Sqrt[N[(N[(N[(2.0 * t$95$6), $MachinePrecision] * t$95$5), $MachinePrecision] * N[(N[(t$95$4 + t$95$3), $MachinePrecision] + N[Sqrt[N[(N[Power[N[(t$95$4 - t$95$3), $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] * t$95$1), $MachinePrecision] * t$95$2), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$6), $MachinePrecision]]]]]]]]
\begin{array}{l}
t_0 := \frac{angle}{180} \cdot \pi\\
t_1 := \sin t\_0\\
t_2 := \cos t\_0\\
t_3 := \frac{\frac{{\left(a \cdot t\_2\right)}^{2} + {\left(b \cdot t\_1\right)}^{2}}{y-scale}}{y-scale}\\
t_4 := \frac{\frac{{\left(a \cdot t\_1\right)}^{2} + {\left(b \cdot t\_2\right)}^{2}}{x-scale}}{x-scale}\\
t_5 := \left(b \cdot a\right) \cdot \left(b \cdot \left(-a\right)\right)\\
t_6 := \frac{4 \cdot t\_5}{{\left(x-scale \cdot y-scale\right)}^{2}}\\
\frac{-\sqrt{\left(\left(2 \cdot t\_6\right) \cdot t\_5\right) \cdot \left(\left(t\_4 + t\_3\right) + \sqrt{{\left(t\_4 - t\_3\right)}^{2} + {\left(\frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_1\right) \cdot t\_2}{x-scale}}{y-scale}\right)}^{2}}\right)}}{t\_6}
\end{array}
Herbie found 9 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (/ angle 180.0) PI))
(t_1 (sin t_0))
(t_2 (cos t_0))
(t_3
(/ (/ (+ (pow (* a t_2) 2.0) (pow (* b t_1) 2.0)) y-scale) y-scale))
(t_4
(/ (/ (+ (pow (* a t_1) 2.0) (pow (* b t_2) 2.0)) x-scale) x-scale))
(t_5 (* (* b a) (* b (- a))))
(t_6 (/ (* 4.0 t_5) (pow (* x-scale y-scale) 2.0))))
(/
(-
(sqrt
(*
(* (* 2.0 t_6) t_5)
(+
(+ t_4 t_3)
(sqrt
(+
(pow (- t_4 t_3) 2.0)
(pow
(/
(/ (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) t_1) t_2) x-scale)
y-scale)
2.0)))))))
t_6)))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 = sin(t_0);
double t_2 = cos(t_0);
double t_3 = ((pow((a * t_2), 2.0) + pow((b * t_1), 2.0)) / y_45_scale) / y_45_scale;
double t_4 = ((pow((a * t_1), 2.0) + pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale;
double t_5 = (b * a) * (b * -a);
double t_6 = (4.0 * t_5) / pow((x_45_scale * y_45_scale), 2.0);
return -sqrt((((2.0 * t_6) * t_5) * ((t_4 + t_3) + sqrt((pow((t_4 - t_3), 2.0) + pow((((((2.0 * (pow(b, 2.0) - pow(a, 2.0))) * t_1) * t_2) / x_45_scale) / y_45_scale), 2.0)))))) / t_6;
}
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.sin(t_0);
double t_2 = Math.cos(t_0);
double t_3 = ((Math.pow((a * t_2), 2.0) + Math.pow((b * t_1), 2.0)) / y_45_scale) / y_45_scale;
double t_4 = ((Math.pow((a * t_1), 2.0) + Math.pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale;
double t_5 = (b * a) * (b * -a);
double t_6 = (4.0 * t_5) / Math.pow((x_45_scale * y_45_scale), 2.0);
return -Math.sqrt((((2.0 * t_6) * t_5) * ((t_4 + t_3) + Math.sqrt((Math.pow((t_4 - t_3), 2.0) + Math.pow((((((2.0 * (Math.pow(b, 2.0) - Math.pow(a, 2.0))) * t_1) * t_2) / x_45_scale) / y_45_scale), 2.0)))))) / t_6;
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = (angle / 180.0) * math.pi t_1 = math.sin(t_0) t_2 = math.cos(t_0) t_3 = ((math.pow((a * t_2), 2.0) + math.pow((b * t_1), 2.0)) / y_45_scale) / y_45_scale t_4 = ((math.pow((a * t_1), 2.0) + math.pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale t_5 = (b * a) * (b * -a) t_6 = (4.0 * t_5) / math.pow((x_45_scale * y_45_scale), 2.0) return -math.sqrt((((2.0 * t_6) * t_5) * ((t_4 + t_3) + math.sqrt((math.pow((t_4 - t_3), 2.0) + math.pow((((((2.0 * (math.pow(b, 2.0) - math.pow(a, 2.0))) * t_1) * t_2) / x_45_scale) / y_45_scale), 2.0)))))) / t_6
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(angle / 180.0) * pi) t_1 = sin(t_0) t_2 = cos(t_0) t_3 = Float64(Float64(Float64((Float64(a * t_2) ^ 2.0) + (Float64(b * t_1) ^ 2.0)) / y_45_scale) / y_45_scale) t_4 = Float64(Float64(Float64((Float64(a * t_1) ^ 2.0) + (Float64(b * t_2) ^ 2.0)) / x_45_scale) / x_45_scale) t_5 = Float64(Float64(b * a) * Float64(b * Float64(-a))) t_6 = Float64(Float64(4.0 * t_5) / (Float64(x_45_scale * y_45_scale) ^ 2.0)) return Float64(Float64(-sqrt(Float64(Float64(Float64(2.0 * t_6) * t_5) * Float64(Float64(t_4 + t_3) + sqrt(Float64((Float64(t_4 - t_3) ^ 2.0) + (Float64(Float64(Float64(Float64(Float64(2.0 * Float64((b ^ 2.0) - (a ^ 2.0))) * t_1) * t_2) / x_45_scale) / y_45_scale) ^ 2.0))))))) / t_6) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) t_0 = (angle / 180.0) * pi; t_1 = sin(t_0); t_2 = cos(t_0); t_3 = ((((a * t_2) ^ 2.0) + ((b * t_1) ^ 2.0)) / y_45_scale) / y_45_scale; t_4 = ((((a * t_1) ^ 2.0) + ((b * t_2) ^ 2.0)) / x_45_scale) / x_45_scale; t_5 = (b * a) * (b * -a); t_6 = (4.0 * t_5) / ((x_45_scale * y_45_scale) ^ 2.0); tmp = -sqrt((((2.0 * t_6) * t_5) * ((t_4 + t_3) + sqrt((((t_4 - t_3) ^ 2.0) + ((((((2.0 * ((b ^ 2.0) - (a ^ 2.0))) * t_1) * t_2) / x_45_scale) / y_45_scale) ^ 2.0)))))) / t_6; 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[Sin[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[Cos[t$95$0], $MachinePrecision]}, Block[{t$95$3 = 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] / y$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] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision]}, Block[{t$95$5 = N[(N[(b * a), $MachinePrecision] * N[(b * (-a)), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(N[(4.0 * t$95$5), $MachinePrecision] / N[Power[N[(x$45$scale * y$45$scale), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]}, N[((-N[Sqrt[N[(N[(N[(2.0 * t$95$6), $MachinePrecision] * t$95$5), $MachinePrecision] * N[(N[(t$95$4 + t$95$3), $MachinePrecision] + N[Sqrt[N[(N[Power[N[(t$95$4 - t$95$3), $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] * t$95$1), $MachinePrecision] * t$95$2), $MachinePrecision] / x$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$6), $MachinePrecision]]]]]]]]
\begin{array}{l}
t_0 := \frac{angle}{180} \cdot \pi\\
t_1 := \sin t\_0\\
t_2 := \cos t\_0\\
t_3 := \frac{\frac{{\left(a \cdot t\_2\right)}^{2} + {\left(b \cdot t\_1\right)}^{2}}{y-scale}}{y-scale}\\
t_4 := \frac{\frac{{\left(a \cdot t\_1\right)}^{2} + {\left(b \cdot t\_2\right)}^{2}}{x-scale}}{x-scale}\\
t_5 := \left(b \cdot a\right) \cdot \left(b \cdot \left(-a\right)\right)\\
t_6 := \frac{4 \cdot t\_5}{{\left(x-scale \cdot y-scale\right)}^{2}}\\
\frac{-\sqrt{\left(\left(2 \cdot t\_6\right) \cdot t\_5\right) \cdot \left(\left(t\_4 + t\_3\right) + \sqrt{{\left(t\_4 - t\_3\right)}^{2} + {\left(\frac{\frac{\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot t\_1\right) \cdot t\_2}{x-scale}}{y-scale}\right)}^{2}}\right)}}{t\_6}
\end{array}
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (fabs a) (fabs a)))
(t_1 (* y-scale (fabs x-scale)))
(t_2 (pow (fabs a) 2.0))
(t_3 (sin (* 0.005555555555555556 (* angle PI))))
(t_4 (* (/ angle 180.0) PI))
(t_5 (cos t_4))
(t_6 (sin t_4))
(t_7
(/
(/
(+ (pow (* (fabs a) t_6) 2.0) (pow (* (fabs b) t_5) 2.0))
(fabs x-scale))
(fabs x-scale)))
(t_8 (cos (* (* 2.0 PI) (* 0.005555555555555556 angle))))
(t_9 (- 0.5 (* t_8 0.5)))
(t_10 (fma t_8 0.5 0.5))
(t_11
(hypot
(/
(*
(* (+ (fabs b) (fabs a)) (- (fabs b) (fabs a)))
(sin (* 2.0 (* PI (* 0.005555555555555556 angle)))))
t_1)
(fma
(/ (fma t_9 (* (fabs b) (fabs b)) (* t_10 t_0)) y-scale)
(/ 1.0 y-scale)
(-
(/
(fma (* t_10 (fabs b)) (fabs b) (* t_9 t_0))
(* (fabs x-scale) (fabs x-scale)))))))
(t_12 (- (fabs a)))
(t_13
(* (/ (* 4.0 (* (fabs a) (fabs b))) t_1) (/ (* t_12 (fabs b)) t_1)))
(t_14 (* (* 2.0 t_13) (* (* (fabs b) (fabs a)) (* (fabs b) t_12)))))
(if (<= (fabs a) 2400000000000.0)
(/
(-
(sqrt
(*
t_14
(+
(+
t_7
(/
(/
(+ (pow (* (fabs a) t_5) 2.0) (pow (* (fabs b) t_6) 2.0))
y-scale)
y-scale))
t_11))))
t_13)
(if (<= (fabs a) 1.35e+154)
(*
0.25
(/
(*
(fabs b)
(*
(fabs x-scale)
(sqrt
(*
8.0
(* (pow (fabs a) 4.0) (+ (sqrt (pow t_3 4.0)) (pow t_3 2.0)))))))
t_2))
(/
(- (sqrt (* t_14 (+ (+ t_7 (/ (/ t_2 y-scale) y-scale)) t_11))))
t_13)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = fabs(a) * fabs(a);
double t_1 = y_45_scale * fabs(x_45_scale);
double t_2 = pow(fabs(a), 2.0);
double t_3 = sin((0.005555555555555556 * (angle * ((double) M_PI))));
double t_4 = (angle / 180.0) * ((double) M_PI);
double t_5 = cos(t_4);
double t_6 = sin(t_4);
double t_7 = ((pow((fabs(a) * t_6), 2.0) + pow((fabs(b) * t_5), 2.0)) / fabs(x_45_scale)) / fabs(x_45_scale);
double t_8 = cos(((2.0 * ((double) M_PI)) * (0.005555555555555556 * angle)));
double t_9 = 0.5 - (t_8 * 0.5);
double t_10 = fma(t_8, 0.5, 0.5);
double t_11 = hypot(((((fabs(b) + fabs(a)) * (fabs(b) - fabs(a))) * sin((2.0 * (((double) M_PI) * (0.005555555555555556 * angle))))) / t_1), fma((fma(t_9, (fabs(b) * fabs(b)), (t_10 * t_0)) / y_45_scale), (1.0 / y_45_scale), -(fma((t_10 * fabs(b)), fabs(b), (t_9 * t_0)) / (fabs(x_45_scale) * fabs(x_45_scale)))));
double t_12 = -fabs(a);
double t_13 = ((4.0 * (fabs(a) * fabs(b))) / t_1) * ((t_12 * fabs(b)) / t_1);
double t_14 = (2.0 * t_13) * ((fabs(b) * fabs(a)) * (fabs(b) * t_12));
double tmp;
if (fabs(a) <= 2400000000000.0) {
tmp = -sqrt((t_14 * ((t_7 + (((pow((fabs(a) * t_5), 2.0) + pow((fabs(b) * t_6), 2.0)) / y_45_scale) / y_45_scale)) + t_11))) / t_13;
} else if (fabs(a) <= 1.35e+154) {
tmp = 0.25 * ((fabs(b) * (fabs(x_45_scale) * sqrt((8.0 * (pow(fabs(a), 4.0) * (sqrt(pow(t_3, 4.0)) + pow(t_3, 2.0))))))) / t_2);
} else {
tmp = -sqrt((t_14 * ((t_7 + ((t_2 / y_45_scale) / y_45_scale)) + t_11))) / t_13;
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(abs(a) * abs(a)) t_1 = Float64(y_45_scale * abs(x_45_scale)) t_2 = abs(a) ^ 2.0 t_3 = sin(Float64(0.005555555555555556 * Float64(angle * pi))) t_4 = Float64(Float64(angle / 180.0) * pi) t_5 = cos(t_4) t_6 = sin(t_4) t_7 = Float64(Float64(Float64((Float64(abs(a) * t_6) ^ 2.0) + (Float64(abs(b) * t_5) ^ 2.0)) / abs(x_45_scale)) / abs(x_45_scale)) t_8 = cos(Float64(Float64(2.0 * pi) * Float64(0.005555555555555556 * angle))) t_9 = Float64(0.5 - Float64(t_8 * 0.5)) t_10 = fma(t_8, 0.5, 0.5) t_11 = hypot(Float64(Float64(Float64(Float64(abs(b) + abs(a)) * Float64(abs(b) - abs(a))) * sin(Float64(2.0 * Float64(pi * Float64(0.005555555555555556 * angle))))) / t_1), fma(Float64(fma(t_9, Float64(abs(b) * abs(b)), Float64(t_10 * t_0)) / y_45_scale), Float64(1.0 / y_45_scale), Float64(-Float64(fma(Float64(t_10 * abs(b)), abs(b), Float64(t_9 * t_0)) / Float64(abs(x_45_scale) * abs(x_45_scale)))))) t_12 = Float64(-abs(a)) t_13 = Float64(Float64(Float64(4.0 * Float64(abs(a) * abs(b))) / t_1) * Float64(Float64(t_12 * abs(b)) / t_1)) t_14 = Float64(Float64(2.0 * t_13) * Float64(Float64(abs(b) * abs(a)) * Float64(abs(b) * t_12))) tmp = 0.0 if (abs(a) <= 2400000000000.0) tmp = Float64(Float64(-sqrt(Float64(t_14 * Float64(Float64(t_7 + Float64(Float64(Float64((Float64(abs(a) * t_5) ^ 2.0) + (Float64(abs(b) * t_6) ^ 2.0)) / y_45_scale) / y_45_scale)) + t_11)))) / t_13); elseif (abs(a) <= 1.35e+154) tmp = Float64(0.25 * Float64(Float64(abs(b) * Float64(abs(x_45_scale) * sqrt(Float64(8.0 * Float64((abs(a) ^ 4.0) * Float64(sqrt((t_3 ^ 4.0)) + (t_3 ^ 2.0))))))) / t_2)); else tmp = Float64(Float64(-sqrt(Float64(t_14 * Float64(Float64(t_7 + Float64(Float64(t_2 / y_45_scale) / y_45_scale)) + t_11)))) / t_13); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[Abs[a], $MachinePrecision] * N[Abs[a], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(y$45$scale * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Power[N[Abs[a], $MachinePrecision], 2.0], $MachinePrecision]}, Block[{t$95$3 = N[Sin[N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$4 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$5 = N[Cos[t$95$4], $MachinePrecision]}, Block[{t$95$6 = N[Sin[t$95$4], $MachinePrecision]}, Block[{t$95$7 = N[(N[(N[(N[Power[N[(N[Abs[a], $MachinePrecision] * t$95$6), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(N[Abs[b], $MachinePrecision] * t$95$5), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$8 = N[Cos[N[(N[(2.0 * Pi), $MachinePrecision] * N[(0.005555555555555556 * angle), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$9 = N[(0.5 - N[(t$95$8 * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$10 = N[(t$95$8 * 0.5 + 0.5), $MachinePrecision]}, Block[{t$95$11 = N[Sqrt[N[(N[(N[(N[(N[Abs[b], $MachinePrecision] + N[Abs[a], $MachinePrecision]), $MachinePrecision] * N[(N[Abs[b], $MachinePrecision] - N[Abs[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[Sin[N[(2.0 * N[(Pi * N[(0.005555555555555556 * angle), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$1), $MachinePrecision] ^ 2 + N[(N[(N[(t$95$9 * N[(N[Abs[b], $MachinePrecision] * N[Abs[b], $MachinePrecision]), $MachinePrecision] + N[(t$95$10 * t$95$0), $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] * N[(1.0 / y$45$scale), $MachinePrecision] + (-N[(N[(N[(t$95$10 * N[Abs[b], $MachinePrecision]), $MachinePrecision] * N[Abs[b], $MachinePrecision] + N[(t$95$9 * t$95$0), $MachinePrecision]), $MachinePrecision] / N[(N[Abs[x$45$scale], $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision])), $MachinePrecision] ^ 2], $MachinePrecision]}, Block[{t$95$12 = (-N[Abs[a], $MachinePrecision])}, Block[{t$95$13 = N[(N[(N[(4.0 * N[(N[Abs[a], $MachinePrecision] * N[Abs[b], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$1), $MachinePrecision] * N[(N[(t$95$12 * N[Abs[b], $MachinePrecision]), $MachinePrecision] / t$95$1), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$14 = N[(N[(2.0 * t$95$13), $MachinePrecision] * N[(N[(N[Abs[b], $MachinePrecision] * N[Abs[a], $MachinePrecision]), $MachinePrecision] * N[(N[Abs[b], $MachinePrecision] * t$95$12), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[a], $MachinePrecision], 2400000000000.0], N[((-N[Sqrt[N[(t$95$14 * N[(N[(t$95$7 + N[(N[(N[(N[Power[N[(N[Abs[a], $MachinePrecision] * t$95$5), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(N[Abs[b], $MachinePrecision] * t$95$6), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]), $MachinePrecision] + t$95$11), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$13), $MachinePrecision], If[LessEqual[N[Abs[a], $MachinePrecision], 1.35e+154], N[(0.25 * N[(N[(N[Abs[b], $MachinePrecision] * N[(N[Abs[x$45$scale], $MachinePrecision] * N[Sqrt[N[(8.0 * N[(N[Power[N[Abs[a], $MachinePrecision], 4.0], $MachinePrecision] * N[(N[Sqrt[N[Power[t$95$3, 4.0], $MachinePrecision]], $MachinePrecision] + N[Power[t$95$3, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision], N[((-N[Sqrt[N[(t$95$14 * N[(N[(t$95$7 + N[(N[(t$95$2 / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]), $MachinePrecision] + t$95$11), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$13), $MachinePrecision]]]]]]]]]]]]]]]]]]
\begin{array}{l}
t_0 := \left|a\right| \cdot \left|a\right|\\
t_1 := y-scale \cdot \left|x-scale\right|\\
t_2 := {\left(\left|a\right|\right)}^{2}\\
t_3 := \sin \left(0.005555555555555556 \cdot \left(angle \cdot \pi\right)\right)\\
t_4 := \frac{angle}{180} \cdot \pi\\
t_5 := \cos t\_4\\
t_6 := \sin t\_4\\
t_7 := \frac{\frac{{\left(\left|a\right| \cdot t\_6\right)}^{2} + {\left(\left|b\right| \cdot t\_5\right)}^{2}}{\left|x-scale\right|}}{\left|x-scale\right|}\\
t_8 := \cos \left(\left(2 \cdot \pi\right) \cdot \left(0.005555555555555556 \cdot angle\right)\right)\\
t_9 := 0.5 - t\_8 \cdot 0.5\\
t_10 := \mathsf{fma}\left(t\_8, 0.5, 0.5\right)\\
t_11 := \mathsf{hypot}\left(\frac{\left(\left(\left|b\right| + \left|a\right|\right) \cdot \left(\left|b\right| - \left|a\right|\right)\right) \cdot \sin \left(2 \cdot \left(\pi \cdot \left(0.005555555555555556 \cdot angle\right)\right)\right)}{t\_1}, \mathsf{fma}\left(\frac{\mathsf{fma}\left(t\_9, \left|b\right| \cdot \left|b\right|, t\_10 \cdot t\_0\right)}{y-scale}, \frac{1}{y-scale}, -\frac{\mathsf{fma}\left(t\_10 \cdot \left|b\right|, \left|b\right|, t\_9 \cdot t\_0\right)}{\left|x-scale\right| \cdot \left|x-scale\right|}\right)\right)\\
t_12 := -\left|a\right|\\
t_13 := \frac{4 \cdot \left(\left|a\right| \cdot \left|b\right|\right)}{t\_1} \cdot \frac{t\_12 \cdot \left|b\right|}{t\_1}\\
t_14 := \left(2 \cdot t\_13\right) \cdot \left(\left(\left|b\right| \cdot \left|a\right|\right) \cdot \left(\left|b\right| \cdot t\_12\right)\right)\\
\mathbf{if}\;\left|a\right| \leq 2400000000000:\\
\;\;\;\;\frac{-\sqrt{t\_14 \cdot \left(\left(t\_7 + \frac{\frac{{\left(\left|a\right| \cdot t\_5\right)}^{2} + {\left(\left|b\right| \cdot t\_6\right)}^{2}}{y-scale}}{y-scale}\right) + t\_11\right)}}{t\_13}\\
\mathbf{elif}\;\left|a\right| \leq 1.35 \cdot 10^{+154}:\\
\;\;\;\;0.25 \cdot \frac{\left|b\right| \cdot \left(\left|x-scale\right| \cdot \sqrt{8 \cdot \left({\left(\left|a\right|\right)}^{4} \cdot \left(\sqrt{{t\_3}^{4}} + {t\_3}^{2}\right)\right)}\right)}{t\_2}\\
\mathbf{else}:\\
\;\;\;\;\frac{-\sqrt{t\_14 \cdot \left(\left(t\_7 + \frac{\frac{t\_2}{y-scale}}{y-scale}\right) + t\_11\right)}}{t\_13}\\
\end{array}
if a < 2.4e12Initial program 2.8%
Applied rewrites6.2%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f647.5%
lift-*.f64N/A
*-commutativeN/A
lower-*.f647.5%
lift-*.f64N/A
*-commutativeN/A
lift-*.f647.5%
Applied rewrites7.5%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f6411.3%
lift-*.f64N/A
*-commutativeN/A
lower-*.f6411.3%
lift-*.f64N/A
*-commutativeN/A
lift-*.f6411.3%
Applied rewrites11.3%
Applied rewrites11.4%
if 2.4e12 < a < 1.35e154Initial program 2.8%
Taylor expanded in b around -inf
Applied rewrites0.8%
Taylor expanded in x-scale around -inf
Applied rewrites1.5%
Taylor expanded in y-scale around 0
lower-sqrt.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-+.f64N/A
Applied rewrites4.8%
if 1.35e154 < a Initial program 2.8%
Applied rewrites6.2%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f647.5%
lift-*.f64N/A
*-commutativeN/A
lower-*.f647.5%
lift-*.f64N/A
*-commutativeN/A
lift-*.f647.5%
Applied rewrites7.5%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f6411.3%
lift-*.f64N/A
*-commutativeN/A
lower-*.f6411.3%
lift-*.f64N/A
*-commutativeN/A
lift-*.f6411.3%
Applied rewrites11.3%
Applied rewrites11.4%
Taylor expanded in angle around 0
lower-/.f64N/A
lower-pow.f6411.4%
Applied rewrites11.4%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (cos (* (* 2.0 PI) (* 0.005555555555555556 angle))))
(t_1 (- 0.5 (* t_0 0.5)))
(t_2 (* (fabs x-scale) (fabs x-scale)))
(t_3 (* y-scale (fabs x-scale)))
(t_4 (sin (* 0.005555555555555556 (* angle PI))))
(t_5 (/ a (* y-scale y-scale)))
(t_6 (* (- a) (fabs b)))
(t_7 (/ (fabs b) t_2))
(t_8 (* (/ (* 4.0 (* a (fabs b))) t_3) (/ t_6 t_3)))
(t_9 (* (/ angle 180.0) PI))
(t_10 (* (fabs b) a))
(t_11 (* t_10 4.0))
(t_12 (fma t_0 0.5 0.5)))
(if (<= (fabs x-scale) 2.8e-110)
(*
(*
(*
(/
(/
(sqrt
(*
(fma
t_5
a
(fma t_7 (fabs b) (fabs (- (* t_7 (fabs b)) (* t_5 a)))))
(*
(* (* t_6 (fabs b)) a)
(*
(*
t_6
(/
t_11
(* (* (* (fabs x-scale) y-scale) (fabs x-scale)) y-scale)))
2.0))))
t_10)
t_11)
(* y-scale y-scale))
(fabs x-scale))
(fabs x-scale))
(if (<= (fabs x-scale) 1e+20)
(/
(-
(sqrt
(*
(* (* 2.0 t_8) (* t_10 (* (fabs b) (- a))))
(+
(+
(/
(/
(+ (pow (* a (sin t_9)) 2.0) (pow (* (fabs b) (cos t_9)) 2.0))
(fabs x-scale))
(fabs x-scale))
(/ (/ (pow a 2.0) y-scale) y-scale))
(hypot
(/
(*
(* (+ (fabs b) a) (- (fabs b) a))
(sin (* 2.0 (* PI (* 0.005555555555555556 angle)))))
t_3)
(fma
(/ (fma t_1 (* (fabs b) (fabs b)) (* t_12 (* a a))) y-scale)
(/ 1.0 y-scale)
(-
(/ (fma (* t_12 (fabs b)) (fabs b) (* t_1 (* a a))) t_2))))))))
t_8)
(*
0.25
(/
(*
(fabs b)
(*
(fabs x-scale)
(sqrt
(* 8.0 (* (pow a 4.0) (+ (sqrt (pow t_4 4.0)) (pow t_4 2.0)))))))
(pow a 2.0)))))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = cos(((2.0 * ((double) M_PI)) * (0.005555555555555556 * angle)));
double t_1 = 0.5 - (t_0 * 0.5);
double t_2 = fabs(x_45_scale) * fabs(x_45_scale);
double t_3 = y_45_scale * fabs(x_45_scale);
double t_4 = sin((0.005555555555555556 * (angle * ((double) M_PI))));
double t_5 = a / (y_45_scale * y_45_scale);
double t_6 = -a * fabs(b);
double t_7 = fabs(b) / t_2;
double t_8 = ((4.0 * (a * fabs(b))) / t_3) * (t_6 / t_3);
double t_9 = (angle / 180.0) * ((double) M_PI);
double t_10 = fabs(b) * a;
double t_11 = t_10 * 4.0;
double t_12 = fma(t_0, 0.5, 0.5);
double tmp;
if (fabs(x_45_scale) <= 2.8e-110) {
tmp = ((((sqrt((fma(t_5, a, fma(t_7, fabs(b), fabs(((t_7 * fabs(b)) - (t_5 * a))))) * (((t_6 * fabs(b)) * a) * ((t_6 * (t_11 / (((fabs(x_45_scale) * y_45_scale) * fabs(x_45_scale)) * y_45_scale))) * 2.0)))) / t_10) / t_11) * (y_45_scale * y_45_scale)) * fabs(x_45_scale)) * fabs(x_45_scale);
} else if (fabs(x_45_scale) <= 1e+20) {
tmp = -sqrt((((2.0 * t_8) * (t_10 * (fabs(b) * -a))) * (((((pow((a * sin(t_9)), 2.0) + pow((fabs(b) * cos(t_9)), 2.0)) / fabs(x_45_scale)) / fabs(x_45_scale)) + ((pow(a, 2.0) / y_45_scale) / y_45_scale)) + hypot(((((fabs(b) + a) * (fabs(b) - a)) * sin((2.0 * (((double) M_PI) * (0.005555555555555556 * angle))))) / t_3), fma((fma(t_1, (fabs(b) * fabs(b)), (t_12 * (a * a))) / y_45_scale), (1.0 / y_45_scale), -(fma((t_12 * fabs(b)), fabs(b), (t_1 * (a * a))) / t_2)))))) / t_8;
} else {
tmp = 0.25 * ((fabs(b) * (fabs(x_45_scale) * sqrt((8.0 * (pow(a, 4.0) * (sqrt(pow(t_4, 4.0)) + pow(t_4, 2.0))))))) / pow(a, 2.0));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = cos(Float64(Float64(2.0 * pi) * Float64(0.005555555555555556 * angle))) t_1 = Float64(0.5 - Float64(t_0 * 0.5)) t_2 = Float64(abs(x_45_scale) * abs(x_45_scale)) t_3 = Float64(y_45_scale * abs(x_45_scale)) t_4 = sin(Float64(0.005555555555555556 * Float64(angle * pi))) t_5 = Float64(a / Float64(y_45_scale * y_45_scale)) t_6 = Float64(Float64(-a) * abs(b)) t_7 = Float64(abs(b) / t_2) t_8 = Float64(Float64(Float64(4.0 * Float64(a * abs(b))) / t_3) * Float64(t_6 / t_3)) t_9 = Float64(Float64(angle / 180.0) * pi) t_10 = Float64(abs(b) * a) t_11 = Float64(t_10 * 4.0) t_12 = fma(t_0, 0.5, 0.5) tmp = 0.0 if (abs(x_45_scale) <= 2.8e-110) tmp = Float64(Float64(Float64(Float64(Float64(sqrt(Float64(fma(t_5, a, fma(t_7, abs(b), abs(Float64(Float64(t_7 * abs(b)) - Float64(t_5 * a))))) * Float64(Float64(Float64(t_6 * abs(b)) * a) * Float64(Float64(t_6 * Float64(t_11 / Float64(Float64(Float64(abs(x_45_scale) * y_45_scale) * abs(x_45_scale)) * y_45_scale))) * 2.0)))) / t_10) / t_11) * Float64(y_45_scale * y_45_scale)) * abs(x_45_scale)) * abs(x_45_scale)); elseif (abs(x_45_scale) <= 1e+20) tmp = Float64(Float64(-sqrt(Float64(Float64(Float64(2.0 * t_8) * Float64(t_10 * Float64(abs(b) * Float64(-a)))) * Float64(Float64(Float64(Float64(Float64((Float64(a * sin(t_9)) ^ 2.0) + (Float64(abs(b) * cos(t_9)) ^ 2.0)) / abs(x_45_scale)) / abs(x_45_scale)) + Float64(Float64((a ^ 2.0) / y_45_scale) / y_45_scale)) + hypot(Float64(Float64(Float64(Float64(abs(b) + a) * Float64(abs(b) - a)) * sin(Float64(2.0 * Float64(pi * Float64(0.005555555555555556 * angle))))) / t_3), fma(Float64(fma(t_1, Float64(abs(b) * abs(b)), Float64(t_12 * Float64(a * a))) / y_45_scale), Float64(1.0 / y_45_scale), Float64(-Float64(fma(Float64(t_12 * abs(b)), abs(b), Float64(t_1 * Float64(a * a))) / t_2)))))))) / t_8); else tmp = Float64(0.25 * Float64(Float64(abs(b) * Float64(abs(x_45_scale) * sqrt(Float64(8.0 * Float64((a ^ 4.0) * Float64(sqrt((t_4 ^ 4.0)) + (t_4 ^ 2.0))))))) / (a ^ 2.0))); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[Cos[N[(N[(2.0 * Pi), $MachinePrecision] * N[(0.005555555555555556 * angle), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(0.5 - N[(t$95$0 * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[Abs[x$45$scale], $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(y$45$scale * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[Sin[N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$5 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[((-a) * N[Abs[b], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[(N[Abs[b], $MachinePrecision] / t$95$2), $MachinePrecision]}, Block[{t$95$8 = N[(N[(N[(4.0 * N[(a * N[Abs[b], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$3), $MachinePrecision] * N[(t$95$6 / t$95$3), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$9 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$10 = N[(N[Abs[b], $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$11 = N[(t$95$10 * 4.0), $MachinePrecision]}, Block[{t$95$12 = N[(t$95$0 * 0.5 + 0.5), $MachinePrecision]}, If[LessEqual[N[Abs[x$45$scale], $MachinePrecision], 2.8e-110], N[(N[(N[(N[(N[(N[Sqrt[N[(N[(t$95$5 * a + N[(t$95$7 * N[Abs[b], $MachinePrecision] + N[Abs[N[(N[(t$95$7 * N[Abs[b], $MachinePrecision]), $MachinePrecision] - N[(t$95$5 * a), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(t$95$6 * N[Abs[b], $MachinePrecision]), $MachinePrecision] * a), $MachinePrecision] * N[(N[(t$95$6 * N[(t$95$11 / N[(N[(N[(N[Abs[x$45$scale], $MachinePrecision] * y$45$scale), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / t$95$10), $MachinePrecision] / t$95$11), $MachinePrecision] * N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[Abs[x$45$scale], $MachinePrecision], 1e+20], N[((-N[Sqrt[N[(N[(N[(2.0 * t$95$8), $MachinePrecision] * N[(t$95$10 * N[(N[Abs[b], $MachinePrecision] * (-a)), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(N[(N[Power[N[(a * N[Sin[t$95$9], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(N[Abs[b], $MachinePrecision] * N[Cos[t$95$9], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] + N[(N[(N[Power[a, 2.0], $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]), $MachinePrecision] + N[Sqrt[N[(N[(N[(N[(N[Abs[b], $MachinePrecision] + a), $MachinePrecision] * N[(N[Abs[b], $MachinePrecision] - a), $MachinePrecision]), $MachinePrecision] * N[Sin[N[(2.0 * N[(Pi * N[(0.005555555555555556 * angle), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$3), $MachinePrecision] ^ 2 + N[(N[(N[(t$95$1 * N[(N[Abs[b], $MachinePrecision] * N[Abs[b], $MachinePrecision]), $MachinePrecision] + N[(t$95$12 * N[(a * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] * N[(1.0 / y$45$scale), $MachinePrecision] + (-N[(N[(N[(t$95$12 * N[Abs[b], $MachinePrecision]), $MachinePrecision] * N[Abs[b], $MachinePrecision] + N[(t$95$1 * N[(a * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$2), $MachinePrecision])), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$8), $MachinePrecision], N[(0.25 * N[(N[(N[Abs[b], $MachinePrecision] * N[(N[Abs[x$45$scale], $MachinePrecision] * N[Sqrt[N[(8.0 * N[(N[Power[a, 4.0], $MachinePrecision] * N[(N[Sqrt[N[Power[t$95$4, 4.0], $MachinePrecision]], $MachinePrecision] + N[Power[t$95$4, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]]
\begin{array}{l}
t_0 := \cos \left(\left(2 \cdot \pi\right) \cdot \left(0.005555555555555556 \cdot angle\right)\right)\\
t_1 := 0.5 - t\_0 \cdot 0.5\\
t_2 := \left|x-scale\right| \cdot \left|x-scale\right|\\
t_3 := y-scale \cdot \left|x-scale\right|\\
t_4 := \sin \left(0.005555555555555556 \cdot \left(angle \cdot \pi\right)\right)\\
t_5 := \frac{a}{y-scale \cdot y-scale}\\
t_6 := \left(-a\right) \cdot \left|b\right|\\
t_7 := \frac{\left|b\right|}{t\_2}\\
t_8 := \frac{4 \cdot \left(a \cdot \left|b\right|\right)}{t\_3} \cdot \frac{t\_6}{t\_3}\\
t_9 := \frac{angle}{180} \cdot \pi\\
t_10 := \left|b\right| \cdot a\\
t_11 := t\_10 \cdot 4\\
t_12 := \mathsf{fma}\left(t\_0, 0.5, 0.5\right)\\
\mathbf{if}\;\left|x-scale\right| \leq 2.8 \cdot 10^{-110}:\\
\;\;\;\;\left(\left(\frac{\frac{\sqrt{\mathsf{fma}\left(t\_5, a, \mathsf{fma}\left(t\_7, \left|b\right|, \left|t\_7 \cdot \left|b\right| - t\_5 \cdot a\right|\right)\right) \cdot \left(\left(\left(t\_6 \cdot \left|b\right|\right) \cdot a\right) \cdot \left(\left(t\_6 \cdot \frac{t\_11}{\left(\left(\left|x-scale\right| \cdot y-scale\right) \cdot \left|x-scale\right|\right) \cdot y-scale}\right) \cdot 2\right)\right)}}{t\_10}}{t\_11} \cdot \left(y-scale \cdot y-scale\right)\right) \cdot \left|x-scale\right|\right) \cdot \left|x-scale\right|\\
\mathbf{elif}\;\left|x-scale\right| \leq 10^{+20}:\\
\;\;\;\;\frac{-\sqrt{\left(\left(2 \cdot t\_8\right) \cdot \left(t\_10 \cdot \left(\left|b\right| \cdot \left(-a\right)\right)\right)\right) \cdot \left(\left(\frac{\frac{{\left(a \cdot \sin t\_9\right)}^{2} + {\left(\left|b\right| \cdot \cos t\_9\right)}^{2}}{\left|x-scale\right|}}{\left|x-scale\right|} + \frac{\frac{{a}^{2}}{y-scale}}{y-scale}\right) + \mathsf{hypot}\left(\frac{\left(\left(\left|b\right| + a\right) \cdot \left(\left|b\right| - a\right)\right) \cdot \sin \left(2 \cdot \left(\pi \cdot \left(0.005555555555555556 \cdot angle\right)\right)\right)}{t\_3}, \mathsf{fma}\left(\frac{\mathsf{fma}\left(t\_1, \left|b\right| \cdot \left|b\right|, t\_12 \cdot \left(a \cdot a\right)\right)}{y-scale}, \frac{1}{y-scale}, -\frac{\mathsf{fma}\left(t\_12 \cdot \left|b\right|, \left|b\right|, t\_1 \cdot \left(a \cdot a\right)\right)}{t\_2}\right)\right)\right)}}{t\_8}\\
\mathbf{else}:\\
\;\;\;\;0.25 \cdot \frac{\left|b\right| \cdot \left(\left|x-scale\right| \cdot \sqrt{8 \cdot \left({a}^{4} \cdot \left(\sqrt{{t\_4}^{4}} + {t\_4}^{2}\right)\right)}\right)}{{a}^{2}}\\
\end{array}
if x-scale < 2.8e-110Initial program 2.8%
Taylor expanded in angle around 0
Applied rewrites4.5%
Applied rewrites2.1%
Applied rewrites3.1%
Applied rewrites8.1%
if 2.8e-110 < x-scale < 1e20Initial program 2.8%
Applied rewrites6.2%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f647.5%
lift-*.f64N/A
*-commutativeN/A
lower-*.f647.5%
lift-*.f64N/A
*-commutativeN/A
lift-*.f647.5%
Applied rewrites7.5%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f6411.3%
lift-*.f64N/A
*-commutativeN/A
lower-*.f6411.3%
lift-*.f64N/A
*-commutativeN/A
lift-*.f6411.3%
Applied rewrites11.3%
Applied rewrites11.4%
Taylor expanded in angle around 0
lower-/.f64N/A
lower-pow.f6411.4%
Applied rewrites11.4%
if 1e20 < x-scale Initial program 2.8%
Taylor expanded in b around -inf
Applied rewrites0.8%
Taylor expanded in x-scale around -inf
Applied rewrites1.5%
Taylor expanded in y-scale around 0
lower-sqrt.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-+.f64N/A
Applied rewrites4.8%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (sin (* 0.005555555555555556 (* angle PI))))
(t_1 (* (fabs b) a))
(t_2 (* y-scale (fabs x-scale)))
(t_3 (* 0.5 (cos (* 0.011111111111111112 (* angle PI)))))
(t_4 (/ a (* y-scale y-scale)))
(t_5 (* (- a) (fabs b)))
(t_6 (/ (fabs b) (* (fabs x-scale) (fabs x-scale))))
(t_7 (* t_1 4.0))
(t_8 (* (/ (* 4.0 (* a (fabs b))) t_2) (/ t_5 t_2)))
(t_9 (* (/ angle 180.0) PI))
(t_10 (sin t_9))
(t_11 (cos t_9)))
(if (<= (fabs x-scale) 2.8e-110)
(*
(*
(*
(/
(/
(sqrt
(*
(fma
t_4
a
(fma t_6 (fabs b) (fabs (- (* t_6 (fabs b)) (* t_4 a)))))
(*
(* (* t_5 (fabs b)) a)
(*
(*
t_5
(/
t_7
(* (* (* (fabs x-scale) y-scale) (fabs x-scale)) y-scale)))
2.0))))
t_1)
t_7)
(* y-scale y-scale))
(fabs x-scale))
(fabs x-scale))
(if (<= (fabs x-scale) 1.45e+17)
(/
(-
(sqrt
(*
(* (* 2.0 t_8) (* t_1 (* (fabs b) (- a))))
(+
(+
(/
(/
(+ (pow (* a t_10) 2.0) (pow (* (fabs b) t_11) 2.0))
(fabs x-scale))
(fabs x-scale))
(/
(/ (+ (pow (* a t_11) 2.0) (pow (* (fabs b) t_10) 2.0)) y-scale)
y-scale))
(/
(sqrt
(pow
(fma (pow a 2.0) (- 0.5 t_3) (* (pow (fabs b) 2.0) (+ 0.5 t_3)))
2.0))
(pow (fabs x-scale) 2.0))))))
t_8)
(*
0.25
(/
(*
(fabs b)
(*
(fabs x-scale)
(sqrt
(* 8.0 (* (pow a 4.0) (+ (sqrt (pow t_0 4.0)) (pow t_0 2.0)))))))
(pow a 2.0)))))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = sin((0.005555555555555556 * (angle * ((double) M_PI))));
double t_1 = fabs(b) * a;
double t_2 = y_45_scale * fabs(x_45_scale);
double t_3 = 0.5 * cos((0.011111111111111112 * (angle * ((double) M_PI))));
double t_4 = a / (y_45_scale * y_45_scale);
double t_5 = -a * fabs(b);
double t_6 = fabs(b) / (fabs(x_45_scale) * fabs(x_45_scale));
double t_7 = t_1 * 4.0;
double t_8 = ((4.0 * (a * fabs(b))) / t_2) * (t_5 / t_2);
double t_9 = (angle / 180.0) * ((double) M_PI);
double t_10 = sin(t_9);
double t_11 = cos(t_9);
double tmp;
if (fabs(x_45_scale) <= 2.8e-110) {
tmp = ((((sqrt((fma(t_4, a, fma(t_6, fabs(b), fabs(((t_6 * fabs(b)) - (t_4 * a))))) * (((t_5 * fabs(b)) * a) * ((t_5 * (t_7 / (((fabs(x_45_scale) * y_45_scale) * fabs(x_45_scale)) * y_45_scale))) * 2.0)))) / t_1) / t_7) * (y_45_scale * y_45_scale)) * fabs(x_45_scale)) * fabs(x_45_scale);
} else if (fabs(x_45_scale) <= 1.45e+17) {
tmp = -sqrt((((2.0 * t_8) * (t_1 * (fabs(b) * -a))) * (((((pow((a * t_10), 2.0) + pow((fabs(b) * t_11), 2.0)) / fabs(x_45_scale)) / fabs(x_45_scale)) + (((pow((a * t_11), 2.0) + pow((fabs(b) * t_10), 2.0)) / y_45_scale) / y_45_scale)) + (sqrt(pow(fma(pow(a, 2.0), (0.5 - t_3), (pow(fabs(b), 2.0) * (0.5 + t_3))), 2.0)) / pow(fabs(x_45_scale), 2.0))))) / t_8;
} else {
tmp = 0.25 * ((fabs(b) * (fabs(x_45_scale) * sqrt((8.0 * (pow(a, 4.0) * (sqrt(pow(t_0, 4.0)) + pow(t_0, 2.0))))))) / pow(a, 2.0));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = sin(Float64(0.005555555555555556 * Float64(angle * pi))) t_1 = Float64(abs(b) * a) t_2 = Float64(y_45_scale * abs(x_45_scale)) t_3 = Float64(0.5 * cos(Float64(0.011111111111111112 * Float64(angle * pi)))) t_4 = Float64(a / Float64(y_45_scale * y_45_scale)) t_5 = Float64(Float64(-a) * abs(b)) t_6 = Float64(abs(b) / Float64(abs(x_45_scale) * abs(x_45_scale))) t_7 = Float64(t_1 * 4.0) t_8 = Float64(Float64(Float64(4.0 * Float64(a * abs(b))) / t_2) * Float64(t_5 / t_2)) t_9 = Float64(Float64(angle / 180.0) * pi) t_10 = sin(t_9) t_11 = cos(t_9) tmp = 0.0 if (abs(x_45_scale) <= 2.8e-110) tmp = Float64(Float64(Float64(Float64(Float64(sqrt(Float64(fma(t_4, a, fma(t_6, abs(b), abs(Float64(Float64(t_6 * abs(b)) - Float64(t_4 * a))))) * Float64(Float64(Float64(t_5 * abs(b)) * a) * Float64(Float64(t_5 * Float64(t_7 / Float64(Float64(Float64(abs(x_45_scale) * y_45_scale) * abs(x_45_scale)) * y_45_scale))) * 2.0)))) / t_1) / t_7) * Float64(y_45_scale * y_45_scale)) * abs(x_45_scale)) * abs(x_45_scale)); elseif (abs(x_45_scale) <= 1.45e+17) tmp = Float64(Float64(-sqrt(Float64(Float64(Float64(2.0 * t_8) * Float64(t_1 * Float64(abs(b) * Float64(-a)))) * Float64(Float64(Float64(Float64(Float64((Float64(a * t_10) ^ 2.0) + (Float64(abs(b) * t_11) ^ 2.0)) / abs(x_45_scale)) / abs(x_45_scale)) + Float64(Float64(Float64((Float64(a * t_11) ^ 2.0) + (Float64(abs(b) * t_10) ^ 2.0)) / y_45_scale) / y_45_scale)) + Float64(sqrt((fma((a ^ 2.0), Float64(0.5 - t_3), Float64((abs(b) ^ 2.0) * Float64(0.5 + t_3))) ^ 2.0)) / (abs(x_45_scale) ^ 2.0)))))) / t_8); else tmp = Float64(0.25 * Float64(Float64(abs(b) * Float64(abs(x_45_scale) * sqrt(Float64(8.0 * Float64((a ^ 4.0) * Float64(sqrt((t_0 ^ 4.0)) + (t_0 ^ 2.0))))))) / (a ^ 2.0))); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[Sin[N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$1 = N[(N[Abs[b], $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$2 = N[(y$45$scale * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(0.5 * N[Cos[N[(0.011111111111111112 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[((-a) * N[Abs[b], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(N[Abs[b], $MachinePrecision] / N[(N[Abs[x$45$scale], $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[(t$95$1 * 4.0), $MachinePrecision]}, Block[{t$95$8 = N[(N[(N[(4.0 * N[(a * N[Abs[b], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$2), $MachinePrecision] * N[(t$95$5 / t$95$2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$9 = N[(N[(angle / 180.0), $MachinePrecision] * Pi), $MachinePrecision]}, Block[{t$95$10 = N[Sin[t$95$9], $MachinePrecision]}, Block[{t$95$11 = N[Cos[t$95$9], $MachinePrecision]}, If[LessEqual[N[Abs[x$45$scale], $MachinePrecision], 2.8e-110], N[(N[(N[(N[(N[(N[Sqrt[N[(N[(t$95$4 * a + N[(t$95$6 * N[Abs[b], $MachinePrecision] + N[Abs[N[(N[(t$95$6 * N[Abs[b], $MachinePrecision]), $MachinePrecision] - N[(t$95$4 * a), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(t$95$5 * N[Abs[b], $MachinePrecision]), $MachinePrecision] * a), $MachinePrecision] * N[(N[(t$95$5 * N[(t$95$7 / N[(N[(N[(N[Abs[x$45$scale], $MachinePrecision] * y$45$scale), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / t$95$1), $MachinePrecision] / t$95$7), $MachinePrecision] * N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[Abs[x$45$scale], $MachinePrecision], 1.45e+17], N[((-N[Sqrt[N[(N[(N[(2.0 * t$95$8), $MachinePrecision] * N[(t$95$1 * N[(N[Abs[b], $MachinePrecision] * (-a)), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(N[(N[Power[N[(a * t$95$10), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(N[Abs[b], $MachinePrecision] * t$95$11), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] + N[(N[(N[(N[Power[N[(a * t$95$11), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(N[Abs[b], $MachinePrecision] * t$95$10), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]), $MachinePrecision] + N[(N[Sqrt[N[Power[N[(N[Power[a, 2.0], $MachinePrecision] * N[(0.5 - t$95$3), $MachinePrecision] + N[(N[Power[N[Abs[b], $MachinePrecision], 2.0], $MachinePrecision] * N[(0.5 + t$95$3), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision] / N[Power[N[Abs[x$45$scale], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$8), $MachinePrecision], N[(0.25 * N[(N[(N[Abs[b], $MachinePrecision] * N[(N[Abs[x$45$scale], $MachinePrecision] * N[Sqrt[N[(8.0 * N[(N[Power[a, 4.0], $MachinePrecision] * N[(N[Sqrt[N[Power[t$95$0, 4.0], $MachinePrecision]], $MachinePrecision] + N[Power[t$95$0, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]
\begin{array}{l}
t_0 := \sin \left(0.005555555555555556 \cdot \left(angle \cdot \pi\right)\right)\\
t_1 := \left|b\right| \cdot a\\
t_2 := y-scale \cdot \left|x-scale\right|\\
t_3 := 0.5 \cdot \cos \left(0.011111111111111112 \cdot \left(angle \cdot \pi\right)\right)\\
t_4 := \frac{a}{y-scale \cdot y-scale}\\
t_5 := \left(-a\right) \cdot \left|b\right|\\
t_6 := \frac{\left|b\right|}{\left|x-scale\right| \cdot \left|x-scale\right|}\\
t_7 := t\_1 \cdot 4\\
t_8 := \frac{4 \cdot \left(a \cdot \left|b\right|\right)}{t\_2} \cdot \frac{t\_5}{t\_2}\\
t_9 := \frac{angle}{180} \cdot \pi\\
t_10 := \sin t\_9\\
t_11 := \cos t\_9\\
\mathbf{if}\;\left|x-scale\right| \leq 2.8 \cdot 10^{-110}:\\
\;\;\;\;\left(\left(\frac{\frac{\sqrt{\mathsf{fma}\left(t\_4, a, \mathsf{fma}\left(t\_6, \left|b\right|, \left|t\_6 \cdot \left|b\right| - t\_4 \cdot a\right|\right)\right) \cdot \left(\left(\left(t\_5 \cdot \left|b\right|\right) \cdot a\right) \cdot \left(\left(t\_5 \cdot \frac{t\_7}{\left(\left(\left|x-scale\right| \cdot y-scale\right) \cdot \left|x-scale\right|\right) \cdot y-scale}\right) \cdot 2\right)\right)}}{t\_1}}{t\_7} \cdot \left(y-scale \cdot y-scale\right)\right) \cdot \left|x-scale\right|\right) \cdot \left|x-scale\right|\\
\mathbf{elif}\;\left|x-scale\right| \leq 1.45 \cdot 10^{+17}:\\
\;\;\;\;\frac{-\sqrt{\left(\left(2 \cdot t\_8\right) \cdot \left(t\_1 \cdot \left(\left|b\right| \cdot \left(-a\right)\right)\right)\right) \cdot \left(\left(\frac{\frac{{\left(a \cdot t\_10\right)}^{2} + {\left(\left|b\right| \cdot t\_11\right)}^{2}}{\left|x-scale\right|}}{\left|x-scale\right|} + \frac{\frac{{\left(a \cdot t\_11\right)}^{2} + {\left(\left|b\right| \cdot t\_10\right)}^{2}}{y-scale}}{y-scale}\right) + \frac{\sqrt{{\left(\mathsf{fma}\left({a}^{2}, 0.5 - t\_3, {\left(\left|b\right|\right)}^{2} \cdot \left(0.5 + t\_3\right)\right)\right)}^{2}}}{{\left(\left|x-scale\right|\right)}^{2}}\right)}}{t\_8}\\
\mathbf{else}:\\
\;\;\;\;0.25 \cdot \frac{\left|b\right| \cdot \left(\left|x-scale\right| \cdot \sqrt{8 \cdot \left({a}^{4} \cdot \left(\sqrt{{t\_0}^{4}} + {t\_0}^{2}\right)\right)}\right)}{{a}^{2}}\\
\end{array}
if x-scale < 2.8e-110Initial program 2.8%
Taylor expanded in angle around 0
Applied rewrites4.5%
Applied rewrites2.1%
Applied rewrites3.1%
Applied rewrites8.1%
if 2.8e-110 < x-scale < 1.45e17Initial program 2.8%
Applied rewrites6.2%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f647.5%
lift-*.f64N/A
*-commutativeN/A
lower-*.f647.5%
lift-*.f64N/A
*-commutativeN/A
lift-*.f647.5%
Applied rewrites7.5%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f6411.3%
lift-*.f64N/A
*-commutativeN/A
lower-*.f6411.3%
lift-*.f64N/A
*-commutativeN/A
lift-*.f6411.3%
Applied rewrites11.3%
Taylor expanded in x-scale around 0
Applied rewrites6.3%
if 1.45e17 < x-scale Initial program 2.8%
Taylor expanded in b around -inf
Applied rewrites0.8%
Taylor expanded in x-scale around -inf
Applied rewrites1.5%
Taylor expanded in y-scale around 0
lower-sqrt.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-+.f64N/A
Applied rewrites4.8%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* 0.005555555555555556 (* angle PI)))
(t_1 (sin t_0))
(t_2 (* (fabs b) a))
(t_3 (* y-scale (fabs x-scale)))
(t_4 (pow (fabs b) 2.0))
(t_5 (/ a (* y-scale y-scale)))
(t_6 (* (- a) (fabs b)))
(t_7 (pow t_1 2.0))
(t_8 (/ (fabs b) (* (fabs x-scale) (fabs x-scale))))
(t_9 (* t_2 4.0))
(t_10 (* (/ (* 4.0 (* a (fabs b))) t_3) (/ t_6 t_3)))
(t_11 (* 0.5 (cos (* 0.011111111111111112 (* angle PI))))))
(if (<= (fabs x-scale) 2.3e-110)
(*
(*
(*
(/
(/
(sqrt
(*
(fma
t_5
a
(fma t_8 (fabs b) (fabs (- (* t_8 (fabs b)) (* t_5 a)))))
(*
(* (* t_6 (fabs b)) a)
(*
(*
t_6
(/
t_9
(* (* (* (fabs x-scale) y-scale) (fabs x-scale)) y-scale)))
2.0))))
t_2)
t_9)
(* y-scale y-scale))
(fabs x-scale))
(fabs x-scale))
(if (<= (fabs x-scale) 1.45e+17)
(/
(-
(sqrt
(*
(* (* 2.0 t_10) (* t_2 (* (fabs b) (- a))))
(/
(+
(sqrt
(pow (fma (pow a 2.0) (- 0.5 t_11) (* t_4 (+ 0.5 t_11))) 2.0))
(fma (pow a 2.0) t_7 (* t_4 (pow (cos t_0) 2.0))))
(pow (fabs x-scale) 2.0)))))
t_10)
(*
0.25
(/
(*
(fabs b)
(*
(fabs x-scale)
(sqrt (* 8.0 (* (pow a 4.0) (+ (sqrt (pow t_1 4.0)) t_7))))))
(pow a 2.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 = sin(t_0);
double t_2 = fabs(b) * a;
double t_3 = y_45_scale * fabs(x_45_scale);
double t_4 = pow(fabs(b), 2.0);
double t_5 = a / (y_45_scale * y_45_scale);
double t_6 = -a * fabs(b);
double t_7 = pow(t_1, 2.0);
double t_8 = fabs(b) / (fabs(x_45_scale) * fabs(x_45_scale));
double t_9 = t_2 * 4.0;
double t_10 = ((4.0 * (a * fabs(b))) / t_3) * (t_6 / t_3);
double t_11 = 0.5 * cos((0.011111111111111112 * (angle * ((double) M_PI))));
double tmp;
if (fabs(x_45_scale) <= 2.3e-110) {
tmp = ((((sqrt((fma(t_5, a, fma(t_8, fabs(b), fabs(((t_8 * fabs(b)) - (t_5 * a))))) * (((t_6 * fabs(b)) * a) * ((t_6 * (t_9 / (((fabs(x_45_scale) * y_45_scale) * fabs(x_45_scale)) * y_45_scale))) * 2.0)))) / t_2) / t_9) * (y_45_scale * y_45_scale)) * fabs(x_45_scale)) * fabs(x_45_scale);
} else if (fabs(x_45_scale) <= 1.45e+17) {
tmp = -sqrt((((2.0 * t_10) * (t_2 * (fabs(b) * -a))) * ((sqrt(pow(fma(pow(a, 2.0), (0.5 - t_11), (t_4 * (0.5 + t_11))), 2.0)) + fma(pow(a, 2.0), t_7, (t_4 * pow(cos(t_0), 2.0)))) / pow(fabs(x_45_scale), 2.0)))) / t_10;
} else {
tmp = 0.25 * ((fabs(b) * (fabs(x_45_scale) * sqrt((8.0 * (pow(a, 4.0) * (sqrt(pow(t_1, 4.0)) + t_7)))))) / pow(a, 2.0));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(0.005555555555555556 * Float64(angle * pi)) t_1 = sin(t_0) t_2 = Float64(abs(b) * a) t_3 = Float64(y_45_scale * abs(x_45_scale)) t_4 = abs(b) ^ 2.0 t_5 = Float64(a / Float64(y_45_scale * y_45_scale)) t_6 = Float64(Float64(-a) * abs(b)) t_7 = t_1 ^ 2.0 t_8 = Float64(abs(b) / Float64(abs(x_45_scale) * abs(x_45_scale))) t_9 = Float64(t_2 * 4.0) t_10 = Float64(Float64(Float64(4.0 * Float64(a * abs(b))) / t_3) * Float64(t_6 / t_3)) t_11 = Float64(0.5 * cos(Float64(0.011111111111111112 * Float64(angle * pi)))) tmp = 0.0 if (abs(x_45_scale) <= 2.3e-110) tmp = Float64(Float64(Float64(Float64(Float64(sqrt(Float64(fma(t_5, a, fma(t_8, abs(b), abs(Float64(Float64(t_8 * abs(b)) - Float64(t_5 * a))))) * Float64(Float64(Float64(t_6 * abs(b)) * a) * Float64(Float64(t_6 * Float64(t_9 / Float64(Float64(Float64(abs(x_45_scale) * y_45_scale) * abs(x_45_scale)) * y_45_scale))) * 2.0)))) / t_2) / t_9) * Float64(y_45_scale * y_45_scale)) * abs(x_45_scale)) * abs(x_45_scale)); elseif (abs(x_45_scale) <= 1.45e+17) tmp = Float64(Float64(-sqrt(Float64(Float64(Float64(2.0 * t_10) * Float64(t_2 * Float64(abs(b) * Float64(-a)))) * Float64(Float64(sqrt((fma((a ^ 2.0), Float64(0.5 - t_11), Float64(t_4 * Float64(0.5 + t_11))) ^ 2.0)) + fma((a ^ 2.0), t_7, Float64(t_4 * (cos(t_0) ^ 2.0)))) / (abs(x_45_scale) ^ 2.0))))) / t_10); else tmp = Float64(0.25 * Float64(Float64(abs(b) * Float64(abs(x_45_scale) * sqrt(Float64(8.0 * Float64((a ^ 4.0) * Float64(sqrt((t_1 ^ 4.0)) + t_7)))))) / (a ^ 2.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[Sin[t$95$0], $MachinePrecision]}, Block[{t$95$2 = N[(N[Abs[b], $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$3 = N[(y$45$scale * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[Power[N[Abs[b], $MachinePrecision], 2.0], $MachinePrecision]}, Block[{t$95$5 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[((-a) * N[Abs[b], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[Power[t$95$1, 2.0], $MachinePrecision]}, Block[{t$95$8 = N[(N[Abs[b], $MachinePrecision] / N[(N[Abs[x$45$scale], $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$9 = N[(t$95$2 * 4.0), $MachinePrecision]}, Block[{t$95$10 = N[(N[(N[(4.0 * N[(a * N[Abs[b], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$3), $MachinePrecision] * N[(t$95$6 / t$95$3), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$11 = N[(0.5 * N[Cos[N[(0.011111111111111112 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[x$45$scale], $MachinePrecision], 2.3e-110], N[(N[(N[(N[(N[(N[Sqrt[N[(N[(t$95$5 * a + N[(t$95$8 * N[Abs[b], $MachinePrecision] + N[Abs[N[(N[(t$95$8 * N[Abs[b], $MachinePrecision]), $MachinePrecision] - N[(t$95$5 * a), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(t$95$6 * N[Abs[b], $MachinePrecision]), $MachinePrecision] * a), $MachinePrecision] * N[(N[(t$95$6 * N[(t$95$9 / N[(N[(N[(N[Abs[x$45$scale], $MachinePrecision] * y$45$scale), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / t$95$2), $MachinePrecision] / t$95$9), $MachinePrecision] * N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision], If[LessEqual[N[Abs[x$45$scale], $MachinePrecision], 1.45e+17], N[((-N[Sqrt[N[(N[(N[(2.0 * t$95$10), $MachinePrecision] * N[(t$95$2 * N[(N[Abs[b], $MachinePrecision] * (-a)), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[Sqrt[N[Power[N[(N[Power[a, 2.0], $MachinePrecision] * N[(0.5 - t$95$11), $MachinePrecision] + N[(t$95$4 * N[(0.5 + t$95$11), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision] + N[(N[Power[a, 2.0], $MachinePrecision] * t$95$7 + N[(t$95$4 * N[Power[N[Cos[t$95$0], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[N[Abs[x$45$scale], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$10), $MachinePrecision], N[(0.25 * N[(N[(N[Abs[b], $MachinePrecision] * N[(N[Abs[x$45$scale], $MachinePrecision] * N[Sqrt[N[(8.0 * N[(N[Power[a, 4.0], $MachinePrecision] * N[(N[Sqrt[N[Power[t$95$1, 4.0], $MachinePrecision]], $MachinePrecision] + t$95$7), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]]]
\begin{array}{l}
t_0 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
t_1 := \sin t\_0\\
t_2 := \left|b\right| \cdot a\\
t_3 := y-scale \cdot \left|x-scale\right|\\
t_4 := {\left(\left|b\right|\right)}^{2}\\
t_5 := \frac{a}{y-scale \cdot y-scale}\\
t_6 := \left(-a\right) \cdot \left|b\right|\\
t_7 := {t\_1}^{2}\\
t_8 := \frac{\left|b\right|}{\left|x-scale\right| \cdot \left|x-scale\right|}\\
t_9 := t\_2 \cdot 4\\
t_10 := \frac{4 \cdot \left(a \cdot \left|b\right|\right)}{t\_3} \cdot \frac{t\_6}{t\_3}\\
t_11 := 0.5 \cdot \cos \left(0.011111111111111112 \cdot \left(angle \cdot \pi\right)\right)\\
\mathbf{if}\;\left|x-scale\right| \leq 2.3 \cdot 10^{-110}:\\
\;\;\;\;\left(\left(\frac{\frac{\sqrt{\mathsf{fma}\left(t\_5, a, \mathsf{fma}\left(t\_8, \left|b\right|, \left|t\_8 \cdot \left|b\right| - t\_5 \cdot a\right|\right)\right) \cdot \left(\left(\left(t\_6 \cdot \left|b\right|\right) \cdot a\right) \cdot \left(\left(t\_6 \cdot \frac{t\_9}{\left(\left(\left|x-scale\right| \cdot y-scale\right) \cdot \left|x-scale\right|\right) \cdot y-scale}\right) \cdot 2\right)\right)}}{t\_2}}{t\_9} \cdot \left(y-scale \cdot y-scale\right)\right) \cdot \left|x-scale\right|\right) \cdot \left|x-scale\right|\\
\mathbf{elif}\;\left|x-scale\right| \leq 1.45 \cdot 10^{+17}:\\
\;\;\;\;\frac{-\sqrt{\left(\left(2 \cdot t\_10\right) \cdot \left(t\_2 \cdot \left(\left|b\right| \cdot \left(-a\right)\right)\right)\right) \cdot \frac{\sqrt{{\left(\mathsf{fma}\left({a}^{2}, 0.5 - t\_11, t\_4 \cdot \left(0.5 + t\_11\right)\right)\right)}^{2}} + \mathsf{fma}\left({a}^{2}, t\_7, t\_4 \cdot {\cos t\_0}^{2}\right)}{{\left(\left|x-scale\right|\right)}^{2}}}}{t\_10}\\
\mathbf{else}:\\
\;\;\;\;0.25 \cdot \frac{\left|b\right| \cdot \left(\left|x-scale\right| \cdot \sqrt{8 \cdot \left({a}^{4} \cdot \left(\sqrt{{t\_1}^{4}} + t\_7\right)\right)}\right)}{{a}^{2}}\\
\end{array}
if x-scale < 2.3000000000000001e-110Initial program 2.8%
Taylor expanded in angle around 0
Applied rewrites4.5%
Applied rewrites2.1%
Applied rewrites3.1%
Applied rewrites8.1%
if 2.3000000000000001e-110 < x-scale < 1.45e17Initial program 2.8%
Applied rewrites6.2%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f647.5%
lift-*.f64N/A
*-commutativeN/A
lower-*.f647.5%
lift-*.f64N/A
*-commutativeN/A
lift-*.f647.5%
Applied rewrites7.5%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f6411.3%
lift-*.f64N/A
*-commutativeN/A
lower-*.f6411.3%
lift-*.f64N/A
*-commutativeN/A
lift-*.f6411.3%
Applied rewrites11.3%
Taylor expanded in x-scale around 0
Applied rewrites5.9%
if 1.45e17 < x-scale Initial program 2.8%
Taylor expanded in b around -inf
Applied rewrites0.8%
Taylor expanded in x-scale around -inf
Applied rewrites1.5%
Taylor expanded in y-scale around 0
lower-sqrt.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-+.f64N/A
Applied rewrites4.8%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (fabs b) a))
(t_1 (sin (* 0.005555555555555556 (* angle PI))))
(t_2 (/ a (* y-scale y-scale)))
(t_3 (* (- a) (fabs b)))
(t_4 (/ (fabs b) (* (fabs x-scale) (fabs x-scale))))
(t_5 (* t_0 4.0)))
(if (<= (fabs x-scale) 1.05e-11)
(*
(*
(*
(/
(/
(sqrt
(*
(fma
t_2
a
(fma t_4 (fabs b) (fabs (- (* t_4 (fabs b)) (* t_2 a)))))
(*
(* (* t_3 (fabs b)) a)
(*
(*
t_3
(/
t_5
(* (* (* (fabs x-scale) y-scale) (fabs x-scale)) y-scale)))
2.0))))
t_0)
t_5)
(* y-scale y-scale))
(fabs x-scale))
(fabs x-scale))
(*
0.25
(/
(*
(fabs b)
(*
(fabs x-scale)
(sqrt
(* 8.0 (* (pow a 4.0) (+ (sqrt (pow t_1 4.0)) (pow t_1 2.0)))))))
(pow a 2.0))))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = fabs(b) * a;
double t_1 = sin((0.005555555555555556 * (angle * ((double) M_PI))));
double t_2 = a / (y_45_scale * y_45_scale);
double t_3 = -a * fabs(b);
double t_4 = fabs(b) / (fabs(x_45_scale) * fabs(x_45_scale));
double t_5 = t_0 * 4.0;
double tmp;
if (fabs(x_45_scale) <= 1.05e-11) {
tmp = ((((sqrt((fma(t_2, a, fma(t_4, fabs(b), fabs(((t_4 * fabs(b)) - (t_2 * a))))) * (((t_3 * fabs(b)) * a) * ((t_3 * (t_5 / (((fabs(x_45_scale) * y_45_scale) * fabs(x_45_scale)) * y_45_scale))) * 2.0)))) / t_0) / t_5) * (y_45_scale * y_45_scale)) * fabs(x_45_scale)) * fabs(x_45_scale);
} else {
tmp = 0.25 * ((fabs(b) * (fabs(x_45_scale) * sqrt((8.0 * (pow(a, 4.0) * (sqrt(pow(t_1, 4.0)) + pow(t_1, 2.0))))))) / pow(a, 2.0));
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(abs(b) * a) t_1 = sin(Float64(0.005555555555555556 * Float64(angle * pi))) t_2 = Float64(a / Float64(y_45_scale * y_45_scale)) t_3 = Float64(Float64(-a) * abs(b)) t_4 = Float64(abs(b) / Float64(abs(x_45_scale) * abs(x_45_scale))) t_5 = Float64(t_0 * 4.0) tmp = 0.0 if (abs(x_45_scale) <= 1.05e-11) tmp = Float64(Float64(Float64(Float64(Float64(sqrt(Float64(fma(t_2, a, fma(t_4, abs(b), abs(Float64(Float64(t_4 * abs(b)) - Float64(t_2 * a))))) * Float64(Float64(Float64(t_3 * abs(b)) * a) * Float64(Float64(t_3 * Float64(t_5 / Float64(Float64(Float64(abs(x_45_scale) * y_45_scale) * abs(x_45_scale)) * y_45_scale))) * 2.0)))) / t_0) / t_5) * Float64(y_45_scale * y_45_scale)) * abs(x_45_scale)) * abs(x_45_scale)); else tmp = Float64(0.25 * Float64(Float64(abs(b) * Float64(abs(x_45_scale) * sqrt(Float64(8.0 * Float64((a ^ 4.0) * Float64(sqrt((t_1 ^ 4.0)) + (t_1 ^ 2.0))))))) / (a ^ 2.0))); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[Abs[b], $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$1 = N[Sin[N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[((-a) * N[Abs[b], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[Abs[b], $MachinePrecision] / N[(N[Abs[x$45$scale], $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$0 * 4.0), $MachinePrecision]}, If[LessEqual[N[Abs[x$45$scale], $MachinePrecision], 1.05e-11], N[(N[(N[(N[(N[(N[Sqrt[N[(N[(t$95$2 * a + N[(t$95$4 * N[Abs[b], $MachinePrecision] + N[Abs[N[(N[(t$95$4 * N[Abs[b], $MachinePrecision]), $MachinePrecision] - N[(t$95$2 * a), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(t$95$3 * N[Abs[b], $MachinePrecision]), $MachinePrecision] * a), $MachinePrecision] * N[(N[(t$95$3 * N[(t$95$5 / N[(N[(N[(N[Abs[x$45$scale], $MachinePrecision] * y$45$scale), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / t$95$0), $MachinePrecision] / t$95$5), $MachinePrecision] * N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision], N[(0.25 * N[(N[(N[Abs[b], $MachinePrecision] * N[(N[Abs[x$45$scale], $MachinePrecision] * N[Sqrt[N[(8.0 * N[(N[Power[a, 4.0], $MachinePrecision] * N[(N[Sqrt[N[Power[t$95$1, 4.0], $MachinePrecision]], $MachinePrecision] + N[Power[t$95$1, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
t_0 := \left|b\right| \cdot a\\
t_1 := \sin \left(0.005555555555555556 \cdot \left(angle \cdot \pi\right)\right)\\
t_2 := \frac{a}{y-scale \cdot y-scale}\\
t_3 := \left(-a\right) \cdot \left|b\right|\\
t_4 := \frac{\left|b\right|}{\left|x-scale\right| \cdot \left|x-scale\right|}\\
t_5 := t\_0 \cdot 4\\
\mathbf{if}\;\left|x-scale\right| \leq 1.05 \cdot 10^{-11}:\\
\;\;\;\;\left(\left(\frac{\frac{\sqrt{\mathsf{fma}\left(t\_2, a, \mathsf{fma}\left(t\_4, \left|b\right|, \left|t\_4 \cdot \left|b\right| - t\_2 \cdot a\right|\right)\right) \cdot \left(\left(\left(t\_3 \cdot \left|b\right|\right) \cdot a\right) \cdot \left(\left(t\_3 \cdot \frac{t\_5}{\left(\left(\left|x-scale\right| \cdot y-scale\right) \cdot \left|x-scale\right|\right) \cdot y-scale}\right) \cdot 2\right)\right)}}{t\_0}}{t\_5} \cdot \left(y-scale \cdot y-scale\right)\right) \cdot \left|x-scale\right|\right) \cdot \left|x-scale\right|\\
\mathbf{else}:\\
\;\;\;\;0.25 \cdot \frac{\left|b\right| \cdot \left(\left|x-scale\right| \cdot \sqrt{8 \cdot \left({a}^{4} \cdot \left(\sqrt{{t\_1}^{4}} + {t\_1}^{2}\right)\right)}\right)}{{a}^{2}}\\
\end{array}
if x-scale < 1.0499999999999999e-11Initial program 2.8%
Taylor expanded in angle around 0
Applied rewrites4.5%
Applied rewrites2.1%
Applied rewrites3.1%
Applied rewrites8.1%
if 1.0499999999999999e-11 < x-scale Initial program 2.8%
Taylor expanded in b around -inf
Applied rewrites0.8%
Taylor expanded in x-scale around -inf
Applied rewrites1.5%
Taylor expanded in y-scale around 0
lower-sqrt.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-+.f64N/A
Applied rewrites4.8%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (- a) b))
(t_1 (* (fabs y-scale) (fabs y-scale)))
(t_2 (/ a t_1))
(t_3 (/ b (* x-scale x-scale)))
(t_4 (* (* b a) 4.0))
(t_5
(/
(/
(sqrt
(*
(fma t_2 a (fma t_3 b (fabs (- (* t_3 b) (* t_2 a)))))
(*
(* (* t_0 b) a)
(*
(*
t_0
(/
t_4
(* (* (* x-scale (fabs y-scale)) x-scale) (fabs y-scale))))
2.0))))
(* b a))
t_4)))
(if (<= (fabs y-scale) 1.55e-162)
(* (* (* t_5 (fabs y-scale)) (fabs y-scale)) (* x-scale x-scale))
(* (* (* t_5 t_1) x-scale) x-scale))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = -a * b;
double t_1 = fabs(y_45_scale) * fabs(y_45_scale);
double t_2 = a / t_1;
double t_3 = b / (x_45_scale * x_45_scale);
double t_4 = (b * a) * 4.0;
double t_5 = (sqrt((fma(t_2, a, fma(t_3, b, fabs(((t_3 * b) - (t_2 * a))))) * (((t_0 * b) * a) * ((t_0 * (t_4 / (((x_45_scale * fabs(y_45_scale)) * x_45_scale) * fabs(y_45_scale)))) * 2.0)))) / (b * a)) / t_4;
double tmp;
if (fabs(y_45_scale) <= 1.55e-162) {
tmp = ((t_5 * fabs(y_45_scale)) * fabs(y_45_scale)) * (x_45_scale * x_45_scale);
} else {
tmp = ((t_5 * t_1) * x_45_scale) * x_45_scale;
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(-a) * b) t_1 = Float64(abs(y_45_scale) * abs(y_45_scale)) t_2 = Float64(a / t_1) t_3 = Float64(b / Float64(x_45_scale * x_45_scale)) t_4 = Float64(Float64(b * a) * 4.0) t_5 = Float64(Float64(sqrt(Float64(fma(t_2, a, fma(t_3, b, abs(Float64(Float64(t_3 * b) - Float64(t_2 * a))))) * Float64(Float64(Float64(t_0 * b) * a) * Float64(Float64(t_0 * Float64(t_4 / Float64(Float64(Float64(x_45_scale * abs(y_45_scale)) * x_45_scale) * abs(y_45_scale)))) * 2.0)))) / Float64(b * a)) / t_4) tmp = 0.0 if (abs(y_45_scale) <= 1.55e-162) tmp = Float64(Float64(Float64(t_5 * abs(y_45_scale)) * abs(y_45_scale)) * Float64(x_45_scale * x_45_scale)); else tmp = Float64(Float64(Float64(t_5 * t_1) * x_45_scale) * x_45_scale); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[((-a) * b), $MachinePrecision]}, Block[{t$95$1 = N[(N[Abs[y$45$scale], $MachinePrecision] * N[Abs[y$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(a / t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(b * a), $MachinePrecision] * 4.0), $MachinePrecision]}, Block[{t$95$5 = N[(N[(N[Sqrt[N[(N[(t$95$2 * a + N[(t$95$3 * b + N[Abs[N[(N[(t$95$3 * b), $MachinePrecision] - N[(t$95$2 * a), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(t$95$0 * b), $MachinePrecision] * a), $MachinePrecision] * N[(N[(t$95$0 * N[(t$95$4 / N[(N[(N[(x$45$scale * N[Abs[y$45$scale], $MachinePrecision]), $MachinePrecision] * x$45$scale), $MachinePrecision] * N[Abs[y$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(b * a), $MachinePrecision]), $MachinePrecision] / t$95$4), $MachinePrecision]}, If[LessEqual[N[Abs[y$45$scale], $MachinePrecision], 1.55e-162], N[(N[(N[(t$95$5 * N[Abs[y$45$scale], $MachinePrecision]), $MachinePrecision] * N[Abs[y$45$scale], $MachinePrecision]), $MachinePrecision] * N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision], N[(N[(N[(t$95$5 * t$95$1), $MachinePrecision] * x$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision]]]]]]]]
\begin{array}{l}
t_0 := \left(-a\right) \cdot b\\
t_1 := \left|y-scale\right| \cdot \left|y-scale\right|\\
t_2 := \frac{a}{t\_1}\\
t_3 := \frac{b}{x-scale \cdot x-scale}\\
t_4 := \left(b \cdot a\right) \cdot 4\\
t_5 := \frac{\frac{\sqrt{\mathsf{fma}\left(t\_2, a, \mathsf{fma}\left(t\_3, b, \left|t\_3 \cdot b - t\_2 \cdot a\right|\right)\right) \cdot \left(\left(\left(t\_0 \cdot b\right) \cdot a\right) \cdot \left(\left(t\_0 \cdot \frac{t\_4}{\left(\left(x-scale \cdot \left|y-scale\right|\right) \cdot x-scale\right) \cdot \left|y-scale\right|}\right) \cdot 2\right)\right)}}{b \cdot a}}{t\_4}\\
\mathbf{if}\;\left|y-scale\right| \leq 1.55 \cdot 10^{-162}:\\
\;\;\;\;\left(\left(t\_5 \cdot \left|y-scale\right|\right) \cdot \left|y-scale\right|\right) \cdot \left(x-scale \cdot x-scale\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(t\_5 \cdot t\_1\right) \cdot x-scale\right) \cdot x-scale\\
\end{array}
if y-scale < 1.5499999999999999e-162Initial program 2.8%
Taylor expanded in angle around 0
Applied rewrites4.5%
Applied rewrites2.1%
Applied rewrites3.1%
Applied rewrites7.3%
if 1.5499999999999999e-162 < y-scale Initial program 2.8%
Taylor expanded in angle around 0
Applied rewrites4.5%
Applied rewrites2.1%
Applied rewrites3.1%
Applied rewrites8.1%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (- a) b))
(t_1 (* (fabs x-scale) (fabs x-scale)))
(t_2 (/ b t_1))
(t_3 (* (* (* (fabs x-scale) y-scale) (fabs x-scale)) y-scale))
(t_4 (/ a (* y-scale y-scale)))
(t_5 (* (* b a) 4.0)))
(if (<= (fabs x-scale) 3.7e-175)
(/
(*
0.25
(*
t_3
(sqrt
(*
(/
(*
(fma t_2 b (sqrt (* (pow b 4.0) (pow (fabs x-scale) -4.0))))
(pow b 4.0))
t_3)
8.0))))
(* b b))
(*
(*
(*
(/
(/
(sqrt
(*
(fma t_4 a (fma t_2 b (fabs (- (* t_2 b) (* t_4 a)))))
(* (* (* t_0 b) a) (* (* t_0 (/ t_5 t_3)) 2.0))))
(* b a))
t_5)
y-scale)
y-scale)
t_1))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = -a * b;
double t_1 = fabs(x_45_scale) * fabs(x_45_scale);
double t_2 = b / t_1;
double t_3 = ((fabs(x_45_scale) * y_45_scale) * fabs(x_45_scale)) * y_45_scale;
double t_4 = a / (y_45_scale * y_45_scale);
double t_5 = (b * a) * 4.0;
double tmp;
if (fabs(x_45_scale) <= 3.7e-175) {
tmp = (0.25 * (t_3 * sqrt((((fma(t_2, b, sqrt((pow(b, 4.0) * pow(fabs(x_45_scale), -4.0)))) * pow(b, 4.0)) / t_3) * 8.0)))) / (b * b);
} else {
tmp = ((((sqrt((fma(t_4, a, fma(t_2, b, fabs(((t_2 * b) - (t_4 * a))))) * (((t_0 * b) * a) * ((t_0 * (t_5 / t_3)) * 2.0)))) / (b * a)) / t_5) * y_45_scale) * y_45_scale) * t_1;
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(-a) * b) t_1 = Float64(abs(x_45_scale) * abs(x_45_scale)) t_2 = Float64(b / t_1) t_3 = Float64(Float64(Float64(abs(x_45_scale) * y_45_scale) * abs(x_45_scale)) * y_45_scale) t_4 = Float64(a / Float64(y_45_scale * y_45_scale)) t_5 = Float64(Float64(b * a) * 4.0) tmp = 0.0 if (abs(x_45_scale) <= 3.7e-175) tmp = Float64(Float64(0.25 * Float64(t_3 * sqrt(Float64(Float64(Float64(fma(t_2, b, sqrt(Float64((b ^ 4.0) * (abs(x_45_scale) ^ -4.0)))) * (b ^ 4.0)) / t_3) * 8.0)))) / Float64(b * b)); else tmp = Float64(Float64(Float64(Float64(Float64(sqrt(Float64(fma(t_4, a, fma(t_2, b, abs(Float64(Float64(t_2 * b) - Float64(t_4 * a))))) * Float64(Float64(Float64(t_0 * b) * a) * Float64(Float64(t_0 * Float64(t_5 / t_3)) * 2.0)))) / Float64(b * a)) / t_5) * y_45_scale) * y_45_scale) * t_1); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[((-a) * b), $MachinePrecision]}, Block[{t$95$1 = N[(N[Abs[x$45$scale], $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(b / t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(N[Abs[x$45$scale], $MachinePrecision] * y$45$scale), $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] * y$45$scale), $MachinePrecision]}, Block[{t$95$4 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(N[(b * a), $MachinePrecision] * 4.0), $MachinePrecision]}, If[LessEqual[N[Abs[x$45$scale], $MachinePrecision], 3.7e-175], N[(N[(0.25 * N[(t$95$3 * N[Sqrt[N[(N[(N[(N[(t$95$2 * b + N[Sqrt[N[(N[Power[b, 4.0], $MachinePrecision] * N[Power[N[Abs[x$45$scale], $MachinePrecision], -4.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Power[b, 4.0], $MachinePrecision]), $MachinePrecision] / t$95$3), $MachinePrecision] * 8.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(b * b), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(N[(N[Sqrt[N[(N[(t$95$4 * a + N[(t$95$2 * b + N[Abs[N[(N[(t$95$2 * b), $MachinePrecision] - N[(t$95$4 * a), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(t$95$0 * b), $MachinePrecision] * a), $MachinePrecision] * N[(N[(t$95$0 * N[(t$95$5 / t$95$3), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(b * a), $MachinePrecision]), $MachinePrecision] / t$95$5), $MachinePrecision] * y$45$scale), $MachinePrecision] * y$45$scale), $MachinePrecision] * t$95$1), $MachinePrecision]]]]]]]]
\begin{array}{l}
t_0 := \left(-a\right) \cdot b\\
t_1 := \left|x-scale\right| \cdot \left|x-scale\right|\\
t_2 := \frac{b}{t\_1}\\
t_3 := \left(\left(\left|x-scale\right| \cdot y-scale\right) \cdot \left|x-scale\right|\right) \cdot y-scale\\
t_4 := \frac{a}{y-scale \cdot y-scale}\\
t_5 := \left(b \cdot a\right) \cdot 4\\
\mathbf{if}\;\left|x-scale\right| \leq 3.7 \cdot 10^{-175}:\\
\;\;\;\;\frac{0.25 \cdot \left(t\_3 \cdot \sqrt{\frac{\mathsf{fma}\left(t\_2, b, \sqrt{{b}^{4} \cdot {\left(\left|x-scale\right|\right)}^{-4}}\right) \cdot {b}^{4}}{t\_3} \cdot 8}\right)}{b \cdot b}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\frac{\frac{\sqrt{\mathsf{fma}\left(t\_4, a, \mathsf{fma}\left(t\_2, b, \left|t\_2 \cdot b - t\_4 \cdot a\right|\right)\right) \cdot \left(\left(\left(t\_0 \cdot b\right) \cdot a\right) \cdot \left(\left(t\_0 \cdot \frac{t\_5}{t\_3}\right) \cdot 2\right)\right)}}{b \cdot a}}{t\_5} \cdot y-scale\right) \cdot y-scale\right) \cdot t\_1\\
\end{array}
if x-scale < 3.7e-175Initial program 2.8%
Taylor expanded in a around 0
Applied rewrites1.2%
Taylor expanded in angle around 0
lower-/.f64N/A
Applied rewrites1.0%
Applied rewrites2.6%
if 3.7e-175 < x-scale Initial program 2.8%
Taylor expanded in angle around 0
Applied rewrites4.5%
Applied rewrites2.1%
Applied rewrites3.1%
Applied rewrites7.3%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* (* x-scale y-scale) x-scale) y-scale)))
(/
(*
0.25
(*
t_0
(sqrt
(*
(/
(*
(fma
(/ b (* x-scale x-scale))
b
(sqrt (* (pow b 4.0) (pow x-scale -4.0))))
(pow b 4.0))
t_0)
8.0))))
(* b b))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = ((x_45_scale * y_45_scale) * x_45_scale) * y_45_scale;
return (0.25 * (t_0 * sqrt((((fma((b / (x_45_scale * x_45_scale)), b, sqrt((pow(b, 4.0) * pow(x_45_scale, -4.0)))) * pow(b, 4.0)) / t_0) * 8.0)))) / (b * b);
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(Float64(x_45_scale * y_45_scale) * x_45_scale) * y_45_scale) return Float64(Float64(0.25 * Float64(t_0 * sqrt(Float64(Float64(Float64(fma(Float64(b / Float64(x_45_scale * x_45_scale)), b, sqrt(Float64((b ^ 4.0) * (x_45_scale ^ -4.0)))) * (b ^ 4.0)) / t_0) * 8.0)))) / Float64(b * b)) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(N[(x$45$scale * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * y$45$scale), $MachinePrecision]}, N[(N[(0.25 * N[(t$95$0 * N[Sqrt[N[(N[(N[(N[(N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * b + N[Sqrt[N[(N[Power[b, 4.0], $MachinePrecision] * N[Power[x$45$scale, -4.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Power[b, 4.0], $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision] * 8.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(b * b), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
t_0 := \left(\left(x-scale \cdot y-scale\right) \cdot x-scale\right) \cdot y-scale\\
\frac{0.25 \cdot \left(t\_0 \cdot \sqrt{\frac{\mathsf{fma}\left(\frac{b}{x-scale \cdot x-scale}, b, \sqrt{{b}^{4} \cdot {x-scale}^{-4}}\right) \cdot {b}^{4}}{t\_0} \cdot 8}\right)}{b \cdot b}
\end{array}
Initial program 2.8%
Taylor expanded in a around 0
Applied rewrites1.2%
Taylor expanded in angle around 0
lower-/.f64N/A
Applied rewrites1.0%
Applied rewrites2.6%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(*
0.25
(*
(* x-scale x-scale)
(/
(*
(sqrt
(*
(/
(*
(fma
(/ b (* x-scale x-scale))
b
(sqrt (* (pow b 4.0) (pow x-scale -4.0))))
(pow b 4.0))
(* (* (* x-scale y-scale) x-scale) y-scale))
8.0))
(* y-scale y-scale))
(* b b)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return 0.25 * ((x_45_scale * x_45_scale) * ((sqrt((((fma((b / (x_45_scale * x_45_scale)), b, sqrt((pow(b, 4.0) * pow(x_45_scale, -4.0)))) * pow(b, 4.0)) / (((x_45_scale * y_45_scale) * x_45_scale) * y_45_scale)) * 8.0)) * (y_45_scale * y_45_scale)) / (b * b)));
}
function code(a, b, angle, x_45_scale, y_45_scale) return Float64(0.25 * Float64(Float64(x_45_scale * x_45_scale) * Float64(Float64(sqrt(Float64(Float64(Float64(fma(Float64(b / Float64(x_45_scale * x_45_scale)), b, sqrt(Float64((b ^ 4.0) * (x_45_scale ^ -4.0)))) * (b ^ 4.0)) / Float64(Float64(Float64(x_45_scale * y_45_scale) * x_45_scale) * y_45_scale)) * 8.0)) * Float64(y_45_scale * y_45_scale)) / Float64(b * b)))) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := N[(0.25 * N[(N[(x$45$scale * x$45$scale), $MachinePrecision] * N[(N[(N[Sqrt[N[(N[(N[(N[(N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * b + N[Sqrt[N[(N[Power[b, 4.0], $MachinePrecision] * N[Power[x$45$scale, -4.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Power[b, 4.0], $MachinePrecision]), $MachinePrecision] / N[(N[(N[(x$45$scale * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * y$45$scale), $MachinePrecision]), $MachinePrecision] * 8.0), $MachinePrecision]], $MachinePrecision] * N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] / N[(b * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
0.25 \cdot \left(\left(x-scale \cdot x-scale\right) \cdot \frac{\sqrt{\frac{\mathsf{fma}\left(\frac{b}{x-scale \cdot x-scale}, b, \sqrt{{b}^{4} \cdot {x-scale}^{-4}}\right) \cdot {b}^{4}}{\left(\left(x-scale \cdot y-scale\right) \cdot x-scale\right) \cdot y-scale} \cdot 8} \cdot \left(y-scale \cdot y-scale\right)}{b \cdot b}\right)
Initial program 2.8%
Taylor expanded in a around 0
Applied rewrites1.2%
Taylor expanded in angle around 0
lower-/.f64N/A
Applied rewrites1.0%
Applied rewrites1.6%
herbie shell --seed 2025209
(FPCore (a b angle x-scale y-scale)
:name "a from scale-rotated-ellipse"
:precision binary64
(/ (- (sqrt (* (* (* 2.0 (/ (* 4.0 (* (* b a) (* b (- a)))) (pow (* x-scale y-scale) 2.0))) (* (* b a) (* b (- a)))) (+ (+ (/ (/ (+ (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)) (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))))))) (/ (* 4.0 (* (* b a) (* b (- a)))) (pow (* x-scale y-scale) 2.0))))