
(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}
\\
\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}
\end{array}
Herbie found 13 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}
\\
\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}
\end{array}
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (/ angle 180.0) PI))
(t_1 (* 2.0 (* PI (* 0.005555555555555556 angle))))
(t_2 (cos t_0))
(t_3
(*
(/ (* 4.0 (* a b)) (* y-scale x-scale))
(/ (* (- a) b) (* y-scale x-scale))))
(t_4 (sin t_0))
(t_5 (* 0.5 (cos t_1)))
(t_6 (- 0.5 t_5))
(t_7 (+ 0.5 t_5)))
(/
(-
(sqrt
(*
(* (* 2.0 t_3) (* (* b a) (* b (- a))))
(+
(+
(/ (/ (+ (pow (* a t_4) 2.0) (pow (* b t_2) 2.0)) x-scale) x-scale)
(/ (/ (+ (pow (* a t_2) 2.0) (pow (* b t_4) 2.0)) y-scale) y-scale))
(hypot
(/ (* (* (+ b a) (- b a)) (sin t_1)) (* y-scale x-scale))
(-
(/ (fma t_6 (* b b) (* t_7 (* a a))) (* y-scale y-scale))
(/ (fma t_6 (* a a) (* t_7 (* b b))) (* x-scale x-scale))))))))
t_3)))
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 = 2.0 * (((double) M_PI) * (0.005555555555555556 * angle));
double t_2 = cos(t_0);
double t_3 = ((4.0 * (a * b)) / (y_45_scale * x_45_scale)) * ((-a * b) / (y_45_scale * x_45_scale));
double t_4 = sin(t_0);
double t_5 = 0.5 * cos(t_1);
double t_6 = 0.5 - t_5;
double t_7 = 0.5 + t_5;
return -sqrt((((2.0 * t_3) * ((b * a) * (b * -a))) * (((((pow((a * t_4), 2.0) + pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale) + (((pow((a * t_2), 2.0) + pow((b * t_4), 2.0)) / y_45_scale) / y_45_scale)) + hypot(((((b + a) * (b - a)) * sin(t_1)) / (y_45_scale * x_45_scale)), ((fma(t_6, (b * b), (t_7 * (a * a))) / (y_45_scale * y_45_scale)) - (fma(t_6, (a * a), (t_7 * (b * b))) / (x_45_scale * x_45_scale))))))) / t_3;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(angle / 180.0) * pi) t_1 = Float64(2.0 * Float64(pi * Float64(0.005555555555555556 * angle))) t_2 = cos(t_0) t_3 = Float64(Float64(Float64(4.0 * Float64(a * b)) / Float64(y_45_scale * x_45_scale)) * Float64(Float64(Float64(-a) * b) / Float64(y_45_scale * x_45_scale))) t_4 = sin(t_0) t_5 = Float64(0.5 * cos(t_1)) t_6 = Float64(0.5 - t_5) t_7 = Float64(0.5 + t_5) return Float64(Float64(-sqrt(Float64(Float64(Float64(2.0 * t_3) * Float64(Float64(b * a) * Float64(b * Float64(-a)))) * Float64(Float64(Float64(Float64(Float64((Float64(a * t_4) ^ 2.0) + (Float64(b * t_2) ^ 2.0)) / x_45_scale) / x_45_scale) + Float64(Float64(Float64((Float64(a * t_2) ^ 2.0) + (Float64(b * t_4) ^ 2.0)) / y_45_scale) / y_45_scale)) + hypot(Float64(Float64(Float64(Float64(b + a) * Float64(b - a)) * sin(t_1)) / Float64(y_45_scale * x_45_scale)), Float64(Float64(fma(t_6, Float64(b * b), Float64(t_7 * Float64(a * a))) / Float64(y_45_scale * y_45_scale)) - Float64(fma(t_6, Float64(a * a), Float64(t_7 * Float64(b * b))) / Float64(x_45_scale * x_45_scale)))))))) / t_3) 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[(2.0 * N[(Pi * N[(0.005555555555555556 * angle), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Cos[t$95$0], $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[(4.0 * N[(a * b), $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(N[((-a) * b), $MachinePrecision] / N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[Sin[t$95$0], $MachinePrecision]}, Block[{t$95$5 = N[(0.5 * N[Cos[t$95$1], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(0.5 - t$95$5), $MachinePrecision]}, Block[{t$95$7 = N[(0.5 + t$95$5), $MachinePrecision]}, N[((-N[Sqrt[N[(N[(N[(2.0 * t$95$3), $MachinePrecision] * N[(N[(b * a), $MachinePrecision] * N[(b * (-a)), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(N[(N[Power[N[(a * t$95$4), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$2), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision] + N[(N[(N[(N[Power[N[(a * t$95$2), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * t$95$4), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]), $MachinePrecision] + N[Sqrt[N[(N[(N[(N[(b + a), $MachinePrecision] * N[(b - a), $MachinePrecision]), $MachinePrecision] * N[Sin[t$95$1], $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] ^ 2 + N[(N[(N[(t$95$6 * N[(b * b), $MachinePrecision] + N[(t$95$7 * N[(a * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] - N[(N[(t$95$6 * N[(a * a), $MachinePrecision] + N[(t$95$7 * N[(b * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$3), $MachinePrecision]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{angle}{180} \cdot \pi\\
t_1 := 2 \cdot \left(\pi \cdot \left(0.005555555555555556 \cdot angle\right)\right)\\
t_2 := \cos t\_0\\
t_3 := \frac{4 \cdot \left(a \cdot b\right)}{y-scale \cdot x-scale} \cdot \frac{\left(-a\right) \cdot b}{y-scale \cdot x-scale}\\
t_4 := \sin t\_0\\
t_5 := 0.5 \cdot \cos t\_1\\
t_6 := 0.5 - t\_5\\
t_7 := 0.5 + t\_5\\
\frac{-\sqrt{\left(\left(2 \cdot t\_3\right) \cdot \left(\left(b \cdot a\right) \cdot \left(b \cdot \left(-a\right)\right)\right)\right) \cdot \left(\left(\frac{\frac{{\left(a \cdot t\_4\right)}^{2} + {\left(b \cdot t\_2\right)}^{2}}{x-scale}}{x-scale} + \frac{\frac{{\left(a \cdot t\_2\right)}^{2} + {\left(b \cdot t\_4\right)}^{2}}{y-scale}}{y-scale}\right) + \mathsf{hypot}\left(\frac{\left(\left(b + a\right) \cdot \left(b - a\right)\right) \cdot \sin t\_1}{y-scale \cdot x-scale}, \frac{\mathsf{fma}\left(t\_6, b \cdot b, t\_7 \cdot \left(a \cdot a\right)\right)}{y-scale \cdot y-scale} - \frac{\mathsf{fma}\left(t\_6, a \cdot a, t\_7 \cdot \left(b \cdot b\right)\right)}{x-scale \cdot x-scale}\right)\right)}}{t\_3}
\end{array}
\end{array}
Initial program 2.5%
Applied rewrites6.0%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f647.3
lift-*.f64N/A
*-commutativeN/A
lower-*.f647.3
lift-*.f64N/A
*-commutativeN/A
lift-*.f647.3
Applied rewrites7.3%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f6410.8
lift-*.f64N/A
*-commutativeN/A
lower-*.f6410.8
lift-*.f64N/A
*-commutativeN/A
lift-*.f6410.8
Applied rewrites10.8%
(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
(*
(/ (* 4.0 (* a b)) (* y-scale x-scale))
(/ (* (- a) b) (* y-scale x-scale)))))
(/
(-
(sqrt
(*
(* (* 2.0 t_3) (* (* b a) (* b (- a))))
(+
(+
(/ (/ (+ (pow (* a t_1) 2.0) (pow (* b t_2) 2.0)) x-scale) x-scale)
(/ (/ (+ (pow (* a t_2) 2.0) (pow (* b t_1) 2.0)) y-scale) y-scale))
(hypot
(/
(*
(* (+ b a) (- b a))
(sin (* 2.0 (* PI (* 0.005555555555555556 angle)))))
(* y-scale x-scale))
(-
(/
(fma (- 0.5 0.5) (* b b) (* (+ 0.5 0.5) (* a a)))
(* y-scale y-scale))
(/
(fma (- 0.5 0.5) (* a a) (* (+ 0.5 0.5) (* b b)))
(* x-scale x-scale))))))))
t_3)))
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 = ((4.0 * (a * b)) / (y_45_scale * x_45_scale)) * ((-a * b) / (y_45_scale * x_45_scale));
return -sqrt((((2.0 * t_3) * ((b * a) * (b * -a))) * (((((pow((a * t_1), 2.0) + pow((b * t_2), 2.0)) / x_45_scale) / x_45_scale) + (((pow((a * t_2), 2.0) + pow((b * t_1), 2.0)) / y_45_scale) / y_45_scale)) + hypot(((((b + a) * (b - a)) * sin((2.0 * (((double) M_PI) * (0.005555555555555556 * angle))))) / (y_45_scale * x_45_scale)), ((fma((0.5 - 0.5), (b * b), ((0.5 + 0.5) * (a * a))) / (y_45_scale * y_45_scale)) - (fma((0.5 - 0.5), (a * a), ((0.5 + 0.5) * (b * b))) / (x_45_scale * x_45_scale))))))) / t_3;
}
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(4.0 * Float64(a * b)) / Float64(y_45_scale * x_45_scale)) * Float64(Float64(Float64(-a) * b) / Float64(y_45_scale * x_45_scale))) return Float64(Float64(-sqrt(Float64(Float64(Float64(2.0 * t_3) * Float64(Float64(b * a) * Float64(b * Float64(-a)))) * Float64(Float64(Float64(Float64(Float64((Float64(a * t_1) ^ 2.0) + (Float64(b * t_2) ^ 2.0)) / x_45_scale) / x_45_scale) + Float64(Float64(Float64((Float64(a * t_2) ^ 2.0) + (Float64(b * t_1) ^ 2.0)) / y_45_scale) / y_45_scale)) + hypot(Float64(Float64(Float64(Float64(b + a) * Float64(b - a)) * sin(Float64(2.0 * Float64(pi * Float64(0.005555555555555556 * angle))))) / Float64(y_45_scale * x_45_scale)), Float64(Float64(fma(Float64(0.5 - 0.5), Float64(b * b), Float64(Float64(0.5 + 0.5) * Float64(a * a))) / Float64(y_45_scale * y_45_scale)) - Float64(fma(Float64(0.5 - 0.5), Float64(a * a), Float64(Float64(0.5 + 0.5) * Float64(b * b))) / Float64(x_45_scale * x_45_scale)))))))) / t_3) 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[(4.0 * N[(a * b), $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(N[((-a) * b), $MachinePrecision] / N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[((-N[Sqrt[N[(N[(N[(2.0 * t$95$3), $MachinePrecision] * N[(N[(b * a), $MachinePrecision] * N[(b * (-a)), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(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] + 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]), $MachinePrecision] + N[Sqrt[N[(N[(N[(N[(b + a), $MachinePrecision] * N[(b - a), $MachinePrecision]), $MachinePrecision] * N[Sin[N[(2.0 * N[(Pi * N[(0.005555555555555556 * angle), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] ^ 2 + N[(N[(N[(N[(0.5 - 0.5), $MachinePrecision] * N[(b * b), $MachinePrecision] + N[(N[(0.5 + 0.5), $MachinePrecision] * N[(a * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] - N[(N[(N[(0.5 - 0.5), $MachinePrecision] * N[(a * a), $MachinePrecision] + N[(N[(0.5 + 0.5), $MachinePrecision] * N[(b * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$3), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{angle}{180} \cdot \pi\\
t_1 := \sin t\_0\\
t_2 := \cos t\_0\\
t_3 := \frac{4 \cdot \left(a \cdot b\right)}{y-scale \cdot x-scale} \cdot \frac{\left(-a\right) \cdot b}{y-scale \cdot x-scale}\\
\frac{-\sqrt{\left(\left(2 \cdot t\_3\right) \cdot \left(\left(b \cdot a\right) \cdot \left(b \cdot \left(-a\right)\right)\right)\right) \cdot \left(\left(\frac{\frac{{\left(a \cdot t\_1\right)}^{2} + {\left(b \cdot t\_2\right)}^{2}}{x-scale}}{x-scale} + \frac{\frac{{\left(a \cdot t\_2\right)}^{2} + {\left(b \cdot t\_1\right)}^{2}}{y-scale}}{y-scale}\right) + \mathsf{hypot}\left(\frac{\left(\left(b + a\right) \cdot \left(b - a\right)\right) \cdot \sin \left(2 \cdot \left(\pi \cdot \left(0.005555555555555556 \cdot angle\right)\right)\right)}{y-scale \cdot x-scale}, \frac{\mathsf{fma}\left(0.5 - 0.5, b \cdot b, \left(0.5 + 0.5\right) \cdot \left(a \cdot a\right)\right)}{y-scale \cdot y-scale} - \frac{\mathsf{fma}\left(0.5 - 0.5, a \cdot a, \left(0.5 + 0.5\right) \cdot \left(b \cdot b\right)\right)}{x-scale \cdot x-scale}\right)\right)}}{t\_3}
\end{array}
\end{array}
Initial program 2.5%
Applied rewrites6.0%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f647.3
lift-*.f64N/A
*-commutativeN/A
lower-*.f647.3
lift-*.f64N/A
*-commutativeN/A
lift-*.f647.3
Applied rewrites7.3%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f6410.8
lift-*.f64N/A
*-commutativeN/A
lower-*.f6410.8
lift-*.f64N/A
*-commutativeN/A
lift-*.f6410.8
Applied rewrites10.8%
Taylor expanded in angle around 0
Applied rewrites10.7%
Taylor expanded in angle around 0
Applied rewrites10.7%
Taylor expanded in angle around 0
Applied rewrites10.7%
Taylor expanded in angle around 0
Applied rewrites10.7%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (/ angle 180.0) PI))
(t_1
(*
(/ (* 4.0 (* a b)) (* y-scale x-scale))
(/ (* (- a) b) (* y-scale x-scale)))))
(/
(-
(sqrt
(*
(* (* 2.0 t_1) (* (* b a) (* b (- a))))
(+
(+
(/
(/ (+ (pow (* a (sin t_0)) 2.0) (pow (* b (cos t_0)) 2.0)) x-scale)
x-scale)
(/ (/ (pow a 2.0) y-scale) y-scale))
(hypot
(/
(*
(* (+ b a) (- b a))
(sin (* 2.0 (* PI (* 0.005555555555555556 angle)))))
(* y-scale x-scale))
(-
(/
(fma (- 0.5 0.5) (* b b) (* (+ 0.5 0.5) (* a a)))
(* y-scale y-scale))
(/
(fma (- 0.5 0.5) (* a a) (* (+ 0.5 0.5) (* b b)))
(* x-scale x-scale))))))))
t_1)))
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 = ((4.0 * (a * b)) / (y_45_scale * x_45_scale)) * ((-a * b) / (y_45_scale * x_45_scale));
return -sqrt((((2.0 * t_1) * ((b * a) * (b * -a))) * (((((pow((a * sin(t_0)), 2.0) + pow((b * cos(t_0)), 2.0)) / x_45_scale) / x_45_scale) + ((pow(a, 2.0) / y_45_scale) / y_45_scale)) + hypot(((((b + a) * (b - a)) * sin((2.0 * (((double) M_PI) * (0.005555555555555556 * angle))))) / (y_45_scale * x_45_scale)), ((fma((0.5 - 0.5), (b * b), ((0.5 + 0.5) * (a * a))) / (y_45_scale * y_45_scale)) - (fma((0.5 - 0.5), (a * a), ((0.5 + 0.5) * (b * b))) / (x_45_scale * x_45_scale))))))) / t_1;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(angle / 180.0) * pi) t_1 = Float64(Float64(Float64(4.0 * Float64(a * b)) / Float64(y_45_scale * x_45_scale)) * Float64(Float64(Float64(-a) * b) / Float64(y_45_scale * x_45_scale))) return Float64(Float64(-sqrt(Float64(Float64(Float64(2.0 * t_1) * Float64(Float64(b * a) * Float64(b * Float64(-a)))) * Float64(Float64(Float64(Float64(Float64((Float64(a * sin(t_0)) ^ 2.0) + (Float64(b * cos(t_0)) ^ 2.0)) / x_45_scale) / x_45_scale) + Float64(Float64((a ^ 2.0) / y_45_scale) / y_45_scale)) + hypot(Float64(Float64(Float64(Float64(b + a) * Float64(b - a)) * sin(Float64(2.0 * Float64(pi * Float64(0.005555555555555556 * angle))))) / Float64(y_45_scale * x_45_scale)), Float64(Float64(fma(Float64(0.5 - 0.5), Float64(b * b), Float64(Float64(0.5 + 0.5) * Float64(a * a))) / Float64(y_45_scale * y_45_scale)) - Float64(fma(Float64(0.5 - 0.5), Float64(a * a), Float64(Float64(0.5 + 0.5) * Float64(b * b))) / Float64(x_45_scale * x_45_scale)))))))) / t_1) 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[(N[(N[(4.0 * N[(a * b), $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(N[((-a) * b), $MachinePrecision] / N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, N[((-N[Sqrt[N[(N[(N[(2.0 * t$95$1), $MachinePrecision] * N[(N[(b * a), $MachinePrecision] * N[(b * (-a)), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(N[(N[(N[Power[N[(a * N[Sin[t$95$0], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[N[(b * N[Cos[t$95$0], $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision] / x$45$scale), $MachinePrecision] / x$45$scale), $MachinePrecision] + N[(N[(N[Power[a, 2.0], $MachinePrecision] / y$45$scale), $MachinePrecision] / y$45$scale), $MachinePrecision]), $MachinePrecision] + N[Sqrt[N[(N[(N[(N[(b + a), $MachinePrecision] * N[(b - a), $MachinePrecision]), $MachinePrecision] * N[Sin[N[(2.0 * N[(Pi * N[(0.005555555555555556 * angle), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] ^ 2 + N[(N[(N[(N[(0.5 - 0.5), $MachinePrecision] * N[(b * b), $MachinePrecision] + N[(N[(0.5 + 0.5), $MachinePrecision] * N[(a * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] - N[(N[(N[(0.5 - 0.5), $MachinePrecision] * N[(a * a), $MachinePrecision] + N[(N[(0.5 + 0.5), $MachinePrecision] * N[(b * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$1), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{angle}{180} \cdot \pi\\
t_1 := \frac{4 \cdot \left(a \cdot b\right)}{y-scale \cdot x-scale} \cdot \frac{\left(-a\right) \cdot b}{y-scale \cdot x-scale}\\
\frac{-\sqrt{\left(\left(2 \cdot t\_1\right) \cdot \left(\left(b \cdot a\right) \cdot \left(b \cdot \left(-a\right)\right)\right)\right) \cdot \left(\left(\frac{\frac{{\left(a \cdot \sin t\_0\right)}^{2} + {\left(b \cdot \cos t\_0\right)}^{2}}{x-scale}}{x-scale} + \frac{\frac{{a}^{2}}{y-scale}}{y-scale}\right) + \mathsf{hypot}\left(\frac{\left(\left(b + a\right) \cdot \left(b - a\right)\right) \cdot \sin \left(2 \cdot \left(\pi \cdot \left(0.005555555555555556 \cdot angle\right)\right)\right)}{y-scale \cdot x-scale}, \frac{\mathsf{fma}\left(0.5 - 0.5, b \cdot b, \left(0.5 + 0.5\right) \cdot \left(a \cdot a\right)\right)}{y-scale \cdot y-scale} - \frac{\mathsf{fma}\left(0.5 - 0.5, a \cdot a, \left(0.5 + 0.5\right) \cdot \left(b \cdot b\right)\right)}{x-scale \cdot x-scale}\right)\right)}}{t\_1}
\end{array}
\end{array}
Initial program 2.5%
Applied rewrites6.0%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f647.3
lift-*.f64N/A
*-commutativeN/A
lower-*.f647.3
lift-*.f64N/A
*-commutativeN/A
lift-*.f647.3
Applied rewrites7.3%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-pow.f64N/A
unpow2N/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lower-/.f6410.8
lift-*.f64N/A
*-commutativeN/A
lower-*.f6410.8
lift-*.f64N/A
*-commutativeN/A
lift-*.f6410.8
Applied rewrites10.8%
Taylor expanded in angle around 0
Applied rewrites10.7%
Taylor expanded in angle around 0
Applied rewrites10.7%
Taylor expanded in angle around 0
Applied rewrites10.7%
Taylor expanded in angle around 0
Applied rewrites10.7%
Taylor expanded in angle around 0
lower-/.f64N/A
lower-pow.f6410.7
Applied rewrites10.7%
(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 (* (* PI angle) 0.011111111111111112))
(t_4 (cos t_3))
(t_5 (/ t_4 (* x-scale x-scale)))
(t_6 (* (* (- a) b) b))
(t_7 (* t_6 a))
(t_8 (/ 0.5 (* x-scale x-scale))))
(if (<= a 1.15e-104)
(*
(/
(sqrt
(*
(*
(fma b t_0 (fma a t_2 (fabs (- (* a t_2) (* b t_0)))))
(* (/ t_7 t_1) 8.0))
t_7))
(* (* (* (* b a) 4.0) a) b))
t_1)
(*
(/
(/
(/
(sqrt
(*
(*
t_6
(*
a
(*
(-
(+
(+
(hypot
(/ (sin t_3) (* x-scale y-scale))
(-
t_8
(fma
0.5
(+ t_5 (/ t_4 (* y-scale y-scale)))
(/ 0.5 (* y-scale y-scale)))))
t_8)
(/ (fma t_4 0.5 0.5) (* y-scale y-scale)))
(* t_5 0.5))
(* a a))))
(* 8.0 t_7)))
(fabs (* x-scale y-scale)))
(* (* 4.0 a) b))
(* b a))
(* (* (* y-scale x-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 = (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 = (((double) M_PI) * angle) * 0.011111111111111112;
double t_4 = cos(t_3);
double t_5 = t_4 / (x_45_scale * x_45_scale);
double t_6 = (-a * b) * b;
double t_7 = t_6 * a;
double t_8 = 0.5 / (x_45_scale * x_45_scale);
double tmp;
if (a <= 1.15e-104) {
tmp = (sqrt(((fma(b, t_0, fma(a, t_2, fabs(((a * t_2) - (b * t_0))))) * ((t_7 / t_1) * 8.0)) * t_7)) / ((((b * a) * 4.0) * a) * b)) * t_1;
} else {
tmp = (((sqrt(((t_6 * (a * ((((hypot((sin(t_3) / (x_45_scale * y_45_scale)), (t_8 - fma(0.5, (t_5 + (t_4 / (y_45_scale * y_45_scale))), (0.5 / (y_45_scale * y_45_scale))))) + t_8) + (fma(t_4, 0.5, 0.5) / (y_45_scale * y_45_scale))) - (t_5 * 0.5)) * (a * a)))) * (8.0 * t_7))) / fabs((x_45_scale * y_45_scale))) / ((4.0 * a) * b)) / (b * a)) * (((y_45_scale * x_45_scale) * x_45_scale) * y_45_scale);
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(b / Float64(x_45_scale * x_45_scale)) t_1 = Float64(Float64(x_45_scale * y_45_scale) * Float64(x_45_scale * y_45_scale)) t_2 = Float64(a / Float64(y_45_scale * y_45_scale)) t_3 = Float64(Float64(pi * angle) * 0.011111111111111112) t_4 = cos(t_3) t_5 = Float64(t_4 / Float64(x_45_scale * x_45_scale)) t_6 = Float64(Float64(Float64(-a) * b) * b) t_7 = Float64(t_6 * a) t_8 = Float64(0.5 / Float64(x_45_scale * x_45_scale)) tmp = 0.0 if (a <= 1.15e-104) tmp = Float64(Float64(sqrt(Float64(Float64(fma(b, t_0, fma(a, t_2, abs(Float64(Float64(a * t_2) - Float64(b * t_0))))) * Float64(Float64(t_7 / t_1) * 8.0)) * t_7)) / Float64(Float64(Float64(Float64(b * a) * 4.0) * a) * b)) * t_1); else tmp = Float64(Float64(Float64(Float64(sqrt(Float64(Float64(t_6 * Float64(a * Float64(Float64(Float64(Float64(hypot(Float64(sin(t_3) / Float64(x_45_scale * y_45_scale)), Float64(t_8 - fma(0.5, Float64(t_5 + Float64(t_4 / Float64(y_45_scale * y_45_scale))), Float64(0.5 / Float64(y_45_scale * y_45_scale))))) + t_8) + Float64(fma(t_4, 0.5, 0.5) / Float64(y_45_scale * y_45_scale))) - Float64(t_5 * 0.5)) * Float64(a * a)))) * Float64(8.0 * t_7))) / abs(Float64(x_45_scale * y_45_scale))) / Float64(Float64(4.0 * a) * b)) / Float64(b * a)) * Float64(Float64(Float64(y_45_scale * x_45_scale) * x_45_scale) * y_45_scale)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(x$45$scale * y$45$scale), $MachinePrecision] * N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(Pi * angle), $MachinePrecision] * 0.011111111111111112), $MachinePrecision]}, Block[{t$95$4 = N[Cos[t$95$3], $MachinePrecision]}, Block[{t$95$5 = N[(t$95$4 / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision]}, Block[{t$95$7 = N[(t$95$6 * a), $MachinePrecision]}, Block[{t$95$8 = N[(0.5 / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[a, 1.15e-104], N[(N[(N[Sqrt[N[(N[(N[(b * t$95$0 + N[(a * t$95$2 + N[Abs[N[(N[(a * t$95$2), $MachinePrecision] - N[(b * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(t$95$7 / t$95$1), $MachinePrecision] * 8.0), $MachinePrecision]), $MachinePrecision] * t$95$7), $MachinePrecision]], $MachinePrecision] / N[(N[(N[(N[(b * a), $MachinePrecision] * 4.0), $MachinePrecision] * a), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision], N[(N[(N[(N[(N[Sqrt[N[(N[(t$95$6 * N[(a * N[(N[(N[(N[(N[Sqrt[N[(N[Sin[t$95$3], $MachinePrecision] / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] ^ 2 + N[(t$95$8 - N[(0.5 * N[(t$95$5 + N[(t$95$4 / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(0.5 / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] ^ 2], $MachinePrecision] + t$95$8), $MachinePrecision] + N[(N[(t$95$4 * 0.5 + 0.5), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(t$95$5 * 0.5), $MachinePrecision]), $MachinePrecision] * N[(a * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(8.0 * t$95$7), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Abs[N[(x$45$scale * y$45$scale), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[(4.0 * a), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] / N[(b * a), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(y$45$scale * x$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * y$45$scale), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{b}{x-scale \cdot x-scale}\\
t_1 := \left(x-scale \cdot y-scale\right) \cdot \left(x-scale \cdot y-scale\right)\\
t_2 := \frac{a}{y-scale \cdot y-scale}\\
t_3 := \left(\pi \cdot angle\right) \cdot 0.011111111111111112\\
t_4 := \cos t\_3\\
t_5 := \frac{t\_4}{x-scale \cdot x-scale}\\
t_6 := \left(\left(-a\right) \cdot b\right) \cdot b\\
t_7 := t\_6 \cdot a\\
t_8 := \frac{0.5}{x-scale \cdot x-scale}\\
\mathbf{if}\;a \leq 1.15 \cdot 10^{-104}:\\
\;\;\;\;\frac{\sqrt{\left(\mathsf{fma}\left(b, t\_0, \mathsf{fma}\left(a, t\_2, \left|a \cdot t\_2 - b \cdot t\_0\right|\right)\right) \cdot \left(\frac{t\_7}{t\_1} \cdot 8\right)\right) \cdot t\_7}}{\left(\left(\left(b \cdot a\right) \cdot 4\right) \cdot a\right) \cdot b} \cdot t\_1\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{\sqrt{\left(t\_6 \cdot \left(a \cdot \left(\left(\left(\left(\mathsf{hypot}\left(\frac{\sin t\_3}{x-scale \cdot y-scale}, t\_8 - \mathsf{fma}\left(0.5, t\_5 + \frac{t\_4}{y-scale \cdot y-scale}, \frac{0.5}{y-scale \cdot y-scale}\right)\right) + t\_8\right) + \frac{\mathsf{fma}\left(t\_4, 0.5, 0.5\right)}{y-scale \cdot y-scale}\right) - t\_5 \cdot 0.5\right) \cdot \left(a \cdot a\right)\right)\right)\right) \cdot \left(8 \cdot t\_7\right)}}{\left|x-scale \cdot y-scale\right|}}{\left(4 \cdot a\right) \cdot b}}{b \cdot a} \cdot \left(\left(\left(y-scale \cdot x-scale\right) \cdot x-scale\right) \cdot y-scale\right)\\
\end{array}
\end{array}
if a < 1.15e-104Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
Applied rewrites2.4%
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
pow2N/A
lift-pow.f64N/A
associate-*l*N/A
lift-pow.f64N/A
pow2N/A
pow-prod-downN/A
lift-*.f64N/A
pow2N/A
lower-*.f644.2
lift-*.f64N/A
*-commutativeN/A
lift-*.f644.2
lift-*.f64N/A
*-commutativeN/A
lift-*.f644.2
Applied rewrites4.2%
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
pow2N/A
lift-pow.f64N/A
associate-*l*N/A
lift-pow.f64N/A
pow2N/A
pow-prod-downN/A
lift-*.f64N/A
pow2N/A
lower-*.f645.8
lift-*.f64N/A
*-commutativeN/A
lift-*.f645.8
lift-*.f64N/A
*-commutativeN/A
lift-*.f645.8
Applied rewrites5.8%
if 1.15e-104 < a Initial program 2.5%
Applied rewrites4.7%
Taylor expanded in a around inf
Applied rewrites3.9%
Applied rewrites8.9%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (/ b (* x-scale x-scale)))
(t_1 (/ 1.0 (pow x-scale 2.0)))
(t_2 (/ 1.0 (pow y-scale 2.0)))
(t_3 (* (* (* (- a) b) b) a))
(t_4 (/ b (* x-scale y-scale)))
(t_5 (* (* (- a) t_4) (* a t_4)))
(t_6 (/ a (* y-scale y-scale)))
(t_7 (/ (* a a) (* y-scale y-scale))))
(if (<= x-scale 5e-105)
(*
(/
(sqrt
(*
(*
(fma b t_0 (fma a t_6 (fabs (- (* a t_6) (* b t_0)))))
(* (/ t_3 (* x-scale y-scale)) (/ 8.0 (* x-scale y-scale))))
t_3))
(* (* (* (* b a) 4.0) a) b))
(* (* (* y-scale y-scale) x-scale) x-scale))
(if (<= x-scale 5e+219)
(/
(sqrt
(*
(+
(fma (/ b x-scale) (/ b x-scale) t_7)
(fabs (- (/ (* b b) (* x-scale x-scale)) t_7)))
(* (* t_5 8.0) (* (* (* a b) b) (- a)))))
(* -4.0 t_5))
(*
(/
(/
(sqrt
(*
(* 8.0 t_3)
(*
t_3
(*
(pow a 2.0)
(+ (sqrt (pow (- (* 0.5 t_1) (fma 0.5 t_1 t_2)) 2.0)) t_2)))))
(fabs (* y-scale x-scale)))
(* (* (* a b) 4.0) (* a b)))
(* (* (* y-scale x-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 = 1.0 / pow(x_45_scale, 2.0);
double t_2 = 1.0 / pow(y_45_scale, 2.0);
double t_3 = ((-a * b) * b) * a;
double t_4 = b / (x_45_scale * y_45_scale);
double t_5 = (-a * t_4) * (a * t_4);
double t_6 = a / (y_45_scale * y_45_scale);
double t_7 = (a * a) / (y_45_scale * y_45_scale);
double tmp;
if (x_45_scale <= 5e-105) {
tmp = (sqrt(((fma(b, t_0, fma(a, t_6, fabs(((a * t_6) - (b * t_0))))) * ((t_3 / (x_45_scale * y_45_scale)) * (8.0 / (x_45_scale * y_45_scale)))) * t_3)) / ((((b * a) * 4.0) * a) * b)) * (((y_45_scale * y_45_scale) * x_45_scale) * x_45_scale);
} else if (x_45_scale <= 5e+219) {
tmp = sqrt(((fma((b / x_45_scale), (b / x_45_scale), t_7) + fabs((((b * b) / (x_45_scale * x_45_scale)) - t_7))) * ((t_5 * 8.0) * (((a * b) * b) * -a)))) / (-4.0 * t_5);
} else {
tmp = ((sqrt(((8.0 * t_3) * (t_3 * (pow(a, 2.0) * (sqrt(pow(((0.5 * t_1) - fma(0.5, t_1, t_2)), 2.0)) + t_2))))) / fabs((y_45_scale * x_45_scale))) / (((a * b) * 4.0) * (a * b))) * (((y_45_scale * x_45_scale) * x_45_scale) * y_45_scale);
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(b / Float64(x_45_scale * x_45_scale)) t_1 = Float64(1.0 / (x_45_scale ^ 2.0)) t_2 = Float64(1.0 / (y_45_scale ^ 2.0)) t_3 = Float64(Float64(Float64(Float64(-a) * b) * b) * a) t_4 = Float64(b / Float64(x_45_scale * y_45_scale)) t_5 = Float64(Float64(Float64(-a) * t_4) * Float64(a * t_4)) t_6 = Float64(a / Float64(y_45_scale * y_45_scale)) t_7 = Float64(Float64(a * a) / Float64(y_45_scale * y_45_scale)) tmp = 0.0 if (x_45_scale <= 5e-105) tmp = Float64(Float64(sqrt(Float64(Float64(fma(b, t_0, fma(a, t_6, abs(Float64(Float64(a * t_6) - Float64(b * t_0))))) * Float64(Float64(t_3 / Float64(x_45_scale * y_45_scale)) * Float64(8.0 / Float64(x_45_scale * y_45_scale)))) * t_3)) / Float64(Float64(Float64(Float64(b * a) * 4.0) * a) * b)) * Float64(Float64(Float64(y_45_scale * y_45_scale) * x_45_scale) * x_45_scale)); elseif (x_45_scale <= 5e+219) tmp = Float64(sqrt(Float64(Float64(fma(Float64(b / x_45_scale), Float64(b / x_45_scale), t_7) + abs(Float64(Float64(Float64(b * b) / Float64(x_45_scale * x_45_scale)) - t_7))) * Float64(Float64(t_5 * 8.0) * Float64(Float64(Float64(a * b) * b) * Float64(-a))))) / Float64(-4.0 * t_5)); else tmp = Float64(Float64(Float64(sqrt(Float64(Float64(8.0 * t_3) * Float64(t_3 * Float64((a ^ 2.0) * Float64(sqrt((Float64(Float64(0.5 * t_1) - fma(0.5, t_1, t_2)) ^ 2.0)) + t_2))))) / abs(Float64(y_45_scale * x_45_scale))) / Float64(Float64(Float64(a * b) * 4.0) * Float64(a * b))) * Float64(Float64(Float64(y_45_scale * x_45_scale) * x_45_scale) * y_45_scale)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(1.0 / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(1.0 / N[Power[y$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$4 = N[(b / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(N[((-a) * t$95$4), $MachinePrecision] * N[(a * t$95$4), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$7 = N[(N[(a * a), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[x$45$scale, 5e-105], N[(N[(N[Sqrt[N[(N[(N[(b * t$95$0 + N[(a * t$95$6 + N[Abs[N[(N[(a * t$95$6), $MachinePrecision] - N[(b * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(t$95$3 / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * N[(8.0 / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$3), $MachinePrecision]], $MachinePrecision] / N[(N[(N[(N[(b * a), $MachinePrecision] * 4.0), $MachinePrecision] * a), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(y$45$scale * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision]), $MachinePrecision], If[LessEqual[x$45$scale, 5e+219], N[(N[Sqrt[N[(N[(N[(N[(b / x$45$scale), $MachinePrecision] * N[(b / x$45$scale), $MachinePrecision] + t$95$7), $MachinePrecision] + N[Abs[N[(N[(N[(b * b), $MachinePrecision] / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] - t$95$7), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(t$95$5 * 8.0), $MachinePrecision] * N[(N[(N[(a * b), $MachinePrecision] * b), $MachinePrecision] * (-a)), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(-4.0 * t$95$5), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[Sqrt[N[(N[(8.0 * t$95$3), $MachinePrecision] * N[(t$95$3 * N[(N[Power[a, 2.0], $MachinePrecision] * N[(N[Sqrt[N[Power[N[(N[(0.5 * t$95$1), $MachinePrecision] - N[(0.5 * t$95$1 + t$95$2), $MachinePrecision]), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision] + t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Abs[N[(y$45$scale * x$45$scale), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[(N[(a * b), $MachinePrecision] * 4.0), $MachinePrecision] * N[(a * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(y$45$scale * x$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * y$45$scale), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{b}{x-scale \cdot x-scale}\\
t_1 := \frac{1}{{x-scale}^{2}}\\
t_2 := \frac{1}{{y-scale}^{2}}\\
t_3 := \left(\left(\left(-a\right) \cdot b\right) \cdot b\right) \cdot a\\
t_4 := \frac{b}{x-scale \cdot y-scale}\\
t_5 := \left(\left(-a\right) \cdot t\_4\right) \cdot \left(a \cdot t\_4\right)\\
t_6 := \frac{a}{y-scale \cdot y-scale}\\
t_7 := \frac{a \cdot a}{y-scale \cdot y-scale}\\
\mathbf{if}\;x-scale \leq 5 \cdot 10^{-105}:\\
\;\;\;\;\frac{\sqrt{\left(\mathsf{fma}\left(b, t\_0, \mathsf{fma}\left(a, t\_6, \left|a \cdot t\_6 - b \cdot t\_0\right|\right)\right) \cdot \left(\frac{t\_3}{x-scale \cdot y-scale} \cdot \frac{8}{x-scale \cdot y-scale}\right)\right) \cdot t\_3}}{\left(\left(\left(b \cdot a\right) \cdot 4\right) \cdot a\right) \cdot b} \cdot \left(\left(\left(y-scale \cdot y-scale\right) \cdot x-scale\right) \cdot x-scale\right)\\
\mathbf{elif}\;x-scale \leq 5 \cdot 10^{+219}:\\
\;\;\;\;\frac{\sqrt{\left(\mathsf{fma}\left(\frac{b}{x-scale}, \frac{b}{x-scale}, t\_7\right) + \left|\frac{b \cdot b}{x-scale \cdot x-scale} - t\_7\right|\right) \cdot \left(\left(t\_5 \cdot 8\right) \cdot \left(\left(\left(a \cdot b\right) \cdot b\right) \cdot \left(-a\right)\right)\right)}}{-4 \cdot t\_5}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\sqrt{\left(8 \cdot t\_3\right) \cdot \left(t\_3 \cdot \left({a}^{2} \cdot \left(\sqrt{{\left(0.5 \cdot t\_1 - \mathsf{fma}\left(0.5, t\_1, t\_2\right)\right)}^{2}} + t\_2\right)\right)\right)}}{\left|y-scale \cdot x-scale\right|}}{\left(\left(a \cdot b\right) \cdot 4\right) \cdot \left(a \cdot b\right)} \cdot \left(\left(\left(y-scale \cdot x-scale\right) \cdot x-scale\right) \cdot y-scale\right)\\
\end{array}
\end{array}
if x-scale < 4.99999999999999963e-105Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
Applied rewrites2.4%
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
pow2N/A
lift-pow.f64N/A
associate-*l*N/A
lift-pow.f64N/A
pow2N/A
pow-prod-downN/A
lift-*.f64N/A
pow2N/A
times-fracN/A
lower-*.f64N/A
Applied rewrites5.1%
if 4.99999999999999963e-105 < x-scale < 5e219Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
times-fracN/A
lift-/.f64N/A
lower-*.f64N/A
Applied rewrites2.4%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
times-fracN/A
lift-/.f64N/A
lower-*.f64N/A
Applied rewrites7.6%
if 5e219 < x-scale Initial program 2.5%
Applied rewrites4.7%
Taylor expanded in a around inf
Applied rewrites3.9%
Taylor expanded in angle around 0
lower-+.f64N/A
Applied rewrites4.1%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (/ b (* x-scale y-scale)))
(t_1 (* (* (- a) t_0) (* a t_0)))
(t_2 (/ (* a a) (* y-scale y-scale)))
(t_3 (* (* (* (- a) b) b) a))
(t_4 (/ 1.0 (pow x-scale 2.0)))
(t_5 (fma 0.5 t_4 (/ 1.0 (pow y-scale 2.0)))))
(if (<= b 2.8e-32)
(*
(/
(/
(sqrt
(*
(* 8.0 t_3)
(*
t_3
(*
(pow a 2.0)
(-
(+ (sqrt (pow (- (* 0.5 t_4) t_5) 2.0)) t_5)
(*
0.5
(/
(cos (* 0.011111111111111112 (* angle PI)))
(pow x-scale 2.0))))))))
(fabs (* y-scale x-scale)))
(* (* (* a b) 4.0) (* a b)))
(* (* (* y-scale x-scale) x-scale) y-scale))
(/
(sqrt
(*
(+
(fma (/ b x-scale) (/ b x-scale) t_2)
(fabs (- (/ (* b b) (* x-scale x-scale)) t_2)))
(* (* t_1 8.0) (* (* (* a b) b) (- a)))))
(* -4.0 t_1)))))
double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = b / (x_45_scale * y_45_scale);
double t_1 = (-a * t_0) * (a * t_0);
double t_2 = (a * a) / (y_45_scale * y_45_scale);
double t_3 = ((-a * b) * b) * a;
double t_4 = 1.0 / pow(x_45_scale, 2.0);
double t_5 = fma(0.5, t_4, (1.0 / pow(y_45_scale, 2.0)));
double tmp;
if (b <= 2.8e-32) {
tmp = ((sqrt(((8.0 * t_3) * (t_3 * (pow(a, 2.0) * ((sqrt(pow(((0.5 * t_4) - t_5), 2.0)) + t_5) - (0.5 * (cos((0.011111111111111112 * (angle * ((double) M_PI)))) / pow(x_45_scale, 2.0)))))))) / fabs((y_45_scale * x_45_scale))) / (((a * b) * 4.0) * (a * b))) * (((y_45_scale * x_45_scale) * x_45_scale) * y_45_scale);
} else {
tmp = sqrt(((fma((b / x_45_scale), (b / x_45_scale), t_2) + fabs((((b * b) / (x_45_scale * x_45_scale)) - t_2))) * ((t_1 * 8.0) * (((a * b) * b) * -a)))) / (-4.0 * t_1);
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(b / Float64(x_45_scale * y_45_scale)) t_1 = Float64(Float64(Float64(-a) * t_0) * Float64(a * t_0)) t_2 = Float64(Float64(a * a) / Float64(y_45_scale * y_45_scale)) t_3 = Float64(Float64(Float64(Float64(-a) * b) * b) * a) t_4 = Float64(1.0 / (x_45_scale ^ 2.0)) t_5 = fma(0.5, t_4, Float64(1.0 / (y_45_scale ^ 2.0))) tmp = 0.0 if (b <= 2.8e-32) tmp = Float64(Float64(Float64(sqrt(Float64(Float64(8.0 * t_3) * Float64(t_3 * Float64((a ^ 2.0) * Float64(Float64(sqrt((Float64(Float64(0.5 * t_4) - t_5) ^ 2.0)) + t_5) - Float64(0.5 * Float64(cos(Float64(0.011111111111111112 * Float64(angle * pi))) / (x_45_scale ^ 2.0)))))))) / abs(Float64(y_45_scale * x_45_scale))) / Float64(Float64(Float64(a * b) * 4.0) * Float64(a * b))) * Float64(Float64(Float64(y_45_scale * x_45_scale) * x_45_scale) * y_45_scale)); else tmp = Float64(sqrt(Float64(Float64(fma(Float64(b / x_45_scale), Float64(b / x_45_scale), t_2) + abs(Float64(Float64(Float64(b * b) / Float64(x_45_scale * x_45_scale)) - t_2))) * Float64(Float64(t_1 * 8.0) * Float64(Float64(Float64(a * b) * b) * Float64(-a))))) / Float64(-4.0 * t_1)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(b / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[((-a) * t$95$0), $MachinePrecision] * N[(a * t$95$0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(a * a), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$4 = N[(1.0 / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(0.5 * t$95$4 + N[(1.0 / N[Power[y$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[b, 2.8e-32], N[(N[(N[(N[Sqrt[N[(N[(8.0 * t$95$3), $MachinePrecision] * N[(t$95$3 * N[(N[Power[a, 2.0], $MachinePrecision] * N[(N[(N[Sqrt[N[Power[N[(N[(0.5 * t$95$4), $MachinePrecision] - t$95$5), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision] + t$95$5), $MachinePrecision] - N[(0.5 * N[(N[Cos[N[(0.011111111111111112 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Abs[N[(y$45$scale * x$45$scale), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[(N[(a * b), $MachinePrecision] * 4.0), $MachinePrecision] * N[(a * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(y$45$scale * x$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * y$45$scale), $MachinePrecision]), $MachinePrecision], N[(N[Sqrt[N[(N[(N[(N[(b / x$45$scale), $MachinePrecision] * N[(b / x$45$scale), $MachinePrecision] + t$95$2), $MachinePrecision] + N[Abs[N[(N[(N[(b * b), $MachinePrecision] / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] - t$95$2), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(t$95$1 * 8.0), $MachinePrecision] * N[(N[(N[(a * b), $MachinePrecision] * b), $MachinePrecision] * (-a)), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(-4.0 * t$95$1), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{b}{x-scale \cdot y-scale}\\
t_1 := \left(\left(-a\right) \cdot t\_0\right) \cdot \left(a \cdot t\_0\right)\\
t_2 := \frac{a \cdot a}{y-scale \cdot y-scale}\\
t_3 := \left(\left(\left(-a\right) \cdot b\right) \cdot b\right) \cdot a\\
t_4 := \frac{1}{{x-scale}^{2}}\\
t_5 := \mathsf{fma}\left(0.5, t\_4, \frac{1}{{y-scale}^{2}}\right)\\
\mathbf{if}\;b \leq 2.8 \cdot 10^{-32}:\\
\;\;\;\;\frac{\frac{\sqrt{\left(8 \cdot t\_3\right) \cdot \left(t\_3 \cdot \left({a}^{2} \cdot \left(\left(\sqrt{{\left(0.5 \cdot t\_4 - t\_5\right)}^{2}} + t\_5\right) - 0.5 \cdot \frac{\cos \left(0.011111111111111112 \cdot \left(angle \cdot \pi\right)\right)}{{x-scale}^{2}}\right)\right)\right)}}{\left|y-scale \cdot x-scale\right|}}{\left(\left(a \cdot b\right) \cdot 4\right) \cdot \left(a \cdot b\right)} \cdot \left(\left(\left(y-scale \cdot x-scale\right) \cdot x-scale\right) \cdot y-scale\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\left(\mathsf{fma}\left(\frac{b}{x-scale}, \frac{b}{x-scale}, t\_2\right) + \left|\frac{b \cdot b}{x-scale \cdot x-scale} - t\_2\right|\right) \cdot \left(\left(t\_1 \cdot 8\right) \cdot \left(\left(\left(a \cdot b\right) \cdot b\right) \cdot \left(-a\right)\right)\right)}}{-4 \cdot t\_1}\\
\end{array}
\end{array}
if b < 2.7999999999999999e-32Initial program 2.5%
Applied rewrites4.7%
Taylor expanded in a around inf
Applied rewrites3.9%
Taylor expanded in angle around 0
lower-+.f64N/A
Applied rewrites5.0%
if 2.7999999999999999e-32 < b Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
times-fracN/A
lift-/.f64N/A
lower-*.f64N/A
Applied rewrites2.4%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
times-fracN/A
lift-/.f64N/A
lower-*.f64N/A
Applied rewrites7.6%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (/ (* a a) (* y-scale y-scale)))
(t_1 (/ a (* y-scale y-scale)))
(t_2 (/ b (* x-scale y-scale)))
(t_3 (* (* (- a) t_2) (* a t_2)))
(t_4 (* (* (* (- a) b) b) a))
(t_5 (/ b (* x-scale x-scale))))
(if (<= b 7.8e-123)
(*
(/
(sqrt
(*
(*
(fma b t_5 (fma a t_1 (fabs (- (* a t_1) (* b t_5)))))
(* (/ t_4 (* x-scale y-scale)) (/ 8.0 (* x-scale y-scale))))
t_4))
(* (* (* (* b a) 4.0) a) b))
(* (* (* y-scale y-scale) x-scale) x-scale))
(/
(sqrt
(*
(+
(fma (/ b x-scale) (/ b x-scale) t_0)
(fabs (- (/ (* b b) (* x-scale x-scale)) t_0)))
(* (* t_3 8.0) (* (* (* a b) b) (- a)))))
(* -4.0 t_3)))))
double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = (a * a) / (y_45_scale * y_45_scale);
double t_1 = a / (y_45_scale * y_45_scale);
double t_2 = b / (x_45_scale * y_45_scale);
double t_3 = (-a * t_2) * (a * t_2);
double t_4 = ((-a * b) * b) * a;
double t_5 = b / (x_45_scale * x_45_scale);
double tmp;
if (b <= 7.8e-123) {
tmp = (sqrt(((fma(b, t_5, fma(a, t_1, fabs(((a * t_1) - (b * t_5))))) * ((t_4 / (x_45_scale * y_45_scale)) * (8.0 / (x_45_scale * y_45_scale)))) * t_4)) / ((((b * a) * 4.0) * a) * b)) * (((y_45_scale * y_45_scale) * x_45_scale) * x_45_scale);
} else {
tmp = sqrt(((fma((b / x_45_scale), (b / x_45_scale), t_0) + fabs((((b * b) / (x_45_scale * x_45_scale)) - t_0))) * ((t_3 * 8.0) * (((a * b) * b) * -a)))) / (-4.0 * t_3);
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(a * a) / Float64(y_45_scale * y_45_scale)) t_1 = Float64(a / Float64(y_45_scale * y_45_scale)) t_2 = Float64(b / Float64(x_45_scale * y_45_scale)) t_3 = Float64(Float64(Float64(-a) * t_2) * Float64(a * t_2)) t_4 = Float64(Float64(Float64(Float64(-a) * b) * b) * a) t_5 = Float64(b / Float64(x_45_scale * x_45_scale)) tmp = 0.0 if (b <= 7.8e-123) tmp = Float64(Float64(sqrt(Float64(Float64(fma(b, t_5, fma(a, t_1, abs(Float64(Float64(a * t_1) - Float64(b * t_5))))) * Float64(Float64(t_4 / Float64(x_45_scale * y_45_scale)) * Float64(8.0 / Float64(x_45_scale * y_45_scale)))) * t_4)) / Float64(Float64(Float64(Float64(b * a) * 4.0) * a) * b)) * Float64(Float64(Float64(y_45_scale * y_45_scale) * x_45_scale) * x_45_scale)); else tmp = Float64(sqrt(Float64(Float64(fma(Float64(b / x_45_scale), Float64(b / x_45_scale), t_0) + abs(Float64(Float64(Float64(b * b) / Float64(x_45_scale * x_45_scale)) - t_0))) * Float64(Float64(t_3 * 8.0) * Float64(Float64(Float64(a * b) * b) * Float64(-a))))) / Float64(-4.0 * t_3)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(a * a), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(b / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[((-a) * t$95$2), $MachinePrecision] * N[(a * t$95$2), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$5 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[b, 7.8e-123], N[(N[(N[Sqrt[N[(N[(N[(b * t$95$5 + N[(a * t$95$1 + N[Abs[N[(N[(a * t$95$1), $MachinePrecision] - N[(b * t$95$5), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(t$95$4 / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * N[(8.0 / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$4), $MachinePrecision]], $MachinePrecision] / N[(N[(N[(N[(b * a), $MachinePrecision] * 4.0), $MachinePrecision] * a), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(y$45$scale * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision]), $MachinePrecision], N[(N[Sqrt[N[(N[(N[(N[(b / x$45$scale), $MachinePrecision] * N[(b / x$45$scale), $MachinePrecision] + t$95$0), $MachinePrecision] + N[Abs[N[(N[(N[(b * b), $MachinePrecision] / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] - t$95$0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[(N[(t$95$3 * 8.0), $MachinePrecision] * N[(N[(N[(a * b), $MachinePrecision] * b), $MachinePrecision] * (-a)), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(-4.0 * t$95$3), $MachinePrecision]), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a \cdot a}{y-scale \cdot y-scale}\\
t_1 := \frac{a}{y-scale \cdot y-scale}\\
t_2 := \frac{b}{x-scale \cdot y-scale}\\
t_3 := \left(\left(-a\right) \cdot t\_2\right) \cdot \left(a \cdot t\_2\right)\\
t_4 := \left(\left(\left(-a\right) \cdot b\right) \cdot b\right) \cdot a\\
t_5 := \frac{b}{x-scale \cdot x-scale}\\
\mathbf{if}\;b \leq 7.8 \cdot 10^{-123}:\\
\;\;\;\;\frac{\sqrt{\left(\mathsf{fma}\left(b, t\_5, \mathsf{fma}\left(a, t\_1, \left|a \cdot t\_1 - b \cdot t\_5\right|\right)\right) \cdot \left(\frac{t\_4}{x-scale \cdot y-scale} \cdot \frac{8}{x-scale \cdot y-scale}\right)\right) \cdot t\_4}}{\left(\left(\left(b \cdot a\right) \cdot 4\right) \cdot a\right) \cdot b} \cdot \left(\left(\left(y-scale \cdot y-scale\right) \cdot x-scale\right) \cdot x-scale\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\left(\mathsf{fma}\left(\frac{b}{x-scale}, \frac{b}{x-scale}, t\_0\right) + \left|\frac{b \cdot b}{x-scale \cdot x-scale} - t\_0\right|\right) \cdot \left(\left(t\_3 \cdot 8\right) \cdot \left(\left(\left(a \cdot b\right) \cdot b\right) \cdot \left(-a\right)\right)\right)}}{-4 \cdot t\_3}\\
\end{array}
\end{array}
if b < 7.79999999999999952e-123Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
Applied rewrites2.4%
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
pow2N/A
lift-pow.f64N/A
associate-*l*N/A
lift-pow.f64N/A
pow2N/A
pow-prod-downN/A
lift-*.f64N/A
pow2N/A
times-fracN/A
lower-*.f64N/A
Applied rewrites5.1%
if 7.79999999999999952e-123 < b Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
times-fracN/A
lift-/.f64N/A
lower-*.f64N/A
Applied rewrites2.4%
lift-/.f64N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
unswap-sqrN/A
lift-*.f64N/A
lift-*.f64N/A
times-fracN/A
lift-/.f64N/A
lower-*.f64N/A
Applied rewrites7.6%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (/ b (* x-scale x-scale)))
(t_1 (* (* (* y-scale y-scale) x-scale) x-scale))
(t_2 (/ a (* y-scale y-scale)))
(t_3 (/ b (* x-scale y-scale)))
(t_4 (* (* (* (- a) b) b) a))
(t_5 (fma b t_0 (fma a t_2 (fabs (- (* a t_2) (* b t_0)))))))
(if (<= y-scale 8.2e-100)
(/
(/ (- (sqrt (* (* t_5 (* (/ t_4 t_1) 8.0)) t_4))) (* (* 4.0 a) t_3))
(* (- a) t_3))
(*
(/
(sqrt
(*
(* t_5 (* (/ t_4 (* x-scale y-scale)) (/ 8.0 (* x-scale y-scale))))
t_4))
(* (* (* (* b a) 4.0) a) b))
t_1))))
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 = ((y_45_scale * y_45_scale) * x_45_scale) * x_45_scale;
double t_2 = a / (y_45_scale * y_45_scale);
double t_3 = b / (x_45_scale * y_45_scale);
double t_4 = ((-a * b) * b) * a;
double t_5 = fma(b, t_0, fma(a, t_2, fabs(((a * t_2) - (b * t_0)))));
double tmp;
if (y_45_scale <= 8.2e-100) {
tmp = (-sqrt(((t_5 * ((t_4 / t_1) * 8.0)) * t_4)) / ((4.0 * a) * t_3)) / (-a * t_3);
} else {
tmp = (sqrt(((t_5 * ((t_4 / (x_45_scale * y_45_scale)) * (8.0 / (x_45_scale * y_45_scale)))) * t_4)) / ((((b * a) * 4.0) * a) * b)) * t_1;
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(b / Float64(x_45_scale * x_45_scale)) t_1 = Float64(Float64(Float64(y_45_scale * y_45_scale) * x_45_scale) * x_45_scale) t_2 = Float64(a / Float64(y_45_scale * y_45_scale)) t_3 = Float64(b / Float64(x_45_scale * y_45_scale)) t_4 = Float64(Float64(Float64(Float64(-a) * b) * b) * a) t_5 = fma(b, t_0, fma(a, t_2, abs(Float64(Float64(a * t_2) - Float64(b * t_0))))) tmp = 0.0 if (y_45_scale <= 8.2e-100) tmp = Float64(Float64(Float64(-sqrt(Float64(Float64(t_5 * Float64(Float64(t_4 / t_1) * 8.0)) * t_4))) / Float64(Float64(4.0 * a) * t_3)) / Float64(Float64(-a) * t_3)); else tmp = Float64(Float64(sqrt(Float64(Float64(t_5 * Float64(Float64(t_4 / Float64(x_45_scale * y_45_scale)) * Float64(8.0 / Float64(x_45_scale * y_45_scale)))) * t_4)) / Float64(Float64(Float64(Float64(b * a) * 4.0) * a) * b)) * t_1); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(y$45$scale * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision]}, Block[{t$95$2 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(b / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$5 = N[(b * t$95$0 + N[(a * t$95$2 + N[Abs[N[(N[(a * t$95$2), $MachinePrecision] - N[(b * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$45$scale, 8.2e-100], N[(N[((-N[Sqrt[N[(N[(t$95$5 * N[(N[(t$95$4 / t$95$1), $MachinePrecision] * 8.0), $MachinePrecision]), $MachinePrecision] * t$95$4), $MachinePrecision]], $MachinePrecision]) / N[(N[(4.0 * a), $MachinePrecision] * t$95$3), $MachinePrecision]), $MachinePrecision] / N[((-a) * t$95$3), $MachinePrecision]), $MachinePrecision], N[(N[(N[Sqrt[N[(N[(t$95$5 * N[(N[(t$95$4 / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * N[(8.0 / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$4), $MachinePrecision]], $MachinePrecision] / N[(N[(N[(N[(b * a), $MachinePrecision] * 4.0), $MachinePrecision] * a), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{b}{x-scale \cdot x-scale}\\
t_1 := \left(\left(y-scale \cdot y-scale\right) \cdot x-scale\right) \cdot x-scale\\
t_2 := \frac{a}{y-scale \cdot y-scale}\\
t_3 := \frac{b}{x-scale \cdot y-scale}\\
t_4 := \left(\left(\left(-a\right) \cdot b\right) \cdot b\right) \cdot a\\
t_5 := \mathsf{fma}\left(b, t\_0, \mathsf{fma}\left(a, t\_2, \left|a \cdot t\_2 - b \cdot t\_0\right|\right)\right)\\
\mathbf{if}\;y-scale \leq 8.2 \cdot 10^{-100}:\\
\;\;\;\;\frac{\frac{-\sqrt{\left(t\_5 \cdot \left(\frac{t\_4}{t\_1} \cdot 8\right)\right) \cdot t\_4}}{\left(4 \cdot a\right) \cdot t\_3}}{\left(-a\right) \cdot t\_3}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\left(t\_5 \cdot \left(\frac{t\_4}{x-scale \cdot y-scale} \cdot \frac{8}{x-scale \cdot y-scale}\right)\right) \cdot t\_4}}{\left(\left(\left(b \cdot a\right) \cdot 4\right) \cdot a\right) \cdot b} \cdot t\_1\\
\end{array}
\end{array}
if y-scale < 8.1999999999999998e-100Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
Applied rewrites7.2%
if 8.1999999999999998e-100 < y-scale Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
Applied rewrites2.4%
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
pow2N/A
lift-pow.f64N/A
associate-*l*N/A
lift-pow.f64N/A
pow2N/A
pow-prod-downN/A
lift-*.f64N/A
pow2N/A
times-fracN/A
lower-*.f64N/A
Applied rewrites5.1%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (/ b (* x-scale x-scale)))
(t_1 (* (* (* y-scale y-scale) x-scale) x-scale))
(t_2 (* (* (* (- a) b) b) a))
(t_3 (/ a (* y-scale y-scale)))
(t_4 (fma b t_0 (fma a t_3 (fabs (- (* a t_3) (* b t_0))))))
(t_5 (* (* b a) 4.0)))
(if (<= y-scale 7e-149)
(*
(/
(- (sqrt (* (* t_4 (* (/ t_2 t_1) 8.0)) t_2)))
(* t_5 (* (- a) (/ b (* x-scale y-scale)))))
(* x-scale y-scale))
(*
(/
(sqrt
(*
(* t_4 (* (/ t_2 (* x-scale y-scale)) (/ 8.0 (* x-scale y-scale))))
t_2))
(* (* t_5 a) b))
t_1))))
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 = ((y_45_scale * y_45_scale) * x_45_scale) * x_45_scale;
double t_2 = ((-a * b) * b) * a;
double t_3 = a / (y_45_scale * y_45_scale);
double t_4 = fma(b, t_0, fma(a, t_3, fabs(((a * t_3) - (b * t_0)))));
double t_5 = (b * a) * 4.0;
double tmp;
if (y_45_scale <= 7e-149) {
tmp = (-sqrt(((t_4 * ((t_2 / t_1) * 8.0)) * t_2)) / (t_5 * (-a * (b / (x_45_scale * y_45_scale))))) * (x_45_scale * y_45_scale);
} else {
tmp = (sqrt(((t_4 * ((t_2 / (x_45_scale * y_45_scale)) * (8.0 / (x_45_scale * y_45_scale)))) * t_2)) / ((t_5 * a) * b)) * t_1;
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(b / Float64(x_45_scale * x_45_scale)) t_1 = Float64(Float64(Float64(y_45_scale * y_45_scale) * x_45_scale) * x_45_scale) t_2 = Float64(Float64(Float64(Float64(-a) * b) * b) * a) t_3 = Float64(a / Float64(y_45_scale * y_45_scale)) t_4 = fma(b, t_0, fma(a, t_3, abs(Float64(Float64(a * t_3) - Float64(b * t_0))))) t_5 = Float64(Float64(b * a) * 4.0) tmp = 0.0 if (y_45_scale <= 7e-149) tmp = Float64(Float64(Float64(-sqrt(Float64(Float64(t_4 * Float64(Float64(t_2 / t_1) * 8.0)) * t_2))) / Float64(t_5 * Float64(Float64(-a) * Float64(b / Float64(x_45_scale * y_45_scale))))) * Float64(x_45_scale * y_45_scale)); else tmp = Float64(Float64(sqrt(Float64(Float64(t_4 * Float64(Float64(t_2 / Float64(x_45_scale * y_45_scale)) * Float64(8.0 / Float64(x_45_scale * y_45_scale)))) * t_2)) / Float64(Float64(t_5 * a) * b)) * t_1); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(y$45$scale * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$3 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$4 = N[(b * t$95$0 + N[(a * t$95$3 + N[Abs[N[(N[(a * t$95$3), $MachinePrecision] - N[(b * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$5 = N[(N[(b * a), $MachinePrecision] * 4.0), $MachinePrecision]}, If[LessEqual[y$45$scale, 7e-149], N[(N[((-N[Sqrt[N[(N[(t$95$4 * N[(N[(t$95$2 / t$95$1), $MachinePrecision] * 8.0), $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision]], $MachinePrecision]) / N[(t$95$5 * N[((-a) * N[(b / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision], N[(N[(N[Sqrt[N[(N[(t$95$4 * N[(N[(t$95$2 / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * N[(8.0 / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$2), $MachinePrecision]], $MachinePrecision] / N[(N[(t$95$5 * a), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{b}{x-scale \cdot x-scale}\\
t_1 := \left(\left(y-scale \cdot y-scale\right) \cdot x-scale\right) \cdot x-scale\\
t_2 := \left(\left(\left(-a\right) \cdot b\right) \cdot b\right) \cdot a\\
t_3 := \frac{a}{y-scale \cdot y-scale}\\
t_4 := \mathsf{fma}\left(b, t\_0, \mathsf{fma}\left(a, t\_3, \left|a \cdot t\_3 - b \cdot t\_0\right|\right)\right)\\
t_5 := \left(b \cdot a\right) \cdot 4\\
\mathbf{if}\;y-scale \leq 7 \cdot 10^{-149}:\\
\;\;\;\;\frac{-\sqrt{\left(t\_4 \cdot \left(\frac{t\_2}{t\_1} \cdot 8\right)\right) \cdot t\_2}}{t\_5 \cdot \left(\left(-a\right) \cdot \frac{b}{x-scale \cdot y-scale}\right)} \cdot \left(x-scale \cdot y-scale\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\left(t\_4 \cdot \left(\frac{t\_2}{x-scale \cdot y-scale} \cdot \frac{8}{x-scale \cdot y-scale}\right)\right) \cdot t\_2}}{\left(t\_5 \cdot a\right) \cdot b} \cdot t\_1\\
\end{array}
\end{array}
if y-scale < 7e-149Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
Applied rewrites4.6%
if 7e-149 < y-scale Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
Applied rewrites2.4%
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
pow2N/A
lift-pow.f64N/A
associate-*l*N/A
lift-pow.f64N/A
pow2N/A
pow-prod-downN/A
lift-*.f64N/A
pow2N/A
times-fracN/A
lower-*.f64N/A
Applied rewrites5.1%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (/ b (* x-scale x-scale)))
(t_1 (* (* (* (- a) b) b) a))
(t_2 (/ a (* y-scale y-scale))))
(if (<= y-scale 5e-150)
(/
(-
(sqrt
(*
(/ (* 2.0 (* t_1 4.0)) (* (* y-scale (* x-scale y-scale)) x-scale))
(* t_1 (/ (fma a a (sqrt (pow a 4.0))) (* y-scale y-scale))))))
(/ (* 4.0 (* (* b a) (* b (- a)))) (pow (* x-scale y-scale) 2.0)))
(*
(/
(sqrt
(*
(*
(fma b t_0 (fma a t_2 (fabs (- (* a t_2) (* b t_0)))))
(* (/ t_1 (* x-scale y-scale)) (/ 8.0 (* x-scale y-scale))))
t_1))
(* (* (* (* b a) 4.0) a) b))
(* (* (* y-scale y-scale) x-scale) x-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 * b) * b) * a;
double t_2 = a / (y_45_scale * y_45_scale);
double tmp;
if (y_45_scale <= 5e-150) {
tmp = -sqrt((((2.0 * (t_1 * 4.0)) / ((y_45_scale * (x_45_scale * y_45_scale)) * x_45_scale)) * (t_1 * (fma(a, a, sqrt(pow(a, 4.0))) / (y_45_scale * y_45_scale))))) / ((4.0 * ((b * a) * (b * -a))) / pow((x_45_scale * y_45_scale), 2.0));
} else {
tmp = (sqrt(((fma(b, t_0, fma(a, t_2, fabs(((a * t_2) - (b * t_0))))) * ((t_1 / (x_45_scale * y_45_scale)) * (8.0 / (x_45_scale * y_45_scale)))) * t_1)) / ((((b * a) * 4.0) * a) * b)) * (((y_45_scale * y_45_scale) * x_45_scale) * x_45_scale);
}
return tmp;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(b / Float64(x_45_scale * x_45_scale)) t_1 = Float64(Float64(Float64(Float64(-a) * b) * b) * a) t_2 = Float64(a / Float64(y_45_scale * y_45_scale)) tmp = 0.0 if (y_45_scale <= 5e-150) tmp = Float64(Float64(-sqrt(Float64(Float64(Float64(2.0 * Float64(t_1 * 4.0)) / Float64(Float64(y_45_scale * Float64(x_45_scale * y_45_scale)) * x_45_scale)) * Float64(t_1 * Float64(fma(a, a, sqrt((a ^ 4.0))) / Float64(y_45_scale * y_45_scale)))))) / Float64(Float64(4.0 * Float64(Float64(b * a) * Float64(b * Float64(-a)))) / (Float64(x_45_scale * y_45_scale) ^ 2.0))); else tmp = Float64(Float64(sqrt(Float64(Float64(fma(b, t_0, fma(a, t_2, abs(Float64(Float64(a * t_2) - Float64(b * t_0))))) * Float64(Float64(t_1 / Float64(x_45_scale * y_45_scale)) * Float64(8.0 / Float64(x_45_scale * y_45_scale)))) * t_1)) / Float64(Float64(Float64(Float64(b * a) * 4.0) * a) * b)) * Float64(Float64(Float64(y_45_scale * y_45_scale) * x_45_scale) * x_45_scale)); end return tmp end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$2 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$45$scale, 5e-150], N[((-N[Sqrt[N[(N[(N[(2.0 * N[(t$95$1 * 4.0), $MachinePrecision]), $MachinePrecision] / N[(N[(y$45$scale * N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(t$95$1 * N[(N[(a * a + N[Sqrt[N[Power[a, 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / N[(N[(4.0 * N[(N[(b * a), $MachinePrecision] * N[(b * (-a)), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[N[(x$45$scale * y$45$scale), $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[Sqrt[N[(N[(N[(b * t$95$0 + N[(a * t$95$2 + N[Abs[N[(N[(a * t$95$2), $MachinePrecision] - N[(b * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(t$95$1 / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * N[(8.0 / N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]], $MachinePrecision] / N[(N[(N[(N[(b * a), $MachinePrecision] * 4.0), $MachinePrecision] * a), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(y$45$scale * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{b}{x-scale \cdot x-scale}\\
t_1 := \left(\left(\left(-a\right) \cdot b\right) \cdot b\right) \cdot a\\
t_2 := \frac{a}{y-scale \cdot y-scale}\\
\mathbf{if}\;y-scale \leq 5 \cdot 10^{-150}:\\
\;\;\;\;\frac{-\sqrt{\frac{2 \cdot \left(t\_1 \cdot 4\right)}{\left(y-scale \cdot \left(x-scale \cdot y-scale\right)\right) \cdot x-scale} \cdot \left(t\_1 \cdot \frac{\mathsf{fma}\left(a, a, \sqrt{{a}^{4}}\right)}{y-scale \cdot y-scale}\right)}}{\frac{4 \cdot \left(\left(b \cdot a\right) \cdot \left(b \cdot \left(-a\right)\right)\right)}{{\left(x-scale \cdot y-scale\right)}^{2}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\sqrt{\left(\mathsf{fma}\left(b, t\_0, \mathsf{fma}\left(a, t\_2, \left|a \cdot t\_2 - b \cdot t\_0\right|\right)\right) \cdot \left(\frac{t\_1}{x-scale \cdot y-scale} \cdot \frac{8}{x-scale \cdot y-scale}\right)\right) \cdot t\_1}}{\left(\left(\left(b \cdot a\right) \cdot 4\right) \cdot a\right) \cdot b} \cdot \left(\left(\left(y-scale \cdot y-scale\right) \cdot x-scale\right) \cdot x-scale\right)\\
\end{array}
\end{array}
if y-scale < 4.9999999999999999e-150Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Taylor expanded in y-scale around 0
lower-/.f64N/A
lower-+.f64N/A
lower-sqrt.f64N/A
lower-pow.f64N/A
lower-pow.f64N/A
lower-pow.f642.4
Applied rewrites2.4%
Applied rewrites2.5%
if 4.9999999999999999e-150 < y-scale Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
Applied rewrites2.4%
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
pow2N/A
lift-pow.f64N/A
associate-*l*N/A
lift-pow.f64N/A
pow2N/A
pow-prod-downN/A
lift-*.f64N/A
pow2N/A
times-fracN/A
lower-*.f64N/A
Applied rewrites5.1%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (/ a (* y-scale y-scale)))
(t_1 (* (* (* (- a) b) b) a))
(t_2 (/ b (* x-scale x-scale)))
(t_3 (* (* x-scale y-scale) (* x-scale y-scale))))
(*
(/
(sqrt
(*
(*
(fma b t_2 (fma a t_0 (fabs (- (* a t_0) (* b t_2)))))
(* (/ t_1 t_3) 8.0))
t_1))
(* (* (* (* b a) 4.0) a) b))
t_3)))
double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = a / (y_45_scale * y_45_scale);
double t_1 = ((-a * b) * b) * a;
double t_2 = b / (x_45_scale * x_45_scale);
double t_3 = (x_45_scale * y_45_scale) * (x_45_scale * y_45_scale);
return (sqrt(((fma(b, t_2, fma(a, t_0, fabs(((a * t_0) - (b * t_2))))) * ((t_1 / t_3) * 8.0)) * t_1)) / ((((b * a) * 4.0) * a) * b)) * t_3;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(a / Float64(y_45_scale * y_45_scale)) t_1 = Float64(Float64(Float64(Float64(-a) * b) * b) * a) t_2 = Float64(b / Float64(x_45_scale * x_45_scale)) t_3 = Float64(Float64(x_45_scale * y_45_scale) * Float64(x_45_scale * y_45_scale)) return Float64(Float64(sqrt(Float64(Float64(fma(b, t_2, fma(a, t_0, abs(Float64(Float64(a * t_0) - Float64(b * t_2))))) * Float64(Float64(t_1 / t_3) * 8.0)) * t_1)) / Float64(Float64(Float64(Float64(b * a) * 4.0) * a) * b)) * t_3) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$2 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(x$45$scale * y$45$scale), $MachinePrecision] * N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, N[(N[(N[Sqrt[N[(N[(N[(b * t$95$2 + N[(a * t$95$0 + N[Abs[N[(N[(a * t$95$0), $MachinePrecision] - N[(b * t$95$2), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(t$95$1 / t$95$3), $MachinePrecision] * 8.0), $MachinePrecision]), $MachinePrecision] * t$95$1), $MachinePrecision]], $MachinePrecision] / N[(N[(N[(N[(b * a), $MachinePrecision] * 4.0), $MachinePrecision] * a), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * t$95$3), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \frac{a}{y-scale \cdot y-scale}\\
t_1 := \left(\left(\left(-a\right) \cdot b\right) \cdot b\right) \cdot a\\
t_2 := \frac{b}{x-scale \cdot x-scale}\\
t_3 := \left(x-scale \cdot y-scale\right) \cdot \left(x-scale \cdot y-scale\right)\\
\frac{\sqrt{\left(\mathsf{fma}\left(b, t\_2, \mathsf{fma}\left(a, t\_0, \left|a \cdot t\_0 - b \cdot t\_2\right|\right)\right) \cdot \left(\frac{t\_1}{t\_3} \cdot 8\right)\right) \cdot t\_1}}{\left(\left(\left(b \cdot a\right) \cdot 4\right) \cdot a\right) \cdot b} \cdot t\_3
\end{array}
\end{array}
Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
Applied rewrites2.4%
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
pow2N/A
lift-pow.f64N/A
associate-*l*N/A
lift-pow.f64N/A
pow2N/A
pow-prod-downN/A
lift-*.f64N/A
pow2N/A
lower-*.f644.2
lift-*.f64N/A
*-commutativeN/A
lift-*.f644.2
lift-*.f64N/A
*-commutativeN/A
lift-*.f644.2
Applied rewrites4.2%
lift-*.f64N/A
lift-*.f64N/A
lift-*.f64N/A
pow2N/A
lift-pow.f64N/A
associate-*l*N/A
lift-pow.f64N/A
pow2N/A
pow-prod-downN/A
lift-*.f64N/A
pow2N/A
lower-*.f645.8
lift-*.f64N/A
*-commutativeN/A
lift-*.f645.8
lift-*.f64N/A
*-commutativeN/A
lift-*.f645.8
Applied rewrites5.8%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* y-scale (* x-scale y-scale)))
(t_1 (/ b (* x-scale x-scale)))
(t_2 (* (* (- a) b) b)))
(*
(*
(/
(sqrt
(*
(*
(* (* t_2 (/ a (* t_0 x-scale))) 8.0)
(fma
t_1
b
(fma
(/ a (* y-scale y-scale))
a
(fabs (- (* t_1 b) (/ (* a a) (* y-scale y-scale)))))))
(* t_2 a)))
(* (* b a) (* (* 4.0 a) b)))
t_0)
x-scale)))
double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = y_45_scale * (x_45_scale * y_45_scale);
double t_1 = b / (x_45_scale * x_45_scale);
double t_2 = (-a * b) * b;
return ((sqrt(((((t_2 * (a / (t_0 * x_45_scale))) * 8.0) * fma(t_1, b, fma((a / (y_45_scale * y_45_scale)), a, fabs(((t_1 * b) - ((a * a) / (y_45_scale * y_45_scale))))))) * (t_2 * a))) / ((b * a) * ((4.0 * a) * b))) * t_0) * x_45_scale;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(y_45_scale * Float64(x_45_scale * y_45_scale)) t_1 = Float64(b / Float64(x_45_scale * x_45_scale)) t_2 = Float64(Float64(Float64(-a) * b) * b) return Float64(Float64(Float64(sqrt(Float64(Float64(Float64(Float64(t_2 * Float64(a / Float64(t_0 * x_45_scale))) * 8.0) * fma(t_1, b, fma(Float64(a / Float64(y_45_scale * y_45_scale)), a, abs(Float64(Float64(t_1 * b) - Float64(Float64(a * a) / Float64(y_45_scale * y_45_scale))))))) * Float64(t_2 * a))) / Float64(Float64(b * a) * Float64(Float64(4.0 * a) * b))) * t_0) * x_45_scale) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(y$45$scale * N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision]}, N[(N[(N[(N[Sqrt[N[(N[(N[(N[(t$95$2 * N[(a / N[(t$95$0 * x$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 8.0), $MachinePrecision] * N[(t$95$1 * b + N[(N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * a + N[Abs[N[(N[(t$95$1 * b), $MachinePrecision] - N[(N[(a * a), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(t$95$2 * a), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[(N[(b * a), $MachinePrecision] * N[(N[(4.0 * a), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision] * x$45$scale), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := y-scale \cdot \left(x-scale \cdot y-scale\right)\\
t_1 := \frac{b}{x-scale \cdot x-scale}\\
t_2 := \left(\left(-a\right) \cdot b\right) \cdot b\\
\left(\frac{\sqrt{\left(\left(\left(t\_2 \cdot \frac{a}{t\_0 \cdot x-scale}\right) \cdot 8\right) \cdot \mathsf{fma}\left(t\_1, b, \mathsf{fma}\left(\frac{a}{y-scale \cdot y-scale}, a, \left|t\_1 \cdot b - \frac{a \cdot a}{y-scale \cdot y-scale}\right|\right)\right)\right) \cdot \left(t\_2 \cdot a\right)}}{\left(b \cdot a\right) \cdot \left(\left(4 \cdot a\right) \cdot b\right)} \cdot t\_0\right) \cdot x-scale
\end{array}
\end{array}
Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Applied rewrites1.3%
Applied rewrites2.4%
Applied rewrites4.7%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* (* (- a) b) b) a))
(t_1 (* t_0 4.0))
(t_2 (* (* y-scale (* x-scale y-scale)) x-scale)))
(*
(/
(-
(sqrt
(*
(/ (fma a a (sqrt (pow a 4.0))) (* y-scale y-scale))
(* t_0 (/ (* 2.0 t_1) t_2)))))
t_1)
t_2)))
double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = ((-a * b) * b) * a;
double t_1 = t_0 * 4.0;
double t_2 = (y_45_scale * (x_45_scale * y_45_scale)) * x_45_scale;
return (-sqrt(((fma(a, a, sqrt(pow(a, 4.0))) / (y_45_scale * y_45_scale)) * (t_0 * ((2.0 * t_1) / t_2)))) / t_1) * t_2;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(Float64(Float64(-a) * b) * b) * a) t_1 = Float64(t_0 * 4.0) t_2 = Float64(Float64(y_45_scale * Float64(x_45_scale * y_45_scale)) * x_45_scale) return Float64(Float64(Float64(-sqrt(Float64(Float64(fma(a, a, sqrt((a ^ 4.0))) / Float64(y_45_scale * y_45_scale)) * Float64(t_0 * Float64(Float64(2.0 * t_1) / t_2))))) / t_1) * t_2) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision] * a), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 * 4.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(y$45$scale * N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * x$45$scale), $MachinePrecision]}, N[(N[((-N[Sqrt[N[(N[(N[(a * a + N[Sqrt[N[Power[a, 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * N[(t$95$0 * N[(N[(2.0 * t$95$1), $MachinePrecision] / t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$1), $MachinePrecision] * t$95$2), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \left(\left(\left(-a\right) \cdot b\right) \cdot b\right) \cdot a\\
t_1 := t\_0 \cdot 4\\
t_2 := \left(y-scale \cdot \left(x-scale \cdot y-scale\right)\right) \cdot x-scale\\
\frac{-\sqrt{\frac{\mathsf{fma}\left(a, a, \sqrt{{a}^{4}}\right)}{y-scale \cdot y-scale} \cdot \left(t\_0 \cdot \frac{2 \cdot t\_1}{t\_2}\right)}}{t\_1} \cdot t\_2
\end{array}
\end{array}
Initial program 2.5%
Taylor expanded in angle around 0
Applied rewrites4.4%
Taylor expanded in y-scale around 0
lower-/.f64N/A
lower-+.f64N/A
lower-sqrt.f64N/A
lower-pow.f64N/A
lower-pow.f64N/A
lower-pow.f642.4
Applied rewrites2.4%
Applied rewrites2.2%
herbie shell --seed 2025150
(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))))