
(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 14 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 x-scale) y-scale))
(t_1 (* 0.011111111111111112 (* angle PI)))
(t_2 (/ 1.0 (pow y-scale 2.0)))
(t_3 (pow (fabs x-scale) 2.0))
(t_4 (* y-scale (fabs x-scale)))
(t_5 (* (fabs b) a))
(t_6 (* (* t_5 (fabs b)) (- a)))
(t_7 (* t_6 8.0))
(t_8 (* 4.0 t_5))
(t_9 (cos t_1))
(t_10 (/ t_9 t_3))
(t_11 (* 0.5 (/ t_9 (pow y-scale 2.0))))
(t_12 (* 0.5 t_9))
(t_13 (- 0.5 (* 1.0 0.5)))
(t_14
(/
(/
(fma
(* (fabs b) (fabs b))
(fma 1.0 0.5 0.5)
(* (* t_13 a) a))
(fabs x-scale))
(fabs x-scale)))
(t_15
(/
(fma
(* t_13 (fabs b))
(fabs b)
(* (* a a) (fma 1.0 0.5 0.5)))
(* y-scale y-scale)))
(t_16
(fma
(pow a 2.0)
(- 0.5 t_12)
(* (pow (fabs b) 2.0) (+ 0.5 t_12))))
(t_17 (fabs t_0))
(t_18 (/ 1.0 t_3)))
(if (<= (fabs x-scale) 1.12e-176)
(*
(*
(/
(/
(/
(sqrt (* (* t_7 (/ (+ (sqrt (pow t_16 2.0)) t_16) t_3)) t_6))
t_17)
t_8)
t_5)
t_4)
t_4)
(if (<= (fabs x-scale) 0.031)
(*
(*
(*
0.25
(/
(*
(fabs b)
(sqrt
(*
8.0
(-
(+
(sqrt
(+
(/ (pow (sin t_1) 2.0) (* t_3 (pow y-scale 2.0)))
(pow
(- (* 0.5 t_2) (fma 0.5 t_18 (fma 0.5 t_10 t_11)))
2.0)))
(fma 0.5 t_18 (fma 0.5 t_2 (* 0.5 t_10))))
t_11))))
t_17))
t_4)
t_4)
(*
(*
(/
(/
(/
(sqrt
(*
(*
t_7
(+
(hypot
(- t_15 t_14)
(/
(*
(sin (* (* 2.0 PI) (* angle 0.005555555555555556)))
(* (- (fabs b) a) (+ (fabs b) a)))
t_0))
(+ t_14 t_15)))
t_6))
t_17)
t_8)
t_5)
t_4)
t_4)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = fabs(x_45_scale) * y_45_scale;
double t_1 = 0.011111111111111112 * (angle * ((double) M_PI));
double t_2 = 1.0 / pow(y_45_scale, 2.0);
double t_3 = pow(fabs(x_45_scale), 2.0);
double t_4 = y_45_scale * fabs(x_45_scale);
double t_5 = fabs(b) * a;
double t_6 = (t_5 * fabs(b)) * -a;
double t_7 = t_6 * 8.0;
double t_8 = 4.0 * t_5;
double t_9 = cos(t_1);
double t_10 = t_9 / t_3;
double t_11 = 0.5 * (t_9 / pow(y_45_scale, 2.0));
double t_12 = 0.5 * t_9;
double t_13 = 0.5 - (1.0 * 0.5);
double t_14 = (fma((fabs(b) * fabs(b)), fma(1.0, 0.5, 0.5), ((t_13 * a) * a)) / fabs(x_45_scale)) / fabs(x_45_scale);
double t_15 = fma((t_13 * fabs(b)), fabs(b), ((a * a) * fma(1.0, 0.5, 0.5))) / (y_45_scale * y_45_scale);
double t_16 = fma(pow(a, 2.0), (0.5 - t_12), (pow(fabs(b), 2.0) * (0.5 + t_12)));
double t_17 = fabs(t_0);
double t_18 = 1.0 / t_3;
double tmp;
if (fabs(x_45_scale) <= 1.12e-176) {
tmp = ((((sqrt(((t_7 * ((sqrt(pow(t_16, 2.0)) + t_16) / t_3)) * t_6)) / t_17) / t_8) / t_5) * t_4) * t_4;
} else if (fabs(x_45_scale) <= 0.031) {
tmp = ((0.25 * ((fabs(b) * sqrt((8.0 * ((sqrt(((pow(sin(t_1), 2.0) / (t_3 * pow(y_45_scale, 2.0))) + pow(((0.5 * t_2) - fma(0.5, t_18, fma(0.5, t_10, t_11))), 2.0))) + fma(0.5, t_18, fma(0.5, t_2, (0.5 * t_10)))) - t_11)))) / t_17)) * t_4) * t_4;
} else {
tmp = ((((sqrt(((t_7 * (hypot((t_15 - t_14), ((sin(((2.0 * ((double) M_PI)) * (angle * 0.005555555555555556))) * ((fabs(b) - a) * (fabs(b) + a))) / t_0)) + (t_14 + t_15))) * t_6)) / t_17) / t_8) / t_5) * t_4) * t_4;
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(abs(x_45_scale) * y_45_scale) t_1 = Float64(0.011111111111111112 * Float64(angle * pi)) t_2 = Float64(1.0 / (y_45_scale ^ 2.0)) t_3 = abs(x_45_scale) ^ 2.0 t_4 = Float64(y_45_scale * abs(x_45_scale)) t_5 = Float64(abs(b) * a) t_6 = Float64(Float64(t_5 * abs(b)) * Float64(-a)) t_7 = Float64(t_6 * 8.0) t_8 = Float64(4.0 * t_5) t_9 = cos(t_1) t_10 = Float64(t_9 / t_3) t_11 = Float64(0.5 * Float64(t_9 / (y_45_scale ^ 2.0))) t_12 = Float64(0.5 * t_9) t_13 = Float64(0.5 - Float64(1.0 * 0.5)) t_14 = Float64(Float64(fma(Float64(abs(b) * abs(b)), fma(1.0, 0.5, 0.5), Float64(Float64(t_13 * a) * a)) / abs(x_45_scale)) / abs(x_45_scale)) t_15 = Float64(fma(Float64(t_13 * abs(b)), abs(b), Float64(Float64(a * a) * fma(1.0, 0.5, 0.5))) / Float64(y_45_scale * y_45_scale)) t_16 = fma((a ^ 2.0), Float64(0.5 - t_12), Float64((abs(b) ^ 2.0) * Float64(0.5 + t_12))) t_17 = abs(t_0) t_18 = Float64(1.0 / t_3) tmp = 0.0 if (abs(x_45_scale) <= 1.12e-176) tmp = Float64(Float64(Float64(Float64(Float64(sqrt(Float64(Float64(t_7 * Float64(Float64(sqrt((t_16 ^ 2.0)) + t_16) / t_3)) * t_6)) / t_17) / t_8) / t_5) * t_4) * t_4); elseif (abs(x_45_scale) <= 0.031) tmp = Float64(Float64(Float64(0.25 * Float64(Float64(abs(b) * sqrt(Float64(8.0 * Float64(Float64(sqrt(Float64(Float64((sin(t_1) ^ 2.0) / Float64(t_3 * (y_45_scale ^ 2.0))) + (Float64(Float64(0.5 * t_2) - fma(0.5, t_18, fma(0.5, t_10, t_11))) ^ 2.0))) + fma(0.5, t_18, fma(0.5, t_2, Float64(0.5 * t_10)))) - t_11)))) / t_17)) * t_4) * t_4); else tmp = Float64(Float64(Float64(Float64(Float64(sqrt(Float64(Float64(t_7 * Float64(hypot(Float64(t_15 - t_14), Float64(Float64(sin(Float64(Float64(2.0 * pi) * Float64(angle * 0.005555555555555556))) * Float64(Float64(abs(b) - a) * Float64(abs(b) + a))) / t_0)) + Float64(t_14 + t_15))) * t_6)) / t_17) / t_8) / t_5) * t_4) * t_4); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[Abs[x$45$scale], $MachinePrecision] * y$45$scale), $MachinePrecision]}, Block[{t$95$1 = N[(0.011111111111111112 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(1.0 / N[Power[y$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[Power[N[Abs[x$45$scale], $MachinePrecision], 2.0], $MachinePrecision]}, Block[{t$95$4 = N[(y$45$scale * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(N[Abs[b], $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$6 = N[(N[(t$95$5 * N[Abs[b], $MachinePrecision]), $MachinePrecision] * (-a)), $MachinePrecision]}, Block[{t$95$7 = N[(t$95$6 * 8.0), $MachinePrecision]}, Block[{t$95$8 = N[(4.0 * t$95$5), $MachinePrecision]}, Block[{t$95$9 = N[Cos[t$95$1], $MachinePrecision]}, Block[{t$95$10 = N[(t$95$9 / t$95$3), $MachinePrecision]}, Block[{t$95$11 = N[(0.5 * N[(t$95$9 / N[Power[y$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$12 = N[(0.5 * t$95$9), $MachinePrecision]}, Block[{t$95$13 = N[(0.5 - N[(1.0 * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$14 = N[(N[(N[(N[(N[Abs[b], $MachinePrecision] * N[Abs[b], $MachinePrecision]), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision] + N[(N[(t$95$13 * a), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$15 = N[(N[(N[(t$95$13 * N[Abs[b], $MachinePrecision]), $MachinePrecision] * N[Abs[b], $MachinePrecision] + N[(N[(a * a), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$16 = N[(N[Power[a, 2.0], $MachinePrecision] * N[(0.5 - t$95$12), $MachinePrecision] + N[(N[Power[N[Abs[b], $MachinePrecision], 2.0], $MachinePrecision] * N[(0.5 + t$95$12), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$17 = N[Abs[t$95$0], $MachinePrecision]}, Block[{t$95$18 = N[(1.0 / t$95$3), $MachinePrecision]}, If[LessEqual[N[Abs[x$45$scale], $MachinePrecision], 1.12e-176], N[(N[(N[(N[(N[(N[Sqrt[N[(N[(t$95$7 * N[(N[(N[Sqrt[N[Power[t$95$16, 2.0], $MachinePrecision]], $MachinePrecision] + t$95$16), $MachinePrecision] / t$95$3), $MachinePrecision]), $MachinePrecision] * t$95$6), $MachinePrecision]], $MachinePrecision] / t$95$17), $MachinePrecision] / t$95$8), $MachinePrecision] / t$95$5), $MachinePrecision] * t$95$4), $MachinePrecision] * t$95$4), $MachinePrecision], If[LessEqual[N[Abs[x$45$scale], $MachinePrecision], 0.031], N[(N[(N[(0.25 * N[(N[(N[Abs[b], $MachinePrecision] * N[Sqrt[N[(8.0 * N[(N[(N[Sqrt[N[(N[(N[Power[N[Sin[t$95$1], $MachinePrecision], 2.0], $MachinePrecision] / N[(t$95$3 * N[Power[y$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[Power[N[(N[(0.5 * t$95$2), $MachinePrecision] - N[(0.5 * t$95$18 + N[(0.5 * t$95$10 + t$95$11), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[(0.5 * t$95$18 + N[(0.5 * t$95$2 + N[(0.5 * t$95$10), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - t$95$11), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t$95$17), $MachinePrecision]), $MachinePrecision] * t$95$4), $MachinePrecision] * t$95$4), $MachinePrecision], N[(N[(N[(N[(N[(N[Sqrt[N[(N[(t$95$7 * N[(N[Sqrt[N[(t$95$15 - t$95$14), $MachinePrecision] ^ 2 + N[(N[(N[Sin[N[(N[(2.0 * Pi), $MachinePrecision] * N[(angle * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(N[(N[Abs[b], $MachinePrecision] - a), $MachinePrecision] * N[(N[Abs[b], $MachinePrecision] + a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision] ^ 2], $MachinePrecision] + N[(t$95$14 + t$95$15), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$6), $MachinePrecision]], $MachinePrecision] / t$95$17), $MachinePrecision] / t$95$8), $MachinePrecision] / t$95$5), $MachinePrecision] * t$95$4), $MachinePrecision] * t$95$4), $MachinePrecision]]]]]]]]]]]]]]]]]]]]]]
\begin{array}{l}
t_0 := \left|x-scale\right| \cdot y-scale\\
t_1 := 0.011111111111111112 \cdot \left(angle \cdot \pi\right)\\
t_2 := \frac{1}{{y-scale}^{2}}\\
t_3 := {\left(\left|x-scale\right|\right)}^{2}\\
t_4 := y-scale \cdot \left|x-scale\right|\\
t_5 := \left|b\right| \cdot a\\
t_6 := \left(t\_5 \cdot \left|b\right|\right) \cdot \left(-a\right)\\
t_7 := t\_6 \cdot 8\\
t_8 := 4 \cdot t\_5\\
t_9 := \cos t\_1\\
t_10 := \frac{t\_9}{t\_3}\\
t_11 := 0.5 \cdot \frac{t\_9}{{y-scale}^{2}}\\
t_12 := 0.5 \cdot t\_9\\
t_13 := 0.5 - 1 \cdot 0.5\\
t_14 := \frac{\frac{\mathsf{fma}\left(\left|b\right| \cdot \left|b\right|, \mathsf{fma}\left(1, 0.5, 0.5\right), \left(t\_13 \cdot a\right) \cdot a\right)}{\left|x-scale\right|}}{\left|x-scale\right|}\\
t_15 := \frac{\mathsf{fma}\left(t\_13 \cdot \left|b\right|, \left|b\right|, \left(a \cdot a\right) \cdot \mathsf{fma}\left(1, 0.5, 0.5\right)\right)}{y-scale \cdot y-scale}\\
t_16 := \mathsf{fma}\left({a}^{2}, 0.5 - t\_12, {\left(\left|b\right|\right)}^{2} \cdot \left(0.5 + t\_12\right)\right)\\
t_17 := \left|t\_0\right|\\
t_18 := \frac{1}{t\_3}\\
\mathbf{if}\;\left|x-scale\right| \leq 1.12 \cdot 10^{-176}:\\
\;\;\;\;\left(\frac{\frac{\frac{\sqrt{\left(t\_7 \cdot \frac{\sqrt{{t\_16}^{2}} + t\_16}{t\_3}\right) \cdot t\_6}}{t\_17}}{t\_8}}{t\_5} \cdot t\_4\right) \cdot t\_4\\
\mathbf{elif}\;\left|x-scale\right| \leq 0.031:\\
\;\;\;\;\left(\left(0.25 \cdot \frac{\left|b\right| \cdot \sqrt{8 \cdot \left(\left(\sqrt{\frac{{\sin t\_1}^{2}}{t\_3 \cdot {y-scale}^{2}} + {\left(0.5 \cdot t\_2 - \mathsf{fma}\left(0.5, t\_18, \mathsf{fma}\left(0.5, t\_10, t\_11\right)\right)\right)}^{2}} + \mathsf{fma}\left(0.5, t\_18, \mathsf{fma}\left(0.5, t\_2, 0.5 \cdot t\_10\right)\right)\right) - t\_11\right)}}{t\_17}\right) \cdot t\_4\right) \cdot t\_4\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\frac{\frac{\sqrt{\left(t\_7 \cdot \left(\mathsf{hypot}\left(t\_15 - t\_14, \frac{\sin \left(\left(2 \cdot \pi\right) \cdot \left(angle \cdot 0.005555555555555556\right)\right) \cdot \left(\left(\left|b\right| - a\right) \cdot \left(\left|b\right| + a\right)\right)}{t\_0}\right) + \left(t\_14 + t\_15\right)\right)\right) \cdot t\_6}}{t\_17}}{t\_8}}{t\_5} \cdot t\_4\right) \cdot t\_4\\
\end{array}
if x-scale < 1.1199999999999999e-176Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites14.5%
Taylor expanded in angle around 0
Applied rewrites14.5%
Taylor expanded in x-scale around 0
Applied rewrites10.2%
if 1.1199999999999999e-176 < x-scale < 0.031Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in b around inf
Applied rewrites1.6%
Taylor expanded in a around 0
Applied rewrites7.0%
if 0.031 < x-scale Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites14.5%
Taylor expanded in angle around 0
Applied rewrites14.5%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites14.5%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites16.5%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* (* b a) b) (- a)))
(t_1 (* t_0 8.0))
(t_2 (- 0.5 (* 1.0 0.5)))
(t_3 (* t_2 b))
(t_4 (* t_2 a))
(t_5
(/
(fma t_4 a (* (* b b) (fma 1.0 0.5 0.5)))
(* (fabs x-scale) (fabs x-scale))))
(t_6 (* (fabs x-scale) y-scale))
(t_7 (fabs t_6))
(t_8 (* y-scale (fabs x-scale)))
(t_9
(/
(/ (fma (* b b) (fma 1.0 0.5 0.5) (* t_4 a)) (fabs x-scale))
(fabs x-scale)))
(t_10
(/
(/ (fma (* a a) (fma 1.0 0.5 0.5) (* t_3 b)) y-scale)
y-scale))
(t_11
(/
(fma t_3 b (* (* a a) (fma 1.0 0.5 0.5)))
(* y-scale y-scale)))
(t_12
(/
(*
(sin (* (* 2.0 PI) (* angle 0.005555555555555556)))
(* (- b a) (+ b a)))
t_6))
(t_13 (* 4.0 (* b a))))
(if (<= (fabs x-scale) 1e+171)
(*
(*
(/
(/
(/
(sqrt
(* (* t_1 (+ (hypot (- t_10 t_5) t_12) (+ t_5 t_10))) t_0))
t_7)
t_13)
(* b a))
t_8)
t_8)
(*
(*
(/
(/
(/
(sqrt
(* (* t_1 (+ (hypot (- t_11 t_9) t_12) (+ t_9 t_11))) t_0))
t_7)
t_13)
(* b a))
t_8)
t_8))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = ((b * a) * b) * -a;
double t_1 = t_0 * 8.0;
double t_2 = 0.5 - (1.0 * 0.5);
double t_3 = t_2 * b;
double t_4 = t_2 * a;
double t_5 = fma(t_4, a, ((b * b) * fma(1.0, 0.5, 0.5))) / (fabs(x_45_scale) * fabs(x_45_scale));
double t_6 = fabs(x_45_scale) * y_45_scale;
double t_7 = fabs(t_6);
double t_8 = y_45_scale * fabs(x_45_scale);
double t_9 = (fma((b * b), fma(1.0, 0.5, 0.5), (t_4 * a)) / fabs(x_45_scale)) / fabs(x_45_scale);
double t_10 = (fma((a * a), fma(1.0, 0.5, 0.5), (t_3 * b)) / y_45_scale) / y_45_scale;
double t_11 = fma(t_3, b, ((a * a) * fma(1.0, 0.5, 0.5))) / (y_45_scale * y_45_scale);
double t_12 = (sin(((2.0 * ((double) M_PI)) * (angle * 0.005555555555555556))) * ((b - a) * (b + a))) / t_6;
double t_13 = 4.0 * (b * a);
double tmp;
if (fabs(x_45_scale) <= 1e+171) {
tmp = ((((sqrt(((t_1 * (hypot((t_10 - t_5), t_12) + (t_5 + t_10))) * t_0)) / t_7) / t_13) / (b * a)) * t_8) * t_8;
} else {
tmp = ((((sqrt(((t_1 * (hypot((t_11 - t_9), t_12) + (t_9 + t_11))) * t_0)) / t_7) / t_13) / (b * a)) * t_8) * t_8;
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(Float64(b * a) * b) * Float64(-a)) t_1 = Float64(t_0 * 8.0) t_2 = Float64(0.5 - Float64(1.0 * 0.5)) t_3 = Float64(t_2 * b) t_4 = Float64(t_2 * a) t_5 = Float64(fma(t_4, a, Float64(Float64(b * b) * fma(1.0, 0.5, 0.5))) / Float64(abs(x_45_scale) * abs(x_45_scale))) t_6 = Float64(abs(x_45_scale) * y_45_scale) t_7 = abs(t_6) t_8 = Float64(y_45_scale * abs(x_45_scale)) t_9 = Float64(Float64(fma(Float64(b * b), fma(1.0, 0.5, 0.5), Float64(t_4 * a)) / abs(x_45_scale)) / abs(x_45_scale)) t_10 = Float64(Float64(fma(Float64(a * a), fma(1.0, 0.5, 0.5), Float64(t_3 * b)) / y_45_scale) / y_45_scale) t_11 = Float64(fma(t_3, b, Float64(Float64(a * a) * fma(1.0, 0.5, 0.5))) / Float64(y_45_scale * y_45_scale)) t_12 = Float64(Float64(sin(Float64(Float64(2.0 * pi) * Float64(angle * 0.005555555555555556))) * Float64(Float64(b - a) * Float64(b + a))) / t_6) t_13 = Float64(4.0 * Float64(b * a)) tmp = 0.0 if (abs(x_45_scale) <= 1e+171) tmp = Float64(Float64(Float64(Float64(Float64(sqrt(Float64(Float64(t_1 * Float64(hypot(Float64(t_10 - t_5), t_12) + Float64(t_5 + t_10))) * t_0)) / t_7) / t_13) / Float64(b * a)) * t_8) * t_8); else tmp = Float64(Float64(Float64(Float64(Float64(sqrt(Float64(Float64(t_1 * Float64(hypot(Float64(t_11 - t_9), t_12) + Float64(t_9 + t_11))) * t_0)) / t_7) / t_13) / Float64(b * a)) * t_8) * t_8); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(N[(b * a), $MachinePrecision] * b), $MachinePrecision] * (-a)), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 * 8.0), $MachinePrecision]}, Block[{t$95$2 = N[(0.5 - N[(1.0 * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(t$95$2 * b), $MachinePrecision]}, Block[{t$95$4 = N[(t$95$2 * a), $MachinePrecision]}, Block[{t$95$5 = N[(N[(t$95$4 * a + N[(N[(b * b), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[Abs[x$45$scale], $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(N[Abs[x$45$scale], $MachinePrecision] * y$45$scale), $MachinePrecision]}, Block[{t$95$7 = N[Abs[t$95$6], $MachinePrecision]}, Block[{t$95$8 = N[(y$45$scale * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$9 = N[(N[(N[(N[(b * b), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision] + N[(t$95$4 * a), $MachinePrecision]), $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$10 = N[(N[(N[(N[(a * a), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision] + N[(t$95$3 * b), $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$11 = N[(N[(t$95$3 * b + N[(N[(a * a), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$12 = N[(N[(N[Sin[N[(N[(2.0 * Pi), $MachinePrecision] * N[(angle * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(N[(b - a), $MachinePrecision] * N[(b + a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$6), $MachinePrecision]}, Block[{t$95$13 = N[(4.0 * N[(b * a), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[x$45$scale], $MachinePrecision], 1e+171], N[(N[(N[(N[(N[(N[Sqrt[N[(N[(t$95$1 * N[(N[Sqrt[N[(t$95$10 - t$95$5), $MachinePrecision] ^ 2 + t$95$12 ^ 2], $MachinePrecision] + N[(t$95$5 + t$95$10), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]], $MachinePrecision] / t$95$7), $MachinePrecision] / t$95$13), $MachinePrecision] / N[(b * a), $MachinePrecision]), $MachinePrecision] * t$95$8), $MachinePrecision] * t$95$8), $MachinePrecision], N[(N[(N[(N[(N[(N[Sqrt[N[(N[(t$95$1 * N[(N[Sqrt[N[(t$95$11 - t$95$9), $MachinePrecision] ^ 2 + t$95$12 ^ 2], $MachinePrecision] + N[(t$95$9 + t$95$11), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]], $MachinePrecision] / t$95$7), $MachinePrecision] / t$95$13), $MachinePrecision] / N[(b * a), $MachinePrecision]), $MachinePrecision] * t$95$8), $MachinePrecision] * t$95$8), $MachinePrecision]]]]]]]]]]]]]]]]
\begin{array}{l}
t_0 := \left(\left(b \cdot a\right) \cdot b\right) \cdot \left(-a\right)\\
t_1 := t\_0 \cdot 8\\
t_2 := 0.5 - 1 \cdot 0.5\\
t_3 := t\_2 \cdot b\\
t_4 := t\_2 \cdot a\\
t_5 := \frac{\mathsf{fma}\left(t\_4, a, \left(b \cdot b\right) \cdot \mathsf{fma}\left(1, 0.5, 0.5\right)\right)}{\left|x-scale\right| \cdot \left|x-scale\right|}\\
t_6 := \left|x-scale\right| \cdot y-scale\\
t_7 := \left|t\_6\right|\\
t_8 := y-scale \cdot \left|x-scale\right|\\
t_9 := \frac{\frac{\mathsf{fma}\left(b \cdot b, \mathsf{fma}\left(1, 0.5, 0.5\right), t\_4 \cdot a\right)}{\left|x-scale\right|}}{\left|x-scale\right|}\\
t_10 := \frac{\frac{\mathsf{fma}\left(a \cdot a, \mathsf{fma}\left(1, 0.5, 0.5\right), t\_3 \cdot b\right)}{y-scale}}{y-scale}\\
t_11 := \frac{\mathsf{fma}\left(t\_3, b, \left(a \cdot a\right) \cdot \mathsf{fma}\left(1, 0.5, 0.5\right)\right)}{y-scale \cdot y-scale}\\
t_12 := \frac{\sin \left(\left(2 \cdot \pi\right) \cdot \left(angle \cdot 0.005555555555555556\right)\right) \cdot \left(\left(b - a\right) \cdot \left(b + a\right)\right)}{t\_6}\\
t_13 := 4 \cdot \left(b \cdot a\right)\\
\mathbf{if}\;\left|x-scale\right| \leq 10^{+171}:\\
\;\;\;\;\left(\frac{\frac{\frac{\sqrt{\left(t\_1 \cdot \left(\mathsf{hypot}\left(t\_10 - t\_5, t\_12\right) + \left(t\_5 + t\_10\right)\right)\right) \cdot t\_0}}{t\_7}}{t\_13}}{b \cdot a} \cdot t\_8\right) \cdot t\_8\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\frac{\frac{\sqrt{\left(t\_1 \cdot \left(\mathsf{hypot}\left(t\_11 - t\_9, t\_12\right) + \left(t\_9 + t\_11\right)\right)\right) \cdot t\_0}}{t\_7}}{t\_13}}{b \cdot a} \cdot t\_8\right) \cdot t\_8\\
\end{array}
if x-scale < 9.9999999999999995e170Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites14.5%
Taylor expanded in angle around 0
Applied rewrites14.5%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites14.5%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites16.1%
if 9.9999999999999995e170 < x-scale Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites14.5%
Taylor expanded in angle around 0
Applied rewrites14.5%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites14.5%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites16.5%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (- 0.5 (* 1.0 0.5)))
(t_1
(/
(fma (* t_0 a) a (* (* b b) (fma 1.0 0.5 0.5)))
(* x-scale x-scale)))
(t_2
(/
(/ (fma (* a a) (fma 1.0 0.5 0.5) (* (* t_0 b) b)) y-scale)
y-scale))
(t_3 (* (* (* b a) b) (- a))))
(*
(*
(/
(/
(/
(sqrt
(*
(*
(* t_3 8.0)
(+
(hypot
(- t_2 t_1)
(/
(*
(sin (* (* 2.0 PI) (* angle 0.005555555555555556)))
(* (- b a) (+ b a)))
(* x-scale y-scale)))
(+ t_1 t_2)))
t_3))
(fabs (* x-scale y-scale)))
(* 4.0 (* b a)))
(* b a))
(* y-scale x-scale))
(* y-scale x-scale))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = 0.5 - (1.0 * 0.5);
double t_1 = fma((t_0 * a), a, ((b * b) * fma(1.0, 0.5, 0.5))) / (x_45_scale * x_45_scale);
double t_2 = (fma((a * a), fma(1.0, 0.5, 0.5), ((t_0 * b) * b)) / y_45_scale) / y_45_scale;
double t_3 = ((b * a) * b) * -a;
return ((((sqrt((((t_3 * 8.0) * (hypot((t_2 - t_1), ((sin(((2.0 * ((double) M_PI)) * (angle * 0.005555555555555556))) * ((b - a) * (b + a))) / (x_45_scale * y_45_scale))) + (t_1 + t_2))) * t_3)) / fabs((x_45_scale * y_45_scale))) / (4.0 * (b * a))) / (b * a)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale);
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(0.5 - Float64(1.0 * 0.5)) t_1 = Float64(fma(Float64(t_0 * a), a, Float64(Float64(b * b) * fma(1.0, 0.5, 0.5))) / Float64(x_45_scale * x_45_scale)) t_2 = Float64(Float64(fma(Float64(a * a), fma(1.0, 0.5, 0.5), Float64(Float64(t_0 * b) * b)) / y_45_scale) / y_45_scale) t_3 = Float64(Float64(Float64(b * a) * b) * Float64(-a)) return Float64(Float64(Float64(Float64(Float64(sqrt(Float64(Float64(Float64(t_3 * 8.0) * Float64(hypot(Float64(t_2 - t_1), Float64(Float64(sin(Float64(Float64(2.0 * pi) * Float64(angle * 0.005555555555555556))) * Float64(Float64(b - a) * Float64(b + a))) / Float64(x_45_scale * y_45_scale))) + Float64(t_1 + t_2))) * t_3)) / abs(Float64(x_45_scale * y_45_scale))) / Float64(4.0 * Float64(b * a))) / Float64(b * a)) * Float64(y_45_scale * x_45_scale)) * Float64(y_45_scale * x_45_scale)) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(0.5 - N[(1.0 * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(t$95$0 * a), $MachinePrecision] * a + N[(N[(b * b), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[(a * a), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision] + N[(N[(t$95$0 * b), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(b * a), $MachinePrecision] * b), $MachinePrecision] * (-a)), $MachinePrecision]}, N[(N[(N[(N[(N[(N[Sqrt[N[(N[(N[(t$95$3 * 8.0), $MachinePrecision] * N[(N[Sqrt[N[(t$95$2 - t$95$1), $MachinePrecision] ^ 2 + N[(N[(N[Sin[N[(N[(2.0 * Pi), $MachinePrecision] * N[(angle * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(N[(b - a), $MachinePrecision] * N[(b + a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision] + N[(t$95$1 + t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$3), $MachinePrecision]], $MachinePrecision] / N[Abs[N[(x$45$scale * y$45$scale), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(4.0 * N[(b * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(b * a), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := 0.5 - 1 \cdot 0.5\\
t_1 := \frac{\mathsf{fma}\left(t\_0 \cdot a, a, \left(b \cdot b\right) \cdot \mathsf{fma}\left(1, 0.5, 0.5\right)\right)}{x-scale \cdot x-scale}\\
t_2 := \frac{\frac{\mathsf{fma}\left(a \cdot a, \mathsf{fma}\left(1, 0.5, 0.5\right), \left(t\_0 \cdot b\right) \cdot b\right)}{y-scale}}{y-scale}\\
t_3 := \left(\left(b \cdot a\right) \cdot b\right) \cdot \left(-a\right)\\
\left(\frac{\frac{\frac{\sqrt{\left(\left(t\_3 \cdot 8\right) \cdot \left(\mathsf{hypot}\left(t\_2 - t\_1, \frac{\sin \left(\left(2 \cdot \pi\right) \cdot \left(angle \cdot 0.005555555555555556\right)\right) \cdot \left(\left(b - a\right) \cdot \left(b + a\right)\right)}{x-scale \cdot y-scale}\right) + \left(t\_1 + t\_2\right)\right)\right) \cdot t\_3}}{\left|x-scale \cdot y-scale\right|}}{4 \cdot \left(b \cdot a\right)}}{b \cdot a} \cdot \left(y-scale \cdot x-scale\right)\right) \cdot \left(y-scale \cdot x-scale\right)
\end{array}
Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites14.5%
Taylor expanded in angle around 0
Applied rewrites14.5%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites14.5%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites16.1%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (fabs a) (fabs b)))
(t_1 (/ (fabs b) (* (fabs x-scale) (fabs x-scale))))
(t_2 (- (fabs a)))
(t_3 (* (* t_2 (fabs b)) t_0))
(t_4 (* (fabs x-scale) y-scale))
(t_5 (* t_4 (fabs x-scale)))
(t_6 (* y-scale (fabs x-scale)))
(t_7 (* 0.5 (cos (* 0.011111111111111112 (* angle PI)))))
(t_8 (* 4.0 t_0))
(t_9 (* t_8 (fabs b)))
(t_10 (/ (fabs a) (* y-scale y-scale)))
(t_11
(fma
(fabs a)
t_10
(fma
(fabs b)
t_1
(fabs (- (* (fabs a) t_10) (* (fabs b) t_1)))))))
(if (<= (fabs a) 3e-123)
(*
(*
(/
(sqrt (* (* (* (/ (* t_9 t_2) (* t_5 y-scale)) 2.0) t_3) t_11))
(* t_0 t_8))
t_5)
y-scale)
(if (<= (fabs a) 8.5e+33)
(*
(*
(*
0.25
(/
(*
(fabs b)
(/
(sqrt
(*
8.0
(*
(pow (fabs a) 4.0)
(+ 0.5 (+ (sqrt (pow (+ 0.5 t_7) 2.0)) t_7)))))
(fabs x-scale)))
(* (pow (fabs a) 2.0) (fabs t_4))))
t_6)
t_6)
(*
(*
(/
(sqrt
(*
(* (* (/ (* (* t_8 (/ (fabs b) t_4)) t_2) t_4) 2.0) t_3)
t_11))
(* t_9 (fabs a)))
t_5)
y-scale)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = fabs(a) * fabs(b);
double t_1 = fabs(b) / (fabs(x_45_scale) * fabs(x_45_scale));
double t_2 = -fabs(a);
double t_3 = (t_2 * fabs(b)) * t_0;
double t_4 = fabs(x_45_scale) * y_45_scale;
double t_5 = t_4 * fabs(x_45_scale);
double t_6 = y_45_scale * fabs(x_45_scale);
double t_7 = 0.5 * cos((0.011111111111111112 * (angle * ((double) M_PI))));
double t_8 = 4.0 * t_0;
double t_9 = t_8 * fabs(b);
double t_10 = fabs(a) / (y_45_scale * y_45_scale);
double t_11 = fma(fabs(a), t_10, fma(fabs(b), t_1, fabs(((fabs(a) * t_10) - (fabs(b) * t_1)))));
double tmp;
if (fabs(a) <= 3e-123) {
tmp = ((sqrt((((((t_9 * t_2) / (t_5 * y_45_scale)) * 2.0) * t_3) * t_11)) / (t_0 * t_8)) * t_5) * y_45_scale;
} else if (fabs(a) <= 8.5e+33) {
tmp = ((0.25 * ((fabs(b) * (sqrt((8.0 * (pow(fabs(a), 4.0) * (0.5 + (sqrt(pow((0.5 + t_7), 2.0)) + t_7))))) / fabs(x_45_scale))) / (pow(fabs(a), 2.0) * fabs(t_4)))) * t_6) * t_6;
} else {
tmp = ((sqrt(((((((t_8 * (fabs(b) / t_4)) * t_2) / t_4) * 2.0) * t_3) * t_11)) / (t_9 * fabs(a))) * t_5) * y_45_scale;
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(abs(a) * abs(b)) t_1 = Float64(abs(b) / Float64(abs(x_45_scale) * abs(x_45_scale))) t_2 = Float64(-abs(a)) t_3 = Float64(Float64(t_2 * abs(b)) * t_0) t_4 = Float64(abs(x_45_scale) * y_45_scale) t_5 = Float64(t_4 * abs(x_45_scale)) t_6 = Float64(y_45_scale * abs(x_45_scale)) t_7 = Float64(0.5 * cos(Float64(0.011111111111111112 * Float64(angle * pi)))) t_8 = Float64(4.0 * t_0) t_9 = Float64(t_8 * abs(b)) t_10 = Float64(abs(a) / Float64(y_45_scale * y_45_scale)) t_11 = fma(abs(a), t_10, fma(abs(b), t_1, abs(Float64(Float64(abs(a) * t_10) - Float64(abs(b) * t_1))))) tmp = 0.0 if (abs(a) <= 3e-123) tmp = Float64(Float64(Float64(sqrt(Float64(Float64(Float64(Float64(Float64(t_9 * t_2) / Float64(t_5 * y_45_scale)) * 2.0) * t_3) * t_11)) / Float64(t_0 * t_8)) * t_5) * y_45_scale); elseif (abs(a) <= 8.5e+33) tmp = Float64(Float64(Float64(0.25 * Float64(Float64(abs(b) * Float64(sqrt(Float64(8.0 * Float64((abs(a) ^ 4.0) * Float64(0.5 + Float64(sqrt((Float64(0.5 + t_7) ^ 2.0)) + t_7))))) / abs(x_45_scale))) / Float64((abs(a) ^ 2.0) * abs(t_4)))) * t_6) * t_6); else tmp = Float64(Float64(Float64(sqrt(Float64(Float64(Float64(Float64(Float64(Float64(t_8 * Float64(abs(b) / t_4)) * t_2) / t_4) * 2.0) * t_3) * t_11)) / Float64(t_9 * abs(a))) * t_5) * y_45_scale); 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[b], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Abs[b], $MachinePrecision] / N[(N[Abs[x$45$scale], $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = (-N[Abs[a], $MachinePrecision])}, Block[{t$95$3 = N[(N[(t$95$2 * N[Abs[b], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]}, Block[{t$95$4 = N[(N[Abs[x$45$scale], $MachinePrecision] * y$45$scale), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$4 * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(y$45$scale * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[(0.5 * N[Cos[N[(0.011111111111111112 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$8 = N[(4.0 * t$95$0), $MachinePrecision]}, Block[{t$95$9 = N[(t$95$8 * N[Abs[b], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$10 = N[(N[Abs[a], $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$11 = N[(N[Abs[a], $MachinePrecision] * t$95$10 + N[(N[Abs[b], $MachinePrecision] * t$95$1 + N[Abs[N[(N[(N[Abs[a], $MachinePrecision] * t$95$10), $MachinePrecision] - N[(N[Abs[b], $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[a], $MachinePrecision], 3e-123], N[(N[(N[(N[Sqrt[N[(N[(N[(N[(N[(t$95$9 * t$95$2), $MachinePrecision] / N[(t$95$5 * y$45$scale), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision] * t$95$3), $MachinePrecision] * t$95$11), $MachinePrecision]], $MachinePrecision] / N[(t$95$0 * t$95$8), $MachinePrecision]), $MachinePrecision] * t$95$5), $MachinePrecision] * y$45$scale), $MachinePrecision], If[LessEqual[N[Abs[a], $MachinePrecision], 8.5e+33], N[(N[(N[(0.25 * N[(N[(N[Abs[b], $MachinePrecision] * N[(N[Sqrt[N[(8.0 * N[(N[Power[N[Abs[a], $MachinePrecision], 4.0], $MachinePrecision] * N[(0.5 + N[(N[Sqrt[N[Power[N[(0.5 + t$95$7), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision] + t$95$7), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[Power[N[Abs[a], $MachinePrecision], 2.0], $MachinePrecision] * N[Abs[t$95$4], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$6), $MachinePrecision] * t$95$6), $MachinePrecision], N[(N[(N[(N[Sqrt[N[(N[(N[(N[(N[(N[(t$95$8 * N[(N[Abs[b], $MachinePrecision] / t$95$4), $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision] / t$95$4), $MachinePrecision] * 2.0), $MachinePrecision] * t$95$3), $MachinePrecision] * t$95$11), $MachinePrecision]], $MachinePrecision] / N[(t$95$9 * N[Abs[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$5), $MachinePrecision] * y$45$scale), $MachinePrecision]]]]]]]]]]]]]]]
\begin{array}{l}
t_0 := \left|a\right| \cdot \left|b\right|\\
t_1 := \frac{\left|b\right|}{\left|x-scale\right| \cdot \left|x-scale\right|}\\
t_2 := -\left|a\right|\\
t_3 := \left(t\_2 \cdot \left|b\right|\right) \cdot t\_0\\
t_4 := \left|x-scale\right| \cdot y-scale\\
t_5 := t\_4 \cdot \left|x-scale\right|\\
t_6 := y-scale \cdot \left|x-scale\right|\\
t_7 := 0.5 \cdot \cos \left(0.011111111111111112 \cdot \left(angle \cdot \pi\right)\right)\\
t_8 := 4 \cdot t\_0\\
t_9 := t\_8 \cdot \left|b\right|\\
t_10 := \frac{\left|a\right|}{y-scale \cdot y-scale}\\
t_11 := \mathsf{fma}\left(\left|a\right|, t\_10, \mathsf{fma}\left(\left|b\right|, t\_1, \left|\left|a\right| \cdot t\_10 - \left|b\right| \cdot t\_1\right|\right)\right)\\
\mathbf{if}\;\left|a\right| \leq 3 \cdot 10^{-123}:\\
\;\;\;\;\left(\frac{\sqrt{\left(\left(\frac{t\_9 \cdot t\_2}{t\_5 \cdot y-scale} \cdot 2\right) \cdot t\_3\right) \cdot t\_11}}{t\_0 \cdot t\_8} \cdot t\_5\right) \cdot y-scale\\
\mathbf{elif}\;\left|a\right| \leq 8.5 \cdot 10^{+33}:\\
\;\;\;\;\left(\left(0.25 \cdot \frac{\left|b\right| \cdot \frac{\sqrt{8 \cdot \left({\left(\left|a\right|\right)}^{4} \cdot \left(0.5 + \left(\sqrt{{\left(0.5 + t\_7\right)}^{2}} + t\_7\right)\right)\right)}}{\left|x-scale\right|}}{{\left(\left|a\right|\right)}^{2} \cdot \left|t\_4\right|}\right) \cdot t\_6\right) \cdot t\_6\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\sqrt{\left(\left(\frac{\left(t\_8 \cdot \frac{\left|b\right|}{t\_4}\right) \cdot t\_2}{t\_4} \cdot 2\right) \cdot t\_3\right) \cdot t\_11}}{t\_9 \cdot \left|a\right|} \cdot t\_5\right) \cdot y-scale\\
\end{array}
if a < 2.9999999999999998e-123Initial program 2.6%
Taylor expanded in angle around 0
Applied rewrites4.2%
Applied rewrites3.7%
Applied rewrites4.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-*.f645.1%
lift-*.f64N/A
*-commutativeN/A
lift-*.f645.1%
lift-*.f64N/A
*-commutativeN/A
lift-*.f645.1%
Applied rewrites5.1%
if 2.9999999999999998e-123 < a < 8.4999999999999998e33Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in b around inf
Applied rewrites1.6%
Taylor expanded in x-scale around 0
lower-/.f64N/A
Applied rewrites3.2%
if 8.4999999999999998e33 < a Initial program 2.6%
Taylor expanded in angle around 0
Applied rewrites4.2%
Applied rewrites3.7%
Applied rewrites4.4%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
frac-timesN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
Applied rewrites5.5%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (fabs a) (fabs b)))
(t_1 (/ (fabs b) (* (fabs x-scale) (fabs x-scale))))
(t_2 (- (fabs a)))
(t_3 (* (* t_2 (fabs b)) t_0))
(t_4 (* (fabs x-scale) y-scale))
(t_5 (* t_4 (fabs x-scale)))
(t_6 (* y-scale (fabs x-scale)))
(t_7 (* 0.5 (cos (* 0.011111111111111112 (* angle PI)))))
(t_8 (* 4.0 t_0))
(t_9 (* t_8 (fabs b)))
(t_10 (/ (fabs a) (* y-scale y-scale)))
(t_11
(fma
(fabs a)
t_10
(fma
(fabs b)
t_1
(fabs (- (* (fabs a) t_10) (* (fabs b) t_1)))))))
(if (<= (fabs a) 3e-123)
(*
(*
(/
(sqrt (* (* (* (/ (* t_9 t_2) (* t_5 y-scale)) 2.0) t_3) t_11))
(* t_0 t_8))
t_5)
y-scale)
(if (<= (fabs a) 1.5e+34)
(*
(*
(*
0.25
(/
(/
(*
(fabs b)
(sqrt
(*
8.0
(*
(pow (fabs a) 4.0)
(+ 0.5 (+ (sqrt (pow (+ 0.5 t_7) 2.0)) t_7))))))
(fabs x-scale))
(* (pow (fabs a) 2.0) (fabs t_4))))
t_6)
t_6)
(*
(*
(/
(sqrt
(*
(* (* (/ (* (* t_8 (/ (fabs b) t_4)) t_2) t_4) 2.0) t_3)
t_11))
(* t_9 (fabs a)))
t_5)
y-scale)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = fabs(a) * fabs(b);
double t_1 = fabs(b) / (fabs(x_45_scale) * fabs(x_45_scale));
double t_2 = -fabs(a);
double t_3 = (t_2 * fabs(b)) * t_0;
double t_4 = fabs(x_45_scale) * y_45_scale;
double t_5 = t_4 * fabs(x_45_scale);
double t_6 = y_45_scale * fabs(x_45_scale);
double t_7 = 0.5 * cos((0.011111111111111112 * (angle * ((double) M_PI))));
double t_8 = 4.0 * t_0;
double t_9 = t_8 * fabs(b);
double t_10 = fabs(a) / (y_45_scale * y_45_scale);
double t_11 = fma(fabs(a), t_10, fma(fabs(b), t_1, fabs(((fabs(a) * t_10) - (fabs(b) * t_1)))));
double tmp;
if (fabs(a) <= 3e-123) {
tmp = ((sqrt((((((t_9 * t_2) / (t_5 * y_45_scale)) * 2.0) * t_3) * t_11)) / (t_0 * t_8)) * t_5) * y_45_scale;
} else if (fabs(a) <= 1.5e+34) {
tmp = ((0.25 * (((fabs(b) * sqrt((8.0 * (pow(fabs(a), 4.0) * (0.5 + (sqrt(pow((0.5 + t_7), 2.0)) + t_7)))))) / fabs(x_45_scale)) / (pow(fabs(a), 2.0) * fabs(t_4)))) * t_6) * t_6;
} else {
tmp = ((sqrt(((((((t_8 * (fabs(b) / t_4)) * t_2) / t_4) * 2.0) * t_3) * t_11)) / (t_9 * fabs(a))) * t_5) * y_45_scale;
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(abs(a) * abs(b)) t_1 = Float64(abs(b) / Float64(abs(x_45_scale) * abs(x_45_scale))) t_2 = Float64(-abs(a)) t_3 = Float64(Float64(t_2 * abs(b)) * t_0) t_4 = Float64(abs(x_45_scale) * y_45_scale) t_5 = Float64(t_4 * abs(x_45_scale)) t_6 = Float64(y_45_scale * abs(x_45_scale)) t_7 = Float64(0.5 * cos(Float64(0.011111111111111112 * Float64(angle * pi)))) t_8 = Float64(4.0 * t_0) t_9 = Float64(t_8 * abs(b)) t_10 = Float64(abs(a) / Float64(y_45_scale * y_45_scale)) t_11 = fma(abs(a), t_10, fma(abs(b), t_1, abs(Float64(Float64(abs(a) * t_10) - Float64(abs(b) * t_1))))) tmp = 0.0 if (abs(a) <= 3e-123) tmp = Float64(Float64(Float64(sqrt(Float64(Float64(Float64(Float64(Float64(t_9 * t_2) / Float64(t_5 * y_45_scale)) * 2.0) * t_3) * t_11)) / Float64(t_0 * t_8)) * t_5) * y_45_scale); elseif (abs(a) <= 1.5e+34) tmp = Float64(Float64(Float64(0.25 * Float64(Float64(Float64(abs(b) * sqrt(Float64(8.0 * Float64((abs(a) ^ 4.0) * Float64(0.5 + Float64(sqrt((Float64(0.5 + t_7) ^ 2.0)) + t_7)))))) / abs(x_45_scale)) / Float64((abs(a) ^ 2.0) * abs(t_4)))) * t_6) * t_6); else tmp = Float64(Float64(Float64(sqrt(Float64(Float64(Float64(Float64(Float64(Float64(t_8 * Float64(abs(b) / t_4)) * t_2) / t_4) * 2.0) * t_3) * t_11)) / Float64(t_9 * abs(a))) * t_5) * y_45_scale); 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[b], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Abs[b], $MachinePrecision] / N[(N[Abs[x$45$scale], $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = (-N[Abs[a], $MachinePrecision])}, Block[{t$95$3 = N[(N[(t$95$2 * N[Abs[b], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]}, Block[{t$95$4 = N[(N[Abs[x$45$scale], $MachinePrecision] * y$45$scale), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$4 * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(y$45$scale * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[(0.5 * N[Cos[N[(0.011111111111111112 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$8 = N[(4.0 * t$95$0), $MachinePrecision]}, Block[{t$95$9 = N[(t$95$8 * N[Abs[b], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$10 = N[(N[Abs[a], $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$11 = N[(N[Abs[a], $MachinePrecision] * t$95$10 + N[(N[Abs[b], $MachinePrecision] * t$95$1 + N[Abs[N[(N[(N[Abs[a], $MachinePrecision] * t$95$10), $MachinePrecision] - N[(N[Abs[b], $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[a], $MachinePrecision], 3e-123], N[(N[(N[(N[Sqrt[N[(N[(N[(N[(N[(t$95$9 * t$95$2), $MachinePrecision] / N[(t$95$5 * y$45$scale), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision] * t$95$3), $MachinePrecision] * t$95$11), $MachinePrecision]], $MachinePrecision] / N[(t$95$0 * t$95$8), $MachinePrecision]), $MachinePrecision] * t$95$5), $MachinePrecision] * y$45$scale), $MachinePrecision], If[LessEqual[N[Abs[a], $MachinePrecision], 1.5e+34], N[(N[(N[(0.25 * N[(N[(N[(N[Abs[b], $MachinePrecision] * N[Sqrt[N[(8.0 * N[(N[Power[N[Abs[a], $MachinePrecision], 4.0], $MachinePrecision] * N[(0.5 + N[(N[Sqrt[N[Power[N[(0.5 + t$95$7), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision] + t$95$7), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] / N[(N[Power[N[Abs[a], $MachinePrecision], 2.0], $MachinePrecision] * N[Abs[t$95$4], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$6), $MachinePrecision] * t$95$6), $MachinePrecision], N[(N[(N[(N[Sqrt[N[(N[(N[(N[(N[(N[(t$95$8 * N[(N[Abs[b], $MachinePrecision] / t$95$4), $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision] / t$95$4), $MachinePrecision] * 2.0), $MachinePrecision] * t$95$3), $MachinePrecision] * t$95$11), $MachinePrecision]], $MachinePrecision] / N[(t$95$9 * N[Abs[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$5), $MachinePrecision] * y$45$scale), $MachinePrecision]]]]]]]]]]]]]]]
\begin{array}{l}
t_0 := \left|a\right| \cdot \left|b\right|\\
t_1 := \frac{\left|b\right|}{\left|x-scale\right| \cdot \left|x-scale\right|}\\
t_2 := -\left|a\right|\\
t_3 := \left(t\_2 \cdot \left|b\right|\right) \cdot t\_0\\
t_4 := \left|x-scale\right| \cdot y-scale\\
t_5 := t\_4 \cdot \left|x-scale\right|\\
t_6 := y-scale \cdot \left|x-scale\right|\\
t_7 := 0.5 \cdot \cos \left(0.011111111111111112 \cdot \left(angle \cdot \pi\right)\right)\\
t_8 := 4 \cdot t\_0\\
t_9 := t\_8 \cdot \left|b\right|\\
t_10 := \frac{\left|a\right|}{y-scale \cdot y-scale}\\
t_11 := \mathsf{fma}\left(\left|a\right|, t\_10, \mathsf{fma}\left(\left|b\right|, t\_1, \left|\left|a\right| \cdot t\_10 - \left|b\right| \cdot t\_1\right|\right)\right)\\
\mathbf{if}\;\left|a\right| \leq 3 \cdot 10^{-123}:\\
\;\;\;\;\left(\frac{\sqrt{\left(\left(\frac{t\_9 \cdot t\_2}{t\_5 \cdot y-scale} \cdot 2\right) \cdot t\_3\right) \cdot t\_11}}{t\_0 \cdot t\_8} \cdot t\_5\right) \cdot y-scale\\
\mathbf{elif}\;\left|a\right| \leq 1.5 \cdot 10^{+34}:\\
\;\;\;\;\left(\left(0.25 \cdot \frac{\frac{\left|b\right| \cdot \sqrt{8 \cdot \left({\left(\left|a\right|\right)}^{4} \cdot \left(0.5 + \left(\sqrt{{\left(0.5 + t\_7\right)}^{2}} + t\_7\right)\right)\right)}}{\left|x-scale\right|}}{{\left(\left|a\right|\right)}^{2} \cdot \left|t\_4\right|}\right) \cdot t\_6\right) \cdot t\_6\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\sqrt{\left(\left(\frac{\left(t\_8 \cdot \frac{\left|b\right|}{t\_4}\right) \cdot t\_2}{t\_4} \cdot 2\right) \cdot t\_3\right) \cdot t\_11}}{t\_9 \cdot \left|a\right|} \cdot t\_5\right) \cdot y-scale\\
\end{array}
if a < 2.9999999999999998e-123Initial program 2.6%
Taylor expanded in angle around 0
Applied rewrites4.2%
Applied rewrites3.7%
Applied rewrites4.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-*.f645.1%
lift-*.f64N/A
*-commutativeN/A
lift-*.f645.1%
lift-*.f64N/A
*-commutativeN/A
lift-*.f645.1%
Applied rewrites5.1%
if 2.9999999999999998e-123 < a < 1.5000000000000001e34Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in b around inf
Applied rewrites1.6%
Taylor expanded in x-scale around 0
lower-/.f64N/A
Applied rewrites3.3%
if 1.5000000000000001e34 < a Initial program 2.6%
Taylor expanded in angle around 0
Applied rewrites4.2%
Applied rewrites3.7%
Applied rewrites4.4%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
frac-timesN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
Applied rewrites5.5%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* 0.5 (cos (* 0.011111111111111112 (* angle PI)))))
(t_1 (* (fabs a) (fabs b)))
(t_2 (/ (fabs b) (* (fabs x-scale) (fabs x-scale))))
(t_3 (- (fabs a)))
(t_4 (* (* t_3 (fabs b)) t_1))
(t_5 (* (fabs x-scale) y-scale))
(t_6 (* t_5 (fabs x-scale)))
(t_7 (* y-scale (fabs x-scale)))
(t_8 (* 4.0 t_1))
(t_9 (* t_8 (fabs b)))
(t_10 (/ (fabs a) (* y-scale y-scale)))
(t_11
(fma
(fabs a)
t_10
(fma
(fabs b)
t_2
(fabs (- (* (fabs a) t_10) (* (fabs b) t_2)))))))
(if (<= (fabs a) 1.85e-117)
(*
(*
(/
(sqrt (* (* (* (/ (* t_9 t_3) (* t_6 y-scale)) 2.0) t_4) t_11))
(* t_1 t_8))
t_6)
y-scale)
(if (<= (fabs a) 8.5e+33)
(*
(*
(*
0.25
(/
(*
(fabs b)
(sqrt
(*
8.0
(*
(pow (fabs a) 4.0)
(+ 0.5 (+ (sqrt (pow (+ 0.5 t_0) 2.0)) t_0))))))
(* (pow (fabs a) 2.0) (* (fabs x-scale) (fabs t_5)))))
t_7)
t_7)
(*
(*
(/
(sqrt
(*
(* (* (/ (* (* t_8 (/ (fabs b) t_5)) t_3) t_5) 2.0) t_4)
t_11))
(* t_9 (fabs a)))
t_6)
y-scale)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = 0.5 * cos((0.011111111111111112 * (angle * ((double) M_PI))));
double t_1 = fabs(a) * fabs(b);
double t_2 = fabs(b) / (fabs(x_45_scale) * fabs(x_45_scale));
double t_3 = -fabs(a);
double t_4 = (t_3 * fabs(b)) * t_1;
double t_5 = fabs(x_45_scale) * y_45_scale;
double t_6 = t_5 * fabs(x_45_scale);
double t_7 = y_45_scale * fabs(x_45_scale);
double t_8 = 4.0 * t_1;
double t_9 = t_8 * fabs(b);
double t_10 = fabs(a) / (y_45_scale * y_45_scale);
double t_11 = fma(fabs(a), t_10, fma(fabs(b), t_2, fabs(((fabs(a) * t_10) - (fabs(b) * t_2)))));
double tmp;
if (fabs(a) <= 1.85e-117) {
tmp = ((sqrt((((((t_9 * t_3) / (t_6 * y_45_scale)) * 2.0) * t_4) * t_11)) / (t_1 * t_8)) * t_6) * y_45_scale;
} else if (fabs(a) <= 8.5e+33) {
tmp = ((0.25 * ((fabs(b) * sqrt((8.0 * (pow(fabs(a), 4.0) * (0.5 + (sqrt(pow((0.5 + t_0), 2.0)) + t_0)))))) / (pow(fabs(a), 2.0) * (fabs(x_45_scale) * fabs(t_5))))) * t_7) * t_7;
} else {
tmp = ((sqrt(((((((t_8 * (fabs(b) / t_5)) * t_3) / t_5) * 2.0) * t_4) * t_11)) / (t_9 * fabs(a))) * t_6) * y_45_scale;
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(0.5 * cos(Float64(0.011111111111111112 * Float64(angle * pi)))) t_1 = Float64(abs(a) * abs(b)) t_2 = Float64(abs(b) / Float64(abs(x_45_scale) * abs(x_45_scale))) t_3 = Float64(-abs(a)) t_4 = Float64(Float64(t_3 * abs(b)) * t_1) t_5 = Float64(abs(x_45_scale) * y_45_scale) t_6 = Float64(t_5 * abs(x_45_scale)) t_7 = Float64(y_45_scale * abs(x_45_scale)) t_8 = Float64(4.0 * t_1) t_9 = Float64(t_8 * abs(b)) t_10 = Float64(abs(a) / Float64(y_45_scale * y_45_scale)) t_11 = fma(abs(a), t_10, fma(abs(b), t_2, abs(Float64(Float64(abs(a) * t_10) - Float64(abs(b) * t_2))))) tmp = 0.0 if (abs(a) <= 1.85e-117) tmp = Float64(Float64(Float64(sqrt(Float64(Float64(Float64(Float64(Float64(t_9 * t_3) / Float64(t_6 * y_45_scale)) * 2.0) * t_4) * t_11)) / Float64(t_1 * t_8)) * t_6) * y_45_scale); elseif (abs(a) <= 8.5e+33) tmp = Float64(Float64(Float64(0.25 * Float64(Float64(abs(b) * sqrt(Float64(8.0 * Float64((abs(a) ^ 4.0) * Float64(0.5 + Float64(sqrt((Float64(0.5 + t_0) ^ 2.0)) + t_0)))))) / Float64((abs(a) ^ 2.0) * Float64(abs(x_45_scale) * abs(t_5))))) * t_7) * t_7); else tmp = Float64(Float64(Float64(sqrt(Float64(Float64(Float64(Float64(Float64(Float64(t_8 * Float64(abs(b) / t_5)) * t_3) / t_5) * 2.0) * t_4) * t_11)) / Float64(t_9 * abs(a))) * t_6) * y_45_scale); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(0.5 * N[Cos[N[(0.011111111111111112 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Abs[a], $MachinePrecision] * N[Abs[b], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[Abs[b], $MachinePrecision] / N[(N[Abs[x$45$scale], $MachinePrecision] * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = (-N[Abs[a], $MachinePrecision])}, Block[{t$95$4 = N[(N[(t$95$3 * N[Abs[b], $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]}, Block[{t$95$5 = N[(N[Abs[x$45$scale], $MachinePrecision] * y$45$scale), $MachinePrecision]}, Block[{t$95$6 = N[(t$95$5 * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[(y$45$scale * N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$8 = N[(4.0 * t$95$1), $MachinePrecision]}, Block[{t$95$9 = N[(t$95$8 * N[Abs[b], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$10 = N[(N[Abs[a], $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$11 = N[(N[Abs[a], $MachinePrecision] * t$95$10 + N[(N[Abs[b], $MachinePrecision] * t$95$2 + N[Abs[N[(N[(N[Abs[a], $MachinePrecision] * t$95$10), $MachinePrecision] - N[(N[Abs[b], $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[a], $MachinePrecision], 1.85e-117], N[(N[(N[(N[Sqrt[N[(N[(N[(N[(N[(t$95$9 * t$95$3), $MachinePrecision] / N[(t$95$6 * y$45$scale), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision] * t$95$4), $MachinePrecision] * t$95$11), $MachinePrecision]], $MachinePrecision] / N[(t$95$1 * t$95$8), $MachinePrecision]), $MachinePrecision] * t$95$6), $MachinePrecision] * y$45$scale), $MachinePrecision], If[LessEqual[N[Abs[a], $MachinePrecision], 8.5e+33], N[(N[(N[(0.25 * N[(N[(N[Abs[b], $MachinePrecision] * N[Sqrt[N[(8.0 * N[(N[Power[N[Abs[a], $MachinePrecision], 4.0], $MachinePrecision] * N[(0.5 + N[(N[Sqrt[N[Power[N[(0.5 + t$95$0), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision] + t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[Power[N[Abs[a], $MachinePrecision], 2.0], $MachinePrecision] * N[(N[Abs[x$45$scale], $MachinePrecision] * N[Abs[t$95$5], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$7), $MachinePrecision] * t$95$7), $MachinePrecision], N[(N[(N[(N[Sqrt[N[(N[(N[(N[(N[(N[(t$95$8 * N[(N[Abs[b], $MachinePrecision] / t$95$5), $MachinePrecision]), $MachinePrecision] * t$95$3), $MachinePrecision] / t$95$5), $MachinePrecision] * 2.0), $MachinePrecision] * t$95$4), $MachinePrecision] * t$95$11), $MachinePrecision]], $MachinePrecision] / N[(t$95$9 * N[Abs[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$6), $MachinePrecision] * y$45$scale), $MachinePrecision]]]]]]]]]]]]]]]
\begin{array}{l}
t_0 := 0.5 \cdot \cos \left(0.011111111111111112 \cdot \left(angle \cdot \pi\right)\right)\\
t_1 := \left|a\right| \cdot \left|b\right|\\
t_2 := \frac{\left|b\right|}{\left|x-scale\right| \cdot \left|x-scale\right|}\\
t_3 := -\left|a\right|\\
t_4 := \left(t\_3 \cdot \left|b\right|\right) \cdot t\_1\\
t_5 := \left|x-scale\right| \cdot y-scale\\
t_6 := t\_5 \cdot \left|x-scale\right|\\
t_7 := y-scale \cdot \left|x-scale\right|\\
t_8 := 4 \cdot t\_1\\
t_9 := t\_8 \cdot \left|b\right|\\
t_10 := \frac{\left|a\right|}{y-scale \cdot y-scale}\\
t_11 := \mathsf{fma}\left(\left|a\right|, t\_10, \mathsf{fma}\left(\left|b\right|, t\_2, \left|\left|a\right| \cdot t\_10 - \left|b\right| \cdot t\_2\right|\right)\right)\\
\mathbf{if}\;\left|a\right| \leq 1.85 \cdot 10^{-117}:\\
\;\;\;\;\left(\frac{\sqrt{\left(\left(\frac{t\_9 \cdot t\_3}{t\_6 \cdot y-scale} \cdot 2\right) \cdot t\_4\right) \cdot t\_11}}{t\_1 \cdot t\_8} \cdot t\_6\right) \cdot y-scale\\
\mathbf{elif}\;\left|a\right| \leq 8.5 \cdot 10^{+33}:\\
\;\;\;\;\left(\left(0.25 \cdot \frac{\left|b\right| \cdot \sqrt{8 \cdot \left({\left(\left|a\right|\right)}^{4} \cdot \left(0.5 + \left(\sqrt{{\left(0.5 + t\_0\right)}^{2}} + t\_0\right)\right)\right)}}{{\left(\left|a\right|\right)}^{2} \cdot \left(\left|x-scale\right| \cdot \left|t\_5\right|\right)}\right) \cdot t\_7\right) \cdot t\_7\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{\sqrt{\left(\left(\frac{\left(t\_8 \cdot \frac{\left|b\right|}{t\_5}\right) \cdot t\_3}{t\_5} \cdot 2\right) \cdot t\_4\right) \cdot t\_11}}{t\_9 \cdot \left|a\right|} \cdot t\_6\right) \cdot y-scale\\
\end{array}
if a < 1.8500000000000001e-117Initial program 2.6%
Taylor expanded in angle around 0
Applied rewrites4.2%
Applied rewrites3.7%
Applied rewrites4.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-*.f645.1%
lift-*.f64N/A
*-commutativeN/A
lift-*.f645.1%
lift-*.f64N/A
*-commutativeN/A
lift-*.f645.1%
Applied rewrites5.1%
if 1.8500000000000001e-117 < a < 8.4999999999999998e33Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in b around inf
Applied rewrites1.6%
Taylor expanded in x-scale around 0
Applied rewrites2.7%
if 8.4999999999999998e33 < a Initial program 2.6%
Taylor expanded in angle around 0
Applied rewrites4.2%
Applied rewrites3.7%
Applied rewrites4.4%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
frac-timesN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
Applied rewrites5.5%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (- 0.5 (* 1.0 0.5)))
(t_1
(/
(fma (* t_0 a) a (* (* b b) (fma 1.0 0.5 0.5)))
(* x-scale x-scale)))
(t_2
(/
(fma (* t_0 b) b (* (* a a) (fma 1.0 0.5 0.5)))
(* y-scale y-scale)))
(t_3 (* (* (* (- a) b) a) b)))
(*
(*
(/
(/
(/
(sqrt
(*
(*
(* t_3 8.0)
(+
(hypot
(- t_2 t_1)
(/
(*
(sin (* (* 2.0 PI) (* angle 0.005555555555555556)))
(* (- b a) (+ b a)))
(* x-scale y-scale)))
(+ t_1 t_2)))
t_3))
(fabs (* x-scale y-scale)))
(* 4.0 (* b a)))
(* b a))
(* y-scale x-scale))
(* y-scale x-scale))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = 0.5 - (1.0 * 0.5);
double t_1 = fma((t_0 * a), a, ((b * b) * fma(1.0, 0.5, 0.5))) / (x_45_scale * x_45_scale);
double t_2 = fma((t_0 * b), b, ((a * a) * fma(1.0, 0.5, 0.5))) / (y_45_scale * y_45_scale);
double t_3 = ((-a * b) * a) * b;
return ((((sqrt((((t_3 * 8.0) * (hypot((t_2 - t_1), ((sin(((2.0 * ((double) M_PI)) * (angle * 0.005555555555555556))) * ((b - a) * (b + a))) / (x_45_scale * y_45_scale))) + (t_1 + t_2))) * t_3)) / fabs((x_45_scale * y_45_scale))) / (4.0 * (b * a))) / (b * a)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale);
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(0.5 - Float64(1.0 * 0.5)) t_1 = Float64(fma(Float64(t_0 * a), a, Float64(Float64(b * b) * fma(1.0, 0.5, 0.5))) / Float64(x_45_scale * x_45_scale)) t_2 = Float64(fma(Float64(t_0 * b), b, Float64(Float64(a * a) * fma(1.0, 0.5, 0.5))) / Float64(y_45_scale * y_45_scale)) t_3 = Float64(Float64(Float64(Float64(-a) * b) * a) * b) return Float64(Float64(Float64(Float64(Float64(sqrt(Float64(Float64(Float64(t_3 * 8.0) * Float64(hypot(Float64(t_2 - t_1), Float64(Float64(sin(Float64(Float64(2.0 * pi) * Float64(angle * 0.005555555555555556))) * Float64(Float64(b - a) * Float64(b + a))) / Float64(x_45_scale * y_45_scale))) + Float64(t_1 + t_2))) * t_3)) / abs(Float64(x_45_scale * y_45_scale))) / Float64(4.0 * Float64(b * a))) / Float64(b * a)) * Float64(y_45_scale * x_45_scale)) * Float64(y_45_scale * x_45_scale)) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(0.5 - N[(1.0 * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(t$95$0 * a), $MachinePrecision] * a + N[(N[(b * b), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(t$95$0 * b), $MachinePrecision] * b + N[(N[(a * a), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[((-a) * b), $MachinePrecision] * a), $MachinePrecision] * b), $MachinePrecision]}, N[(N[(N[(N[(N[(N[Sqrt[N[(N[(N[(t$95$3 * 8.0), $MachinePrecision] * N[(N[Sqrt[N[(t$95$2 - t$95$1), $MachinePrecision] ^ 2 + N[(N[(N[Sin[N[(N[(2.0 * Pi), $MachinePrecision] * N[(angle * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(N[(b - a), $MachinePrecision] * N[(b + a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision] + N[(t$95$1 + t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$3), $MachinePrecision]], $MachinePrecision] / N[Abs[N[(x$45$scale * y$45$scale), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(4.0 * N[(b * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(b * a), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := 0.5 - 1 \cdot 0.5\\
t_1 := \frac{\mathsf{fma}\left(t\_0 \cdot a, a, \left(b \cdot b\right) \cdot \mathsf{fma}\left(1, 0.5, 0.5\right)\right)}{x-scale \cdot x-scale}\\
t_2 := \frac{\mathsf{fma}\left(t\_0 \cdot b, b, \left(a \cdot a\right) \cdot \mathsf{fma}\left(1, 0.5, 0.5\right)\right)}{y-scale \cdot y-scale}\\
t_3 := \left(\left(\left(-a\right) \cdot b\right) \cdot a\right) \cdot b\\
\left(\frac{\frac{\frac{\sqrt{\left(\left(t\_3 \cdot 8\right) \cdot \left(\mathsf{hypot}\left(t\_2 - t\_1, \frac{\sin \left(\left(2 \cdot \pi\right) \cdot \left(angle \cdot 0.005555555555555556\right)\right) \cdot \left(\left(b - a\right) \cdot \left(b + a\right)\right)}{x-scale \cdot y-scale}\right) + \left(t\_1 + t\_2\right)\right)\right) \cdot t\_3}}{\left|x-scale \cdot y-scale\right|}}{4 \cdot \left(b \cdot a\right)}}{b \cdot a} \cdot \left(y-scale \cdot x-scale\right)\right) \cdot \left(y-scale \cdot x-scale\right)
\end{array}
Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites14.5%
Taylor expanded in angle around 0
Applied rewrites14.5%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-*.f6414.1%
lift-*.f64N/A
*-commutativeN/A
lift-*.f6414.1%
Applied rewrites14.1%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-*.f6414.7%
lift-*.f64N/A
*-commutativeN/A
lift-*.f6414.7%
Applied rewrites14.7%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (- 0.5 (* 1.0 0.5)))
(t_1
(/
(fma (* t_0 a) a (* (* b b) (fma 1.0 0.5 0.5)))
(* x-scale x-scale)))
(t_2
(/
(fma (* t_0 b) b (* (* a a) (fma 1.0 0.5 0.5)))
(* y-scale y-scale)))
(t_3 (* (* (* b a) b) (- a))))
(*
(*
(/
(/
(/
(sqrt
(*
(*
(* t_3 8.0)
(+
(hypot
(- t_2 t_1)
(/
(*
(sin (* (* 2.0 PI) (* angle 0.005555555555555556)))
(* (- b a) (+ b a)))
(* x-scale y-scale)))
(+ t_1 t_2)))
t_3))
(fabs (* x-scale y-scale)))
(* 4.0 (* b a)))
(* b a))
(* y-scale x-scale))
(* y-scale x-scale))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = 0.5 - (1.0 * 0.5);
double t_1 = fma((t_0 * a), a, ((b * b) * fma(1.0, 0.5, 0.5))) / (x_45_scale * x_45_scale);
double t_2 = fma((t_0 * b), b, ((a * a) * fma(1.0, 0.5, 0.5))) / (y_45_scale * y_45_scale);
double t_3 = ((b * a) * b) * -a;
return ((((sqrt((((t_3 * 8.0) * (hypot((t_2 - t_1), ((sin(((2.0 * ((double) M_PI)) * (angle * 0.005555555555555556))) * ((b - a) * (b + a))) / (x_45_scale * y_45_scale))) + (t_1 + t_2))) * t_3)) / fabs((x_45_scale * y_45_scale))) / (4.0 * (b * a))) / (b * a)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale);
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(0.5 - Float64(1.0 * 0.5)) t_1 = Float64(fma(Float64(t_0 * a), a, Float64(Float64(b * b) * fma(1.0, 0.5, 0.5))) / Float64(x_45_scale * x_45_scale)) t_2 = Float64(fma(Float64(t_0 * b), b, Float64(Float64(a * a) * fma(1.0, 0.5, 0.5))) / Float64(y_45_scale * y_45_scale)) t_3 = Float64(Float64(Float64(b * a) * b) * Float64(-a)) return Float64(Float64(Float64(Float64(Float64(sqrt(Float64(Float64(Float64(t_3 * 8.0) * Float64(hypot(Float64(t_2 - t_1), Float64(Float64(sin(Float64(Float64(2.0 * pi) * Float64(angle * 0.005555555555555556))) * Float64(Float64(b - a) * Float64(b + a))) / Float64(x_45_scale * y_45_scale))) + Float64(t_1 + t_2))) * t_3)) / abs(Float64(x_45_scale * y_45_scale))) / Float64(4.0 * Float64(b * a))) / Float64(b * a)) * Float64(y_45_scale * x_45_scale)) * Float64(y_45_scale * x_45_scale)) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(0.5 - N[(1.0 * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(t$95$0 * a), $MachinePrecision] * a + N[(N[(b * b), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(t$95$0 * b), $MachinePrecision] * b + N[(N[(a * a), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(b * a), $MachinePrecision] * b), $MachinePrecision] * (-a)), $MachinePrecision]}, N[(N[(N[(N[(N[(N[Sqrt[N[(N[(N[(t$95$3 * 8.0), $MachinePrecision] * N[(N[Sqrt[N[(t$95$2 - t$95$1), $MachinePrecision] ^ 2 + N[(N[(N[Sin[N[(N[(2.0 * Pi), $MachinePrecision] * N[(angle * 0.005555555555555556), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * N[(N[(b - a), $MachinePrecision] * N[(b + a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision] + N[(t$95$1 + t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$3), $MachinePrecision]], $MachinePrecision] / N[Abs[N[(x$45$scale * y$45$scale), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(4.0 * N[(b * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(b * a), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := 0.5 - 1 \cdot 0.5\\
t_1 := \frac{\mathsf{fma}\left(t\_0 \cdot a, a, \left(b \cdot b\right) \cdot \mathsf{fma}\left(1, 0.5, 0.5\right)\right)}{x-scale \cdot x-scale}\\
t_2 := \frac{\mathsf{fma}\left(t\_0 \cdot b, b, \left(a \cdot a\right) \cdot \mathsf{fma}\left(1, 0.5, 0.5\right)\right)}{y-scale \cdot y-scale}\\
t_3 := \left(\left(b \cdot a\right) \cdot b\right) \cdot \left(-a\right)\\
\left(\frac{\frac{\frac{\sqrt{\left(\left(t\_3 \cdot 8\right) \cdot \left(\mathsf{hypot}\left(t\_2 - t\_1, \frac{\sin \left(\left(2 \cdot \pi\right) \cdot \left(angle \cdot 0.005555555555555556\right)\right) \cdot \left(\left(b - a\right) \cdot \left(b + a\right)\right)}{x-scale \cdot y-scale}\right) + \left(t\_1 + t\_2\right)\right)\right) \cdot t\_3}}{\left|x-scale \cdot y-scale\right|}}{4 \cdot \left(b \cdot a\right)}}{b \cdot a} \cdot \left(y-scale \cdot x-scale\right)\right) \cdot \left(y-scale \cdot x-scale\right)
\end{array}
Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites14.5%
Taylor expanded in angle around 0
Applied rewrites14.5%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (- 0.5 (* 1.0 0.5)))
(t_1
(/
(fma (* t_0 a) a (* (* b b) (fma 1.0 0.5 0.5)))
(* x-scale x-scale)))
(t_2
(/
(fma (* t_0 b) b (* (* a a) (fma 1.0 0.5 0.5)))
(* y-scale y-scale)))
(t_3 (* (* (* b a) b) (- a))))
(*
(*
(/
(/
(/
(sqrt
(*
(*
(* t_3 8.0)
(+
(hypot
(- t_2 t_1)
(*
0.011111111111111112
(/
(* angle (* PI (* (+ a b) (- b a))))
(* x-scale y-scale))))
(+ t_1 t_2)))
t_3))
(fabs (* x-scale y-scale)))
(* 4.0 (* b a)))
(* b a))
(* y-scale x-scale))
(* y-scale x-scale))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = 0.5 - (1.0 * 0.5);
double t_1 = fma((t_0 * a), a, ((b * b) * fma(1.0, 0.5, 0.5))) / (x_45_scale * x_45_scale);
double t_2 = fma((t_0 * b), b, ((a * a) * fma(1.0, 0.5, 0.5))) / (y_45_scale * y_45_scale);
double t_3 = ((b * a) * b) * -a;
return ((((sqrt((((t_3 * 8.0) * (hypot((t_2 - t_1), (0.011111111111111112 * ((angle * (((double) M_PI) * ((a + b) * (b - a)))) / (x_45_scale * y_45_scale)))) + (t_1 + t_2))) * t_3)) / fabs((x_45_scale * y_45_scale))) / (4.0 * (b * a))) / (b * a)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale);
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(0.5 - Float64(1.0 * 0.5)) t_1 = Float64(fma(Float64(t_0 * a), a, Float64(Float64(b * b) * fma(1.0, 0.5, 0.5))) / Float64(x_45_scale * x_45_scale)) t_2 = Float64(fma(Float64(t_0 * b), b, Float64(Float64(a * a) * fma(1.0, 0.5, 0.5))) / Float64(y_45_scale * y_45_scale)) t_3 = Float64(Float64(Float64(b * a) * b) * Float64(-a)) return Float64(Float64(Float64(Float64(Float64(sqrt(Float64(Float64(Float64(t_3 * 8.0) * Float64(hypot(Float64(t_2 - t_1), Float64(0.011111111111111112 * Float64(Float64(angle * Float64(pi * Float64(Float64(a + b) * Float64(b - a)))) / Float64(x_45_scale * y_45_scale)))) + Float64(t_1 + t_2))) * t_3)) / abs(Float64(x_45_scale * y_45_scale))) / Float64(4.0 * Float64(b * a))) / Float64(b * a)) * Float64(y_45_scale * x_45_scale)) * Float64(y_45_scale * x_45_scale)) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(0.5 - N[(1.0 * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(t$95$0 * a), $MachinePrecision] * a + N[(N[(b * b), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(t$95$0 * b), $MachinePrecision] * b + N[(N[(a * a), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(b * a), $MachinePrecision] * b), $MachinePrecision] * (-a)), $MachinePrecision]}, N[(N[(N[(N[(N[(N[Sqrt[N[(N[(N[(t$95$3 * 8.0), $MachinePrecision] * N[(N[Sqrt[N[(t$95$2 - t$95$1), $MachinePrecision] ^ 2 + N[(0.011111111111111112 * N[(N[(angle * N[(Pi * N[(N[(a + b), $MachinePrecision] * N[(b - a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision] + N[(t$95$1 + t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$3), $MachinePrecision]], $MachinePrecision] / N[Abs[N[(x$45$scale * y$45$scale), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(4.0 * N[(b * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(b * a), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := 0.5 - 1 \cdot 0.5\\
t_1 := \frac{\mathsf{fma}\left(t\_0 \cdot a, a, \left(b \cdot b\right) \cdot \mathsf{fma}\left(1, 0.5, 0.5\right)\right)}{x-scale \cdot x-scale}\\
t_2 := \frac{\mathsf{fma}\left(t\_0 \cdot b, b, \left(a \cdot a\right) \cdot \mathsf{fma}\left(1, 0.5, 0.5\right)\right)}{y-scale \cdot y-scale}\\
t_3 := \left(\left(b \cdot a\right) \cdot b\right) \cdot \left(-a\right)\\
\left(\frac{\frac{\frac{\sqrt{\left(\left(t\_3 \cdot 8\right) \cdot \left(\mathsf{hypot}\left(t\_2 - t\_1, 0.011111111111111112 \cdot \frac{angle \cdot \left(\pi \cdot \left(\left(a + b\right) \cdot \left(b - a\right)\right)\right)}{x-scale \cdot y-scale}\right) + \left(t\_1 + t\_2\right)\right)\right) \cdot t\_3}}{\left|x-scale \cdot y-scale\right|}}{4 \cdot \left(b \cdot a\right)}}{b \cdot a} \cdot \left(y-scale \cdot x-scale\right)\right) \cdot \left(y-scale \cdot x-scale\right)
\end{array}
Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites14.5%
Taylor expanded in angle around 0
Applied rewrites14.5%
Taylor expanded in angle around 0
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
lower-*.f6414.7%
Applied rewrites14.7%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (- 0.5 (* 1.0 0.5))) (t_1 (* (* (* b a) b) (- a))))
(*
(*
(/
(/
(/
(sqrt
(*
(*
(* t_1 8.0)
(+
(sqrt
(pow
(-
(/ (pow a 2.0) (pow y-scale 2.0))
(/ (pow b 2.0) (pow x-scale 2.0)))
2.0))
(+
(/
(fma (* t_0 a) a (* (* b b) (fma 1.0 0.5 0.5)))
(* x-scale x-scale))
(/
(fma (* t_0 b) b (* (* a a) (fma 1.0 0.5 0.5)))
(* y-scale y-scale)))))
t_1))
(fabs (* x-scale y-scale)))
(* 4.0 (* b a)))
(* b a))
(* y-scale x-scale))
(* y-scale x-scale))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = 0.5 - (1.0 * 0.5);
double t_1 = ((b * a) * b) * -a;
return ((((sqrt((((t_1 * 8.0) * (sqrt(pow(((pow(a, 2.0) / pow(y_45_scale, 2.0)) - (pow(b, 2.0) / pow(x_45_scale, 2.0))), 2.0)) + ((fma((t_0 * a), a, ((b * b) * fma(1.0, 0.5, 0.5))) / (x_45_scale * x_45_scale)) + (fma((t_0 * b), b, ((a * a) * fma(1.0, 0.5, 0.5))) / (y_45_scale * y_45_scale))))) * t_1)) / fabs((x_45_scale * y_45_scale))) / (4.0 * (b * a))) / (b * a)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale);
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(0.5 - Float64(1.0 * 0.5)) t_1 = Float64(Float64(Float64(b * a) * b) * Float64(-a)) return Float64(Float64(Float64(Float64(Float64(sqrt(Float64(Float64(Float64(t_1 * 8.0) * Float64(sqrt((Float64(Float64((a ^ 2.0) / (y_45_scale ^ 2.0)) - Float64((b ^ 2.0) / (x_45_scale ^ 2.0))) ^ 2.0)) + Float64(Float64(fma(Float64(t_0 * a), a, Float64(Float64(b * b) * fma(1.0, 0.5, 0.5))) / Float64(x_45_scale * x_45_scale)) + Float64(fma(Float64(t_0 * b), b, Float64(Float64(a * a) * fma(1.0, 0.5, 0.5))) / Float64(y_45_scale * y_45_scale))))) * t_1)) / abs(Float64(x_45_scale * y_45_scale))) / Float64(4.0 * Float64(b * a))) / Float64(b * a)) * Float64(y_45_scale * x_45_scale)) * Float64(y_45_scale * x_45_scale)) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(0.5 - N[(1.0 * 0.5), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(b * a), $MachinePrecision] * b), $MachinePrecision] * (-a)), $MachinePrecision]}, N[(N[(N[(N[(N[(N[Sqrt[N[(N[(N[(t$95$1 * 8.0), $MachinePrecision] * N[(N[Sqrt[N[Power[N[(N[(N[Power[a, 2.0], $MachinePrecision] / N[Power[y$45$scale, 2.0], $MachinePrecision]), $MachinePrecision] - N[(N[Power[b, 2.0], $MachinePrecision] / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision] + N[(N[(N[(N[(t$95$0 * a), $MachinePrecision] * a + N[(N[(b * b), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] + N[(N[(N[(t$95$0 * b), $MachinePrecision] * b + N[(N[(a * a), $MachinePrecision] * N[(1.0 * 0.5 + 0.5), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]], $MachinePrecision] / N[Abs[N[(x$45$scale * y$45$scale), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(4.0 * N[(b * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(b * a), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}
t_0 := 0.5 - 1 \cdot 0.5\\
t_1 := \left(\left(b \cdot a\right) \cdot b\right) \cdot \left(-a\right)\\
\left(\frac{\frac{\frac{\sqrt{\left(\left(t\_1 \cdot 8\right) \cdot \left(\sqrt{{\left(\frac{{a}^{2}}{{y-scale}^{2}} - \frac{{b}^{2}}{{x-scale}^{2}}\right)}^{2}} + \left(\frac{\mathsf{fma}\left(t\_0 \cdot a, a, \left(b \cdot b\right) \cdot \mathsf{fma}\left(1, 0.5, 0.5\right)\right)}{x-scale \cdot x-scale} + \frac{\mathsf{fma}\left(t\_0 \cdot b, b, \left(a \cdot a\right) \cdot \mathsf{fma}\left(1, 0.5, 0.5\right)\right)}{y-scale \cdot y-scale}\right)\right)\right) \cdot t\_1}}{\left|x-scale \cdot y-scale\right|}}{4 \cdot \left(b \cdot a\right)}}{b \cdot a} \cdot \left(y-scale \cdot x-scale\right)\right) \cdot \left(y-scale \cdot x-scale\right)
\end{array}
Initial program 2.6%
Applied rewrites6.5%
Applied rewrites13.0%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.9%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites12.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites13.8%
Taylor expanded in angle around 0
Applied rewrites14.5%
Taylor expanded in angle around 0
Applied rewrites14.5%
Taylor expanded in angle around 0
Applied rewrites13.4%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (/ b (* x-scale x-scale)))
(t_1 (* (* (* x-scale y-scale) x-scale) y-scale))
(t_2 (/ a (* y-scale y-scale)))
(t_3 (* 4.0 (* a b))))
(*
(/
(sqrt
(*
(* (* (/ (* (* t_3 b) (- a)) t_1) 2.0) (* (* (- a) b) (* a b)))
(fma a t_2 (fma b t_0 (fabs (- (* a t_2) (* b t_0)))))))
t_3)
(/ t_1 (* a b)))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = b / (x_45_scale * x_45_scale);
double t_1 = ((x_45_scale * y_45_scale) * x_45_scale) * y_45_scale;
double t_2 = a / (y_45_scale * y_45_scale);
double t_3 = 4.0 * (a * b);
return (sqrt(((((((t_3 * b) * -a) / t_1) * 2.0) * ((-a * b) * (a * b))) * fma(a, t_2, fma(b, t_0, fabs(((a * t_2) - (b * t_0))))))) / t_3) * (t_1 / (a * b));
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(b / Float64(x_45_scale * x_45_scale)) t_1 = Float64(Float64(Float64(x_45_scale * y_45_scale) * x_45_scale) * y_45_scale) t_2 = Float64(a / Float64(y_45_scale * y_45_scale)) t_3 = Float64(4.0 * Float64(a * b)) return Float64(Float64(sqrt(Float64(Float64(Float64(Float64(Float64(Float64(t_3 * b) * Float64(-a)) / t_1) * 2.0) * Float64(Float64(Float64(-a) * b) * Float64(a * b))) * fma(a, t_2, fma(b, t_0, abs(Float64(Float64(a * t_2) - Float64(b * t_0))))))) / t_3) * Float64(t_1 / Float64(a * b))) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(x$45$scale * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * y$45$scale), $MachinePrecision]}, Block[{t$95$2 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(4.0 * N[(a * b), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[Sqrt[N[(N[(N[(N[(N[(N[(t$95$3 * b), $MachinePrecision] * (-a)), $MachinePrecision] / t$95$1), $MachinePrecision] * 2.0), $MachinePrecision] * N[(N[((-a) * b), $MachinePrecision] * N[(a * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(a * t$95$2 + N[(b * t$95$0 + N[Abs[N[(N[(a * t$95$2), $MachinePrecision] - N[(b * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / t$95$3), $MachinePrecision] * N[(t$95$1 / N[(a * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := \frac{b}{x-scale \cdot x-scale}\\
t_1 := \left(\left(x-scale \cdot y-scale\right) \cdot x-scale\right) \cdot y-scale\\
t_2 := \frac{a}{y-scale \cdot y-scale}\\
t_3 := 4 \cdot \left(a \cdot b\right)\\
\frac{\sqrt{\left(\left(\frac{\left(t\_3 \cdot b\right) \cdot \left(-a\right)}{t\_1} \cdot 2\right) \cdot \left(\left(\left(-a\right) \cdot b\right) \cdot \left(a \cdot b\right)\right)\right) \cdot \mathsf{fma}\left(a, t\_2, \mathsf{fma}\left(b, t\_0, \left|a \cdot t\_2 - b \cdot t\_0\right|\right)\right)}}{t\_3} \cdot \frac{t\_1}{a \cdot b}
\end{array}
Initial program 2.6%
Taylor expanded in angle around 0
Applied rewrites4.2%
Applied rewrites3.7%
Applied rewrites7.4%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (/ b (* x-scale x-scale)))
(t_1 (/ a (* y-scale y-scale)))
(t_2 (* (* 4.0 (* a b)) b)))
(*
(*
(/
(sqrt
(*
(*
(*
(/ (* t_2 (- a)) (* (* x-scale y-scale) (* x-scale y-scale)))
2.0)
(* (* (- a) b) (* a b)))
(fma a t_1 (fma b t_0 (fabs (- (* a t_1) (* b t_0)))))))
(* t_2 a))
(* (* x-scale y-scale) x-scale))
y-scale)))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = b / (x_45_scale * x_45_scale);
double t_1 = a / (y_45_scale * y_45_scale);
double t_2 = (4.0 * (a * b)) * b;
return ((sqrt((((((t_2 * -a) / ((x_45_scale * y_45_scale) * (x_45_scale * y_45_scale))) * 2.0) * ((-a * b) * (a * b))) * fma(a, t_1, fma(b, t_0, fabs(((a * t_1) - (b * t_0))))))) / (t_2 * a)) * ((x_45_scale * y_45_scale) * x_45_scale)) * y_45_scale;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(b / Float64(x_45_scale * x_45_scale)) t_1 = Float64(a / Float64(y_45_scale * y_45_scale)) t_2 = Float64(Float64(4.0 * Float64(a * b)) * b) return Float64(Float64(Float64(sqrt(Float64(Float64(Float64(Float64(Float64(t_2 * Float64(-a)) / Float64(Float64(x_45_scale * y_45_scale) * Float64(x_45_scale * y_45_scale))) * 2.0) * Float64(Float64(Float64(-a) * b) * Float64(a * b))) * fma(a, t_1, fma(b, t_0, abs(Float64(Float64(a * t_1) - Float64(b * t_0))))))) / Float64(t_2 * a)) * Float64(Float64(x_45_scale * y_45_scale) * x_45_scale)) * y_45_scale) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(4.0 * N[(a * b), $MachinePrecision]), $MachinePrecision] * b), $MachinePrecision]}, N[(N[(N[(N[Sqrt[N[(N[(N[(N[(N[(t$95$2 * (-a)), $MachinePrecision] / N[(N[(x$45$scale * y$45$scale), $MachinePrecision] * N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision] * N[(N[((-a) * b), $MachinePrecision] * N[(a * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(a * t$95$1 + N[(b * t$95$0 + N[Abs[N[(N[(a * t$95$1), $MachinePrecision] - N[(b * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(t$95$2 * a), $MachinePrecision]), $MachinePrecision] * N[(N[(x$45$scale * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision]), $MachinePrecision] * y$45$scale), $MachinePrecision]]]]
\begin{array}{l}
t_0 := \frac{b}{x-scale \cdot x-scale}\\
t_1 := \frac{a}{y-scale \cdot y-scale}\\
t_2 := \left(4 \cdot \left(a \cdot b\right)\right) \cdot b\\
\left(\frac{\sqrt{\left(\left(\frac{t\_2 \cdot \left(-a\right)}{\left(x-scale \cdot y-scale\right) \cdot \left(x-scale \cdot y-scale\right)} \cdot 2\right) \cdot \left(\left(\left(-a\right) \cdot b\right) \cdot \left(a \cdot b\right)\right)\right) \cdot \mathsf{fma}\left(a, t\_1, \mathsf{fma}\left(b, t\_0, \left|a \cdot t\_1 - b \cdot t\_0\right|\right)\right)}}{t\_2 \cdot a} \cdot \left(\left(x-scale \cdot y-scale\right) \cdot x-scale\right)\right) \cdot y-scale
\end{array}
Initial program 2.6%
Taylor expanded in angle around 0
Applied rewrites4.2%
Applied rewrites3.7%
Applied rewrites4.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
lower-*.f645.0%
Applied rewrites5.0%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (/ b (* x-scale x-scale)))
(t_1 (* (* x-scale y-scale) x-scale))
(t_2 (* (* 4.0 (* a b)) b))
(t_3 (/ a (* y-scale y-scale))))
(*
(*
(/
(sqrt
(*
(*
(* (* t_2 (/ (- a) (* t_1 y-scale))) 2.0)
(* (* (- a) b) (* a b)))
(fma a t_3 (fma b t_0 (fabs (- (* a t_3) (* b t_0)))))))
(* t_2 a))
t_1)
y-scale)))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = b / (x_45_scale * x_45_scale);
double t_1 = (x_45_scale * y_45_scale) * x_45_scale;
double t_2 = (4.0 * (a * b)) * b;
double t_3 = a / (y_45_scale * y_45_scale);
return ((sqrt(((((t_2 * (-a / (t_1 * y_45_scale))) * 2.0) * ((-a * b) * (a * b))) * fma(a, t_3, fma(b, t_0, fabs(((a * t_3) - (b * t_0))))))) / (t_2 * a)) * t_1) * y_45_scale;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(b / Float64(x_45_scale * x_45_scale)) t_1 = Float64(Float64(x_45_scale * y_45_scale) * x_45_scale) t_2 = Float64(Float64(4.0 * Float64(a * b)) * b) t_3 = Float64(a / Float64(y_45_scale * y_45_scale)) return Float64(Float64(Float64(sqrt(Float64(Float64(Float64(Float64(t_2 * Float64(Float64(-a) / Float64(t_1 * y_45_scale))) * 2.0) * Float64(Float64(Float64(-a) * b) * Float64(a * b))) * fma(a, t_3, fma(b, t_0, abs(Float64(Float64(a * t_3) - Float64(b * t_0))))))) / Float64(t_2 * a)) * t_1) * y_45_scale) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x$45$scale * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision]}, Block[{t$95$2 = N[(N[(4.0 * N[(a * b), $MachinePrecision]), $MachinePrecision] * b), $MachinePrecision]}, Block[{t$95$3 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[(N[Sqrt[N[(N[(N[(N[(t$95$2 * N[((-a) / N[(t$95$1 * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision] * N[(N[((-a) * b), $MachinePrecision] * N[(a * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(a * t$95$3 + N[(b * t$95$0 + N[Abs[N[(N[(a * t$95$3), $MachinePrecision] - N[(b * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(t$95$2 * a), $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision] * y$45$scale), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := \frac{b}{x-scale \cdot x-scale}\\
t_1 := \left(x-scale \cdot y-scale\right) \cdot x-scale\\
t_2 := \left(4 \cdot \left(a \cdot b\right)\right) \cdot b\\
t_3 := \frac{a}{y-scale \cdot y-scale}\\
\left(\frac{\sqrt{\left(\left(\left(t\_2 \cdot \frac{-a}{t\_1 \cdot y-scale}\right) \cdot 2\right) \cdot \left(\left(\left(-a\right) \cdot b\right) \cdot \left(a \cdot b\right)\right)\right) \cdot \mathsf{fma}\left(a, t\_3, \mathsf{fma}\left(b, t\_0, \left|a \cdot t\_3 - b \cdot t\_0\right|\right)\right)}}{t\_2 \cdot a} \cdot t\_1\right) \cdot y-scale
\end{array}
Initial program 2.6%
Taylor expanded in angle around 0
Applied rewrites4.2%
Applied rewrites3.7%
Applied rewrites4.4%
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f644.0%
Applied rewrites4.0%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* 4.0 (* a b)) b)))
(*
(*
(*
(/
(sqrt
(*
(fma
(/ a (* y-scale y-scale))
a
(fma
(/ b (* x-scale x-scale))
b
(fabs
(-
(/ (* b b) (* x-scale x-scale))
(/ (* a a) (* y-scale y-scale))))))
(*
(*
(*
(/
(* t_0 (- a))
(* (* (* x-scale y-scale) x-scale) y-scale))
2.0)
(* (- a) b))
(* a b))))
(* t_0 a))
(* x-scale y-scale))
x-scale)
y-scale)))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (4.0 * (a * b)) * b;
return (((sqrt((fma((a / (y_45_scale * y_45_scale)), a, fma((b / (x_45_scale * x_45_scale)), b, fabs((((b * b) / (x_45_scale * x_45_scale)) - ((a * a) / (y_45_scale * y_45_scale)))))) * (((((t_0 * -a) / (((x_45_scale * y_45_scale) * x_45_scale) * y_45_scale)) * 2.0) * (-a * b)) * (a * b)))) / (t_0 * a)) * (x_45_scale * y_45_scale)) * x_45_scale) * y_45_scale;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(4.0 * Float64(a * b)) * b) return Float64(Float64(Float64(Float64(sqrt(Float64(fma(Float64(a / Float64(y_45_scale * y_45_scale)), a, fma(Float64(b / Float64(x_45_scale * x_45_scale)), b, abs(Float64(Float64(Float64(b * b) / Float64(x_45_scale * x_45_scale)) - Float64(Float64(a * a) / Float64(y_45_scale * y_45_scale)))))) * Float64(Float64(Float64(Float64(Float64(t_0 * Float64(-a)) / Float64(Float64(Float64(x_45_scale * y_45_scale) * x_45_scale) * y_45_scale)) * 2.0) * Float64(Float64(-a) * b)) * Float64(a * b)))) / Float64(t_0 * a)) * Float64(x_45_scale * y_45_scale)) * x_45_scale) * y_45_scale) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(4.0 * N[(a * b), $MachinePrecision]), $MachinePrecision] * b), $MachinePrecision]}, N[(N[(N[(N[(N[Sqrt[N[(N[(N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * a + N[(N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * b + N[Abs[N[(N[(N[(b * b), $MachinePrecision] / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] - N[(N[(a * a), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(N[(t$95$0 * (-a)), $MachinePrecision] / N[(N[(N[(x$45$scale * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * y$45$scale), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision] * N[((-a) * b), $MachinePrecision]), $MachinePrecision] * N[(a * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(t$95$0 * a), $MachinePrecision]), $MachinePrecision] * N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * x$45$scale), $MachinePrecision] * y$45$scale), $MachinePrecision]]
\begin{array}{l}
t_0 := \left(4 \cdot \left(a \cdot b\right)\right) \cdot b\\
\left(\left(\frac{\sqrt{\mathsf{fma}\left(\frac{a}{y-scale \cdot y-scale}, a, \mathsf{fma}\left(\frac{b}{x-scale \cdot x-scale}, b, \left|\frac{b \cdot b}{x-scale \cdot x-scale} - \frac{a \cdot a}{y-scale \cdot y-scale}\right|\right)\right) \cdot \left(\left(\left(\frac{t\_0 \cdot \left(-a\right)}{\left(\left(x-scale \cdot y-scale\right) \cdot x-scale\right) \cdot y-scale} \cdot 2\right) \cdot \left(\left(-a\right) \cdot b\right)\right) \cdot \left(a \cdot b\right)\right)}}{t\_0 \cdot a} \cdot \left(x-scale \cdot y-scale\right)\right) \cdot x-scale\right) \cdot y-scale
\end{array}
Initial program 2.6%
Taylor expanded in angle around 0
Applied rewrites4.2%
Applied rewrites3.7%
Applied rewrites4.4%
Applied rewrites4.2%
herbie shell --seed 2025213
(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))))