
(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 12 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 (pow (fabs y-scale) 2.0))
(t_1 (cos (* 0.005555555555555556 (* angle PI))))
(t_2 (pow t_1 4.0))
(t_3 (pow t_1 2.0)))
(if (<= (fabs y-scale) 1.7e-138)
(*
(/ 0.25 a)
(/
(*
(* (fabs b) (* x-scale x-scale))
(/
(sqrt
(*
8.0
(*
(+
(- 0.5 (* (cos (* (* angle (+ PI PI)) 0.005555555555555556)) 0.5))
(sqrt (pow (sin (* (* angle PI) 0.005555555555555556)) 4.0)))
(pow a 4.0))))
(fabs x-scale)))
a))
(if (<= (fabs y-scale) 1.35e+154)
(* 0.25 (* (fabs b) (* t_0 (sqrt (* 8.0 (/ (+ (sqrt t_2) t_3) t_0))))))
(*
0.25
(*
(fabs b)
(*
(pow x-scale 2.0)
(*
(fabs y-scale)
(sqrt
(*
8.0
(/
(+ (sqrt (/ t_2 (pow x-scale 4.0))) (/ t_3 (pow x-scale 2.0)))
(pow x-scale 2.0))))))))))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = pow(fabs(y_45_scale), 2.0);
double t_1 = cos((0.005555555555555556 * (angle * ((double) M_PI))));
double t_2 = pow(t_1, 4.0);
double t_3 = pow(t_1, 2.0);
double tmp;
if (fabs(y_45_scale) <= 1.7e-138) {
tmp = (0.25 / a) * (((fabs(b) * (x_45_scale * x_45_scale)) * (sqrt((8.0 * (((0.5 - (cos(((angle * (((double) M_PI) + ((double) M_PI))) * 0.005555555555555556)) * 0.5)) + sqrt(pow(sin(((angle * ((double) M_PI)) * 0.005555555555555556)), 4.0))) * pow(a, 4.0)))) / fabs(x_45_scale))) / a);
} else if (fabs(y_45_scale) <= 1.35e+154) {
tmp = 0.25 * (fabs(b) * (t_0 * sqrt((8.0 * ((sqrt(t_2) + t_3) / t_0)))));
} else {
tmp = 0.25 * (fabs(b) * (pow(x_45_scale, 2.0) * (fabs(y_45_scale) * sqrt((8.0 * ((sqrt((t_2 / pow(x_45_scale, 4.0))) + (t_3 / pow(x_45_scale, 2.0))) / pow(x_45_scale, 2.0)))))));
}
return tmp;
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = Math.pow(Math.abs(y_45_scale), 2.0);
double t_1 = Math.cos((0.005555555555555556 * (angle * Math.PI)));
double t_2 = Math.pow(t_1, 4.0);
double t_3 = Math.pow(t_1, 2.0);
double tmp;
if (Math.abs(y_45_scale) <= 1.7e-138) {
tmp = (0.25 / a) * (((Math.abs(b) * (x_45_scale * x_45_scale)) * (Math.sqrt((8.0 * (((0.5 - (Math.cos(((angle * (Math.PI + Math.PI)) * 0.005555555555555556)) * 0.5)) + Math.sqrt(Math.pow(Math.sin(((angle * Math.PI) * 0.005555555555555556)), 4.0))) * Math.pow(a, 4.0)))) / Math.abs(x_45_scale))) / a);
} else if (Math.abs(y_45_scale) <= 1.35e+154) {
tmp = 0.25 * (Math.abs(b) * (t_0 * Math.sqrt((8.0 * ((Math.sqrt(t_2) + t_3) / t_0)))));
} else {
tmp = 0.25 * (Math.abs(b) * (Math.pow(x_45_scale, 2.0) * (Math.abs(y_45_scale) * Math.sqrt((8.0 * ((Math.sqrt((t_2 / Math.pow(x_45_scale, 4.0))) + (t_3 / Math.pow(x_45_scale, 2.0))) / Math.pow(x_45_scale, 2.0)))))));
}
return tmp;
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = math.pow(math.fabs(y_45_scale), 2.0) t_1 = math.cos((0.005555555555555556 * (angle * math.pi))) t_2 = math.pow(t_1, 4.0) t_3 = math.pow(t_1, 2.0) tmp = 0 if math.fabs(y_45_scale) <= 1.7e-138: tmp = (0.25 / a) * (((math.fabs(b) * (x_45_scale * x_45_scale)) * (math.sqrt((8.0 * (((0.5 - (math.cos(((angle * (math.pi + math.pi)) * 0.005555555555555556)) * 0.5)) + math.sqrt(math.pow(math.sin(((angle * math.pi) * 0.005555555555555556)), 4.0))) * math.pow(a, 4.0)))) / math.fabs(x_45_scale))) / a) elif math.fabs(y_45_scale) <= 1.35e+154: tmp = 0.25 * (math.fabs(b) * (t_0 * math.sqrt((8.0 * ((math.sqrt(t_2) + t_3) / t_0))))) else: tmp = 0.25 * (math.fabs(b) * (math.pow(x_45_scale, 2.0) * (math.fabs(y_45_scale) * math.sqrt((8.0 * ((math.sqrt((t_2 / math.pow(x_45_scale, 4.0))) + (t_3 / math.pow(x_45_scale, 2.0))) / math.pow(x_45_scale, 2.0))))))) return tmp
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = abs(y_45_scale) ^ 2.0 t_1 = cos(Float64(0.005555555555555556 * Float64(angle * pi))) t_2 = t_1 ^ 4.0 t_3 = t_1 ^ 2.0 tmp = 0.0 if (abs(y_45_scale) <= 1.7e-138) tmp = Float64(Float64(0.25 / a) * Float64(Float64(Float64(abs(b) * Float64(x_45_scale * x_45_scale)) * Float64(sqrt(Float64(8.0 * Float64(Float64(Float64(0.5 - Float64(cos(Float64(Float64(angle * Float64(pi + pi)) * 0.005555555555555556)) * 0.5)) + sqrt((sin(Float64(Float64(angle * pi) * 0.005555555555555556)) ^ 4.0))) * (a ^ 4.0)))) / abs(x_45_scale))) / a)); elseif (abs(y_45_scale) <= 1.35e+154) tmp = Float64(0.25 * Float64(abs(b) * Float64(t_0 * sqrt(Float64(8.0 * Float64(Float64(sqrt(t_2) + t_3) / t_0)))))); else tmp = Float64(0.25 * Float64(abs(b) * Float64((x_45_scale ^ 2.0) * Float64(abs(y_45_scale) * sqrt(Float64(8.0 * Float64(Float64(sqrt(Float64(t_2 / (x_45_scale ^ 4.0))) + Float64(t_3 / (x_45_scale ^ 2.0))) / (x_45_scale ^ 2.0)))))))); end return tmp end
function tmp_2 = code(a, b, angle, x_45_scale, y_45_scale) t_0 = abs(y_45_scale) ^ 2.0; t_1 = cos((0.005555555555555556 * (angle * pi))); t_2 = t_1 ^ 4.0; t_3 = t_1 ^ 2.0; tmp = 0.0; if (abs(y_45_scale) <= 1.7e-138) tmp = (0.25 / a) * (((abs(b) * (x_45_scale * x_45_scale)) * (sqrt((8.0 * (((0.5 - (cos(((angle * (pi + pi)) * 0.005555555555555556)) * 0.5)) + sqrt((sin(((angle * pi) * 0.005555555555555556)) ^ 4.0))) * (a ^ 4.0)))) / abs(x_45_scale))) / a); elseif (abs(y_45_scale) <= 1.35e+154) tmp = 0.25 * (abs(b) * (t_0 * sqrt((8.0 * ((sqrt(t_2) + t_3) / t_0))))); else tmp = 0.25 * (abs(b) * ((x_45_scale ^ 2.0) * (abs(y_45_scale) * sqrt((8.0 * ((sqrt((t_2 / (x_45_scale ^ 4.0))) + (t_3 / (x_45_scale ^ 2.0))) / (x_45_scale ^ 2.0))))))); end tmp_2 = tmp; end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[Power[N[Abs[y$45$scale], $MachinePrecision], 2.0], $MachinePrecision]}, Block[{t$95$1 = N[Cos[N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$2 = N[Power[t$95$1, 4.0], $MachinePrecision]}, Block[{t$95$3 = N[Power[t$95$1, 2.0], $MachinePrecision]}, If[LessEqual[N[Abs[y$45$scale], $MachinePrecision], 1.7e-138], N[(N[(0.25 / a), $MachinePrecision] * N[(N[(N[(N[Abs[b], $MachinePrecision] * N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(N[Sqrt[N[(8.0 * N[(N[(N[(0.5 - N[(N[Cos[N[(N[(angle * N[(Pi + Pi), $MachinePrecision]), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]], $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision] + N[Sqrt[N[Power[N[Sin[N[(N[(angle * Pi), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]], $MachinePrecision], 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Power[a, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / a), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[Abs[y$45$scale], $MachinePrecision], 1.35e+154], N[(0.25 * N[(N[Abs[b], $MachinePrecision] * N[(t$95$0 * N[Sqrt[N[(8.0 * N[(N[(N[Sqrt[t$95$2], $MachinePrecision] + t$95$3), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.25 * N[(N[Abs[b], $MachinePrecision] * N[(N[Power[x$45$scale, 2.0], $MachinePrecision] * N[(N[Abs[y$45$scale], $MachinePrecision] * N[Sqrt[N[(8.0 * N[(N[(N[Sqrt[N[(t$95$2 / N[Power[x$45$scale, 4.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[(t$95$3 / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]
\begin{array}{l}
t_0 := {\left(\left|y-scale\right|\right)}^{2}\\
t_1 := \cos \left(0.005555555555555556 \cdot \left(angle \cdot \pi\right)\right)\\
t_2 := {t\_1}^{4}\\
t_3 := {t\_1}^{2}\\
\mathbf{if}\;\left|y-scale\right| \leq 1.7 \cdot 10^{-138}:\\
\;\;\;\;\frac{0.25}{a} \cdot \frac{\left(\left|b\right| \cdot \left(x-scale \cdot x-scale\right)\right) \cdot \frac{\sqrt{8 \cdot \left(\left(\left(0.5 - \cos \left(\left(angle \cdot \left(\pi + \pi\right)\right) \cdot 0.005555555555555556\right) \cdot 0.5\right) + \sqrt{{\sin \left(\left(angle \cdot \pi\right) \cdot 0.005555555555555556\right)}^{4}}\right) \cdot {a}^{4}\right)}}{\left|x-scale\right|}}{a}\\
\mathbf{elif}\;\left|y-scale\right| \leq 1.35 \cdot 10^{+154}:\\
\;\;\;\;0.25 \cdot \left(\left|b\right| \cdot \left(t\_0 \cdot \sqrt{8 \cdot \frac{\sqrt{t\_2} + t\_3}{t\_0}}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;0.25 \cdot \left(\left|b\right| \cdot \left({x-scale}^{2} \cdot \left(\left|y-scale\right| \cdot \sqrt{8 \cdot \frac{\sqrt{\frac{t\_2}{{x-scale}^{4}}} + \frac{t\_3}{{x-scale}^{2}}}{{x-scale}^{2}}}\right)\right)\right)\\
\end{array}
if y-scale < 1.7000000000000001e-138Initial program 2.8%
Taylor expanded in b around inf
Applied rewrites0.8%
Taylor expanded in y-scale around 0
lower-sqrt.64N/A
Applied rewrites1.6%
Applied rewrites9.1%
if 1.7000000000000001e-138 < y-scale < 1.35000000000000003e154Initial program 2.8%
Taylor expanded in b around inf
Applied rewrites0.8%
Taylor expanded in a around 0
Applied rewrites2.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-pow.64N/A
Applied rewrites8.0%
if 1.35000000000000003e154 < y-scale Initial program 2.8%
Taylor expanded in b around inf
Applied rewrites0.8%
Taylor expanded in a around 0
Applied rewrites2.7%
Taylor expanded in y-scale around inf
lower-*.f64N/A
Applied rewrites5.6%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (pow (fabs y-scale) 2.0))
(t_1
(*
(/ 0.25 a)
(/
(*
(* (fabs b) (* x-scale x-scale))
(/
(sqrt
(*
8.0
(*
(+
(-
0.5
(* (cos (* (* angle (+ PI PI)) 0.005555555555555556)) 0.5))
(sqrt (pow (sin (* (* angle PI) 0.005555555555555556)) 4.0)))
(pow a 4.0))))
(fabs x-scale)))
a)))
(t_2 (cos (* 0.005555555555555556 (* angle PI)))))
(if (<= (fabs y-scale) 1.7e-138)
t_1
(if (<= (fabs y-scale) 3.75e+152)
(*
0.25
(*
(fabs b)
(*
t_0
(sqrt (* 8.0 (/ (+ (sqrt (pow t_2 4.0)) (pow t_2 2.0)) t_0))))))
t_1))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = pow(fabs(y_45_scale), 2.0);
double t_1 = (0.25 / a) * (((fabs(b) * (x_45_scale * x_45_scale)) * (sqrt((8.0 * (((0.5 - (cos(((angle * (((double) M_PI) + ((double) M_PI))) * 0.005555555555555556)) * 0.5)) + sqrt(pow(sin(((angle * ((double) M_PI)) * 0.005555555555555556)), 4.0))) * pow(a, 4.0)))) / fabs(x_45_scale))) / a);
double t_2 = cos((0.005555555555555556 * (angle * ((double) M_PI))));
double tmp;
if (fabs(y_45_scale) <= 1.7e-138) {
tmp = t_1;
} else if (fabs(y_45_scale) <= 3.75e+152) {
tmp = 0.25 * (fabs(b) * (t_0 * sqrt((8.0 * ((sqrt(pow(t_2, 4.0)) + pow(t_2, 2.0)) / t_0)))));
} else {
tmp = t_1;
}
return tmp;
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = Math.pow(Math.abs(y_45_scale), 2.0);
double t_1 = (0.25 / a) * (((Math.abs(b) * (x_45_scale * x_45_scale)) * (Math.sqrt((8.0 * (((0.5 - (Math.cos(((angle * (Math.PI + Math.PI)) * 0.005555555555555556)) * 0.5)) + Math.sqrt(Math.pow(Math.sin(((angle * Math.PI) * 0.005555555555555556)), 4.0))) * Math.pow(a, 4.0)))) / Math.abs(x_45_scale))) / a);
double t_2 = Math.cos((0.005555555555555556 * (angle * Math.PI)));
double tmp;
if (Math.abs(y_45_scale) <= 1.7e-138) {
tmp = t_1;
} else if (Math.abs(y_45_scale) <= 3.75e+152) {
tmp = 0.25 * (Math.abs(b) * (t_0 * Math.sqrt((8.0 * ((Math.sqrt(Math.pow(t_2, 4.0)) + Math.pow(t_2, 2.0)) / t_0)))));
} else {
tmp = t_1;
}
return tmp;
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = math.pow(math.fabs(y_45_scale), 2.0) t_1 = (0.25 / a) * (((math.fabs(b) * (x_45_scale * x_45_scale)) * (math.sqrt((8.0 * (((0.5 - (math.cos(((angle * (math.pi + math.pi)) * 0.005555555555555556)) * 0.5)) + math.sqrt(math.pow(math.sin(((angle * math.pi) * 0.005555555555555556)), 4.0))) * math.pow(a, 4.0)))) / math.fabs(x_45_scale))) / a) t_2 = math.cos((0.005555555555555556 * (angle * math.pi))) tmp = 0 if math.fabs(y_45_scale) <= 1.7e-138: tmp = t_1 elif math.fabs(y_45_scale) <= 3.75e+152: tmp = 0.25 * (math.fabs(b) * (t_0 * math.sqrt((8.0 * ((math.sqrt(math.pow(t_2, 4.0)) + math.pow(t_2, 2.0)) / t_0))))) else: tmp = t_1 return tmp
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = abs(y_45_scale) ^ 2.0 t_1 = Float64(Float64(0.25 / a) * Float64(Float64(Float64(abs(b) * Float64(x_45_scale * x_45_scale)) * Float64(sqrt(Float64(8.0 * Float64(Float64(Float64(0.5 - Float64(cos(Float64(Float64(angle * Float64(pi + pi)) * 0.005555555555555556)) * 0.5)) + sqrt((sin(Float64(Float64(angle * pi) * 0.005555555555555556)) ^ 4.0))) * (a ^ 4.0)))) / abs(x_45_scale))) / a)) t_2 = cos(Float64(0.005555555555555556 * Float64(angle * pi))) tmp = 0.0 if (abs(y_45_scale) <= 1.7e-138) tmp = t_1; elseif (abs(y_45_scale) <= 3.75e+152) tmp = Float64(0.25 * Float64(abs(b) * Float64(t_0 * sqrt(Float64(8.0 * Float64(Float64(sqrt((t_2 ^ 4.0)) + (t_2 ^ 2.0)) / t_0)))))); else tmp = t_1; end return tmp end
function tmp_2 = code(a, b, angle, x_45_scale, y_45_scale) t_0 = abs(y_45_scale) ^ 2.0; t_1 = (0.25 / a) * (((abs(b) * (x_45_scale * x_45_scale)) * (sqrt((8.0 * (((0.5 - (cos(((angle * (pi + pi)) * 0.005555555555555556)) * 0.5)) + sqrt((sin(((angle * pi) * 0.005555555555555556)) ^ 4.0))) * (a ^ 4.0)))) / abs(x_45_scale))) / a); t_2 = cos((0.005555555555555556 * (angle * pi))); tmp = 0.0; if (abs(y_45_scale) <= 1.7e-138) tmp = t_1; elseif (abs(y_45_scale) <= 3.75e+152) tmp = 0.25 * (abs(b) * (t_0 * sqrt((8.0 * ((sqrt((t_2 ^ 4.0)) + (t_2 ^ 2.0)) / t_0))))); else tmp = t_1; end tmp_2 = tmp; end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[Power[N[Abs[y$45$scale], $MachinePrecision], 2.0], $MachinePrecision]}, Block[{t$95$1 = N[(N[(0.25 / a), $MachinePrecision] * N[(N[(N[(N[Abs[b], $MachinePrecision] * N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(N[Sqrt[N[(8.0 * N[(N[(N[(0.5 - N[(N[Cos[N[(N[(angle * N[(Pi + Pi), $MachinePrecision]), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]], $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision] + N[Sqrt[N[Power[N[Sin[N[(N[(angle * Pi), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]], $MachinePrecision], 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Power[a, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / a), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[Cos[N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[Abs[y$45$scale], $MachinePrecision], 1.7e-138], t$95$1, If[LessEqual[N[Abs[y$45$scale], $MachinePrecision], 3.75e+152], N[(0.25 * N[(N[Abs[b], $MachinePrecision] * N[(t$95$0 * N[Sqrt[N[(8.0 * N[(N[(N[Sqrt[N[Power[t$95$2, 4.0], $MachinePrecision]], $MachinePrecision] + N[Power[t$95$2, 2.0], $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
t_0 := {\left(\left|y-scale\right|\right)}^{2}\\
t_1 := \frac{0.25}{a} \cdot \frac{\left(\left|b\right| \cdot \left(x-scale \cdot x-scale\right)\right) \cdot \frac{\sqrt{8 \cdot \left(\left(\left(0.5 - \cos \left(\left(angle \cdot \left(\pi + \pi\right)\right) \cdot 0.005555555555555556\right) \cdot 0.5\right) + \sqrt{{\sin \left(\left(angle \cdot \pi\right) \cdot 0.005555555555555556\right)}^{4}}\right) \cdot {a}^{4}\right)}}{\left|x-scale\right|}}{a}\\
t_2 := \cos \left(0.005555555555555556 \cdot \left(angle \cdot \pi\right)\right)\\
\mathbf{if}\;\left|y-scale\right| \leq 1.7 \cdot 10^{-138}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;\left|y-scale\right| \leq 3.75 \cdot 10^{+152}:\\
\;\;\;\;0.25 \cdot \left(\left|b\right| \cdot \left(t\_0 \cdot \sqrt{8 \cdot \frac{\sqrt{{t\_2}^{4}} + {t\_2}^{2}}{t\_0}}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
if y-scale < 1.7000000000000001e-138 or 3.75000000000000023e152 < y-scale Initial program 2.8%
Taylor expanded in b around inf
Applied rewrites0.8%
Taylor expanded in y-scale around 0
lower-sqrt.64N/A
Applied rewrites1.6%
Applied rewrites9.1%
if 1.7000000000000001e-138 < y-scale < 3.75000000000000023e152Initial program 2.8%
Taylor expanded in b around inf
Applied rewrites0.8%
Taylor expanded in a around 0
Applied rewrites2.7%
Taylor expanded in x-scale around 0
lower-*.f64N/A
lower-pow.64N/A
Applied rewrites8.0%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(*
(/ 0.25 a)
(/
(*
(* (fabs b) (* x-scale x-scale))
(/
(sqrt
(*
8.0
(*
(+
(- 0.5 (* (cos (* (* angle (+ PI PI)) 0.005555555555555556)) 0.5))
(sqrt (pow (sin (* (* angle PI) 0.005555555555555556)) 4.0)))
(pow a 4.0))))
(fabs x-scale)))
a)))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return (0.25 / a) * (((fabs(b) * (x_45_scale * x_45_scale)) * (sqrt((8.0 * (((0.5 - (cos(((angle * (((double) M_PI) + ((double) M_PI))) * 0.005555555555555556)) * 0.5)) + sqrt(pow(sin(((angle * ((double) M_PI)) * 0.005555555555555556)), 4.0))) * pow(a, 4.0)))) / fabs(x_45_scale))) / a);
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return (0.25 / a) * (((Math.abs(b) * (x_45_scale * x_45_scale)) * (Math.sqrt((8.0 * (((0.5 - (Math.cos(((angle * (Math.PI + Math.PI)) * 0.005555555555555556)) * 0.5)) + Math.sqrt(Math.pow(Math.sin(((angle * Math.PI) * 0.005555555555555556)), 4.0))) * Math.pow(a, 4.0)))) / Math.abs(x_45_scale))) / a);
}
def code(a, b, angle, x_45_scale, y_45_scale): return (0.25 / a) * (((math.fabs(b) * (x_45_scale * x_45_scale)) * (math.sqrt((8.0 * (((0.5 - (math.cos(((angle * (math.pi + math.pi)) * 0.005555555555555556)) * 0.5)) + math.sqrt(math.pow(math.sin(((angle * math.pi) * 0.005555555555555556)), 4.0))) * math.pow(a, 4.0)))) / math.fabs(x_45_scale))) / a)
function code(a, b, angle, x_45_scale, y_45_scale) return Float64(Float64(0.25 / a) * Float64(Float64(Float64(abs(b) * Float64(x_45_scale * x_45_scale)) * Float64(sqrt(Float64(8.0 * Float64(Float64(Float64(0.5 - Float64(cos(Float64(Float64(angle * Float64(pi + pi)) * 0.005555555555555556)) * 0.5)) + sqrt((sin(Float64(Float64(angle * pi) * 0.005555555555555556)) ^ 4.0))) * (a ^ 4.0)))) / abs(x_45_scale))) / a)) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) tmp = (0.25 / a) * (((abs(b) * (x_45_scale * x_45_scale)) * (sqrt((8.0 * (((0.5 - (cos(((angle * (pi + pi)) * 0.005555555555555556)) * 0.5)) + sqrt((sin(((angle * pi) * 0.005555555555555556)) ^ 4.0))) * (a ^ 4.0)))) / abs(x_45_scale))) / a); end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := N[(N[(0.25 / a), $MachinePrecision] * N[(N[(N[(N[Abs[b], $MachinePrecision] * N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(N[Sqrt[N[(8.0 * N[(N[(N[(0.5 - N[(N[Cos[N[(N[(angle * N[(Pi + Pi), $MachinePrecision]), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]], $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision] + N[Sqrt[N[Power[N[Sin[N[(N[(angle * Pi), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]], $MachinePrecision], 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Power[a, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / a), $MachinePrecision]), $MachinePrecision]
\frac{0.25}{a} \cdot \frac{\left(\left|b\right| \cdot \left(x-scale \cdot x-scale\right)\right) \cdot \frac{\sqrt{8 \cdot \left(\left(\left(0.5 - \cos \left(\left(angle \cdot \left(\pi + \pi\right)\right) \cdot 0.005555555555555556\right) \cdot 0.5\right) + \sqrt{{\sin \left(\left(angle \cdot \pi\right) \cdot 0.005555555555555556\right)}^{4}}\right) \cdot {a}^{4}\right)}}{\left|x-scale\right|}}{a}
Initial program 2.8%
Taylor expanded in b around inf
Applied rewrites0.8%
Taylor expanded in y-scale around 0
lower-sqrt.64N/A
Applied rewrites1.6%
Applied rewrites9.1%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(*
0.25
(*
(/ (* (fabs b) (* x-scale x-scale)) a)
(/
(/
(sqrt
(*
8.0
(*
(+
(- 0.5 (* (cos (* (* angle (+ PI PI)) 0.005555555555555556)) 0.5))
(sqrt (pow (sin (* (* angle PI) 0.005555555555555556)) 4.0)))
(pow a 4.0))))
(fabs x-scale))
a))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return 0.25 * (((fabs(b) * (x_45_scale * x_45_scale)) / a) * ((sqrt((8.0 * (((0.5 - (cos(((angle * (((double) M_PI) + ((double) M_PI))) * 0.005555555555555556)) * 0.5)) + sqrt(pow(sin(((angle * ((double) M_PI)) * 0.005555555555555556)), 4.0))) * pow(a, 4.0)))) / fabs(x_45_scale)) / a));
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return 0.25 * (((Math.abs(b) * (x_45_scale * x_45_scale)) / a) * ((Math.sqrt((8.0 * (((0.5 - (Math.cos(((angle * (Math.PI + Math.PI)) * 0.005555555555555556)) * 0.5)) + Math.sqrt(Math.pow(Math.sin(((angle * Math.PI) * 0.005555555555555556)), 4.0))) * Math.pow(a, 4.0)))) / Math.abs(x_45_scale)) / a));
}
def code(a, b, angle, x_45_scale, y_45_scale): return 0.25 * (((math.fabs(b) * (x_45_scale * x_45_scale)) / a) * ((math.sqrt((8.0 * (((0.5 - (math.cos(((angle * (math.pi + math.pi)) * 0.005555555555555556)) * 0.5)) + math.sqrt(math.pow(math.sin(((angle * math.pi) * 0.005555555555555556)), 4.0))) * math.pow(a, 4.0)))) / math.fabs(x_45_scale)) / a))
function code(a, b, angle, x_45_scale, y_45_scale) return Float64(0.25 * Float64(Float64(Float64(abs(b) * Float64(x_45_scale * x_45_scale)) / a) * Float64(Float64(sqrt(Float64(8.0 * Float64(Float64(Float64(0.5 - Float64(cos(Float64(Float64(angle * Float64(pi + pi)) * 0.005555555555555556)) * 0.5)) + sqrt((sin(Float64(Float64(angle * pi) * 0.005555555555555556)) ^ 4.0))) * (a ^ 4.0)))) / abs(x_45_scale)) / a))) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) tmp = 0.25 * (((abs(b) * (x_45_scale * x_45_scale)) / a) * ((sqrt((8.0 * (((0.5 - (cos(((angle * (pi + pi)) * 0.005555555555555556)) * 0.5)) + sqrt((sin(((angle * pi) * 0.005555555555555556)) ^ 4.0))) * (a ^ 4.0)))) / abs(x_45_scale)) / a)); end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := N[(0.25 * N[(N[(N[(N[Abs[b], $MachinePrecision] * N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] / a), $MachinePrecision] * N[(N[(N[Sqrt[N[(8.0 * N[(N[(N[(0.5 - N[(N[Cos[N[(N[(angle * N[(Pi + Pi), $MachinePrecision]), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]], $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision] + N[Sqrt[N[Power[N[Sin[N[(N[(angle * Pi), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]], $MachinePrecision], 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Power[a, 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] / a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
0.25 \cdot \left(\frac{\left|b\right| \cdot \left(x-scale \cdot x-scale\right)}{a} \cdot \frac{\frac{\sqrt{8 \cdot \left(\left(\left(0.5 - \cos \left(\left(angle \cdot \left(\pi + \pi\right)\right) \cdot 0.005555555555555556\right) \cdot 0.5\right) + \sqrt{{\sin \left(\left(angle \cdot \pi\right) \cdot 0.005555555555555556\right)}^{4}}\right) \cdot {a}^{4}\right)}}{\left|x-scale\right|}}{a}\right)
Initial program 2.8%
Taylor expanded in b around inf
Applied rewrites0.8%
Taylor expanded in y-scale around 0
lower-sqrt.64N/A
Applied rewrites1.6%
Applied rewrites8.5%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* (* (- (fabs a)) (fabs b)) (fabs b)) (fabs a)))
(t_1 (* (fabs a) (fabs b))))
(if (<= (fabs a) 2.3e-118)
(*
(*
(/
(/
(sqrt
(*
(* 8.0 t_0)
(*
t_0
(+
(sqrt (/ (pow (fabs b) 4.0) (pow x-scale 4.0)))
(/ (pow (fabs b) 2.0) (pow x-scale 2.0))))))
(fabs (* y-scale x-scale)))
(* (* t_1 4.0) t_1))
(* y-scale x-scale))
(* y-scale x-scale))
(*
0.25
(*
(fabs b)
(/
(*
(/
(sqrt
(*
8.0
(*
(+
(-
0.5
(* (cos (* (* angle (+ PI PI)) 0.005555555555555556)) 0.5))
(sqrt (pow (sin (* (* angle PI) 0.005555555555555556)) 4.0)))
(pow (fabs a) 4.0))))
(fabs x-scale))
(* x-scale x-scale))
(* (fabs a) (fabs a))))))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = ((-fabs(a) * fabs(b)) * fabs(b)) * fabs(a);
double t_1 = fabs(a) * fabs(b);
double tmp;
if (fabs(a) <= 2.3e-118) {
tmp = (((sqrt(((8.0 * t_0) * (t_0 * (sqrt((pow(fabs(b), 4.0) / pow(x_45_scale, 4.0))) + (pow(fabs(b), 2.0) / pow(x_45_scale, 2.0)))))) / fabs((y_45_scale * x_45_scale))) / ((t_1 * 4.0) * t_1)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale);
} else {
tmp = 0.25 * (fabs(b) * (((sqrt((8.0 * (((0.5 - (cos(((angle * (((double) M_PI) + ((double) M_PI))) * 0.005555555555555556)) * 0.5)) + sqrt(pow(sin(((angle * ((double) M_PI)) * 0.005555555555555556)), 4.0))) * pow(fabs(a), 4.0)))) / fabs(x_45_scale)) * (x_45_scale * x_45_scale)) / (fabs(a) * fabs(a))));
}
return tmp;
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = ((-Math.abs(a) * Math.abs(b)) * Math.abs(b)) * Math.abs(a);
double t_1 = Math.abs(a) * Math.abs(b);
double tmp;
if (Math.abs(a) <= 2.3e-118) {
tmp = (((Math.sqrt(((8.0 * t_0) * (t_0 * (Math.sqrt((Math.pow(Math.abs(b), 4.0) / Math.pow(x_45_scale, 4.0))) + (Math.pow(Math.abs(b), 2.0) / Math.pow(x_45_scale, 2.0)))))) / Math.abs((y_45_scale * x_45_scale))) / ((t_1 * 4.0) * t_1)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale);
} else {
tmp = 0.25 * (Math.abs(b) * (((Math.sqrt((8.0 * (((0.5 - (Math.cos(((angle * (Math.PI + Math.PI)) * 0.005555555555555556)) * 0.5)) + Math.sqrt(Math.pow(Math.sin(((angle * Math.PI) * 0.005555555555555556)), 4.0))) * Math.pow(Math.abs(a), 4.0)))) / Math.abs(x_45_scale)) * (x_45_scale * x_45_scale)) / (Math.abs(a) * Math.abs(a))));
}
return tmp;
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = ((-math.fabs(a) * math.fabs(b)) * math.fabs(b)) * math.fabs(a) t_1 = math.fabs(a) * math.fabs(b) tmp = 0 if math.fabs(a) <= 2.3e-118: tmp = (((math.sqrt(((8.0 * t_0) * (t_0 * (math.sqrt((math.pow(math.fabs(b), 4.0) / math.pow(x_45_scale, 4.0))) + (math.pow(math.fabs(b), 2.0) / math.pow(x_45_scale, 2.0)))))) / math.fabs((y_45_scale * x_45_scale))) / ((t_1 * 4.0) * t_1)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale) else: tmp = 0.25 * (math.fabs(b) * (((math.sqrt((8.0 * (((0.5 - (math.cos(((angle * (math.pi + math.pi)) * 0.005555555555555556)) * 0.5)) + math.sqrt(math.pow(math.sin(((angle * math.pi) * 0.005555555555555556)), 4.0))) * math.pow(math.fabs(a), 4.0)))) / math.fabs(x_45_scale)) * (x_45_scale * x_45_scale)) / (math.fabs(a) * math.fabs(a)))) return tmp
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(Float64(Float64(-abs(a)) * abs(b)) * abs(b)) * abs(a)) t_1 = Float64(abs(a) * abs(b)) tmp = 0.0 if (abs(a) <= 2.3e-118) tmp = Float64(Float64(Float64(Float64(sqrt(Float64(Float64(8.0 * t_0) * Float64(t_0 * Float64(sqrt(Float64((abs(b) ^ 4.0) / (x_45_scale ^ 4.0))) + Float64((abs(b) ^ 2.0) / (x_45_scale ^ 2.0)))))) / abs(Float64(y_45_scale * x_45_scale))) / Float64(Float64(t_1 * 4.0) * t_1)) * Float64(y_45_scale * x_45_scale)) * Float64(y_45_scale * x_45_scale)); else tmp = Float64(0.25 * Float64(abs(b) * Float64(Float64(Float64(sqrt(Float64(8.0 * Float64(Float64(Float64(0.5 - Float64(cos(Float64(Float64(angle * Float64(pi + pi)) * 0.005555555555555556)) * 0.5)) + sqrt((sin(Float64(Float64(angle * pi) * 0.005555555555555556)) ^ 4.0))) * (abs(a) ^ 4.0)))) / abs(x_45_scale)) * Float64(x_45_scale * x_45_scale)) / Float64(abs(a) * abs(a))))); end return tmp end
function tmp_2 = code(a, b, angle, x_45_scale, y_45_scale) t_0 = ((-abs(a) * abs(b)) * abs(b)) * abs(a); t_1 = abs(a) * abs(b); tmp = 0.0; if (abs(a) <= 2.3e-118) tmp = (((sqrt(((8.0 * t_0) * (t_0 * (sqrt(((abs(b) ^ 4.0) / (x_45_scale ^ 4.0))) + ((abs(b) ^ 2.0) / (x_45_scale ^ 2.0)))))) / abs((y_45_scale * x_45_scale))) / ((t_1 * 4.0) * t_1)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale); else tmp = 0.25 * (abs(b) * (((sqrt((8.0 * (((0.5 - (cos(((angle * (pi + pi)) * 0.005555555555555556)) * 0.5)) + sqrt((sin(((angle * pi) * 0.005555555555555556)) ^ 4.0))) * (abs(a) ^ 4.0)))) / abs(x_45_scale)) * (x_45_scale * x_45_scale)) / (abs(a) * abs(a)))); end tmp_2 = tmp; end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(N[((-N[Abs[a], $MachinePrecision]) * N[Abs[b], $MachinePrecision]), $MachinePrecision] * N[Abs[b], $MachinePrecision]), $MachinePrecision] * N[Abs[a], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[Abs[a], $MachinePrecision] * N[Abs[b], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[a], $MachinePrecision], 2.3e-118], N[(N[(N[(N[(N[Sqrt[N[(N[(8.0 * t$95$0), $MachinePrecision] * N[(t$95$0 * N[(N[Sqrt[N[(N[Power[N[Abs[b], $MachinePrecision], 4.0], $MachinePrecision] / N[Power[x$45$scale, 4.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[(N[Power[N[Abs[b], $MachinePrecision], 2.0], $MachinePrecision] / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Abs[N[(y$45$scale * x$45$scale), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[(t$95$1 * 4.0), $MachinePrecision] * t$95$1), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision], N[(0.25 * N[(N[Abs[b], $MachinePrecision] * N[(N[(N[(N[Sqrt[N[(8.0 * N[(N[(N[(0.5 - N[(N[Cos[N[(N[(angle * N[(Pi + Pi), $MachinePrecision]), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]], $MachinePrecision] * 0.5), $MachinePrecision]), $MachinePrecision] + N[Sqrt[N[Power[N[Sin[N[(N[(angle * Pi), $MachinePrecision] * 0.005555555555555556), $MachinePrecision]], $MachinePrecision], 4.0], $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * N[Power[N[Abs[a], $MachinePrecision], 4.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Abs[x$45$scale], $MachinePrecision]), $MachinePrecision] * N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] / N[(N[Abs[a], $MachinePrecision] * N[Abs[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
t_0 := \left(\left(\left(-\left|a\right|\right) \cdot \left|b\right|\right) \cdot \left|b\right|\right) \cdot \left|a\right|\\
t_1 := \left|a\right| \cdot \left|b\right|\\
\mathbf{if}\;\left|a\right| \leq 2.3 \cdot 10^{-118}:\\
\;\;\;\;\left(\frac{\frac{\sqrt{\left(8 \cdot t\_0\right) \cdot \left(t\_0 \cdot \left(\sqrt{\frac{{\left(\left|b\right|\right)}^{4}}{{x-scale}^{4}}} + \frac{{\left(\left|b\right|\right)}^{2}}{{x-scale}^{2}}\right)\right)}}{\left|y-scale \cdot x-scale\right|}}{\left(t\_1 \cdot 4\right) \cdot t\_1} \cdot \left(y-scale \cdot x-scale\right)\right) \cdot \left(y-scale \cdot x-scale\right)\\
\mathbf{else}:\\
\;\;\;\;0.25 \cdot \left(\left|b\right| \cdot \frac{\frac{\sqrt{8 \cdot \left(\left(\left(0.5 - \cos \left(\left(angle \cdot \left(\pi + \pi\right)\right) \cdot 0.005555555555555556\right) \cdot 0.5\right) + \sqrt{{\sin \left(\left(angle \cdot \pi\right) \cdot 0.005555555555555556\right)}^{4}}\right) \cdot {\left(\left|a\right|\right)}^{4}\right)}}{\left|x-scale\right|} \cdot \left(x-scale \cdot x-scale\right)}{\left|a\right| \cdot \left|a\right|}\right)\\
\end{array}
if a < 2.30000000000000021e-118Initial program 2.8%
Applied rewrites6.2%
Taylor expanded in y-scale around inf
Applied rewrites5.1%
Taylor expanded in angle around 0
lower-+.f64N/A
lower-sqrt.64N/A
lower-/.f64N/A
lower-pow.64N/A
lower-pow.64N/A
lower-/.f64N/A
lower-pow.64N/A
lower-pow.644.1%
Applied rewrites4.1%
if 2.30000000000000021e-118 < a Initial program 2.8%
Taylor expanded in b around inf
Applied rewrites0.8%
Taylor expanded in y-scale around 0
lower-sqrt.64N/A
Applied rewrites1.6%
Applied rewrites3.6%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* (* (- (fabs a)) (fabs b)) (fabs b)) (fabs a)))
(t_1 (* 0.005555555555555556 (* angle PI)))
(t_2 (* (fabs a) (fabs b))))
(if (<= (fabs a) 6.5e-72)
(*
(*
(/
(/
(sqrt
(*
(* 8.0 t_0)
(*
t_0
(+
(sqrt (/ (pow (fabs b) 4.0) (pow x-scale 4.0)))
(/ (pow (fabs b) 2.0) (pow x-scale 2.0))))))
(fabs (* y-scale x-scale)))
(* (* t_2 4.0) t_2))
(* y-scale x-scale))
(* y-scale x-scale))
(*
0.25
(/
(*
(fabs b)
(*
(pow x-scale 2.0)
(sqrt
(*
8.0
(/
(* (pow (fabs a) 4.0) (+ (sqrt (pow t_1 4.0)) (pow t_1 2.0)))
(pow x-scale 2.0))))))
(pow (fabs a) 2.0))))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = ((-fabs(a) * fabs(b)) * fabs(b)) * fabs(a);
double t_1 = 0.005555555555555556 * (angle * ((double) M_PI));
double t_2 = fabs(a) * fabs(b);
double tmp;
if (fabs(a) <= 6.5e-72) {
tmp = (((sqrt(((8.0 * t_0) * (t_0 * (sqrt((pow(fabs(b), 4.0) / pow(x_45_scale, 4.0))) + (pow(fabs(b), 2.0) / pow(x_45_scale, 2.0)))))) / fabs((y_45_scale * x_45_scale))) / ((t_2 * 4.0) * t_2)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale);
} else {
tmp = 0.25 * ((fabs(b) * (pow(x_45_scale, 2.0) * sqrt((8.0 * ((pow(fabs(a), 4.0) * (sqrt(pow(t_1, 4.0)) + pow(t_1, 2.0))) / pow(x_45_scale, 2.0)))))) / pow(fabs(a), 2.0));
}
return tmp;
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = ((-Math.abs(a) * Math.abs(b)) * Math.abs(b)) * Math.abs(a);
double t_1 = 0.005555555555555556 * (angle * Math.PI);
double t_2 = Math.abs(a) * Math.abs(b);
double tmp;
if (Math.abs(a) <= 6.5e-72) {
tmp = (((Math.sqrt(((8.0 * t_0) * (t_0 * (Math.sqrt((Math.pow(Math.abs(b), 4.0) / Math.pow(x_45_scale, 4.0))) + (Math.pow(Math.abs(b), 2.0) / Math.pow(x_45_scale, 2.0)))))) / Math.abs((y_45_scale * x_45_scale))) / ((t_2 * 4.0) * t_2)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale);
} else {
tmp = 0.25 * ((Math.abs(b) * (Math.pow(x_45_scale, 2.0) * Math.sqrt((8.0 * ((Math.pow(Math.abs(a), 4.0) * (Math.sqrt(Math.pow(t_1, 4.0)) + Math.pow(t_1, 2.0))) / Math.pow(x_45_scale, 2.0)))))) / Math.pow(Math.abs(a), 2.0));
}
return tmp;
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = ((-math.fabs(a) * math.fabs(b)) * math.fabs(b)) * math.fabs(a) t_1 = 0.005555555555555556 * (angle * math.pi) t_2 = math.fabs(a) * math.fabs(b) tmp = 0 if math.fabs(a) <= 6.5e-72: tmp = (((math.sqrt(((8.0 * t_0) * (t_0 * (math.sqrt((math.pow(math.fabs(b), 4.0) / math.pow(x_45_scale, 4.0))) + (math.pow(math.fabs(b), 2.0) / math.pow(x_45_scale, 2.0)))))) / math.fabs((y_45_scale * x_45_scale))) / ((t_2 * 4.0) * t_2)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale) else: tmp = 0.25 * ((math.fabs(b) * (math.pow(x_45_scale, 2.0) * math.sqrt((8.0 * ((math.pow(math.fabs(a), 4.0) * (math.sqrt(math.pow(t_1, 4.0)) + math.pow(t_1, 2.0))) / math.pow(x_45_scale, 2.0)))))) / math.pow(math.fabs(a), 2.0)) return tmp
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(Float64(Float64(-abs(a)) * abs(b)) * abs(b)) * abs(a)) t_1 = Float64(0.005555555555555556 * Float64(angle * pi)) t_2 = Float64(abs(a) * abs(b)) tmp = 0.0 if (abs(a) <= 6.5e-72) tmp = Float64(Float64(Float64(Float64(sqrt(Float64(Float64(8.0 * t_0) * Float64(t_0 * Float64(sqrt(Float64((abs(b) ^ 4.0) / (x_45_scale ^ 4.0))) + Float64((abs(b) ^ 2.0) / (x_45_scale ^ 2.0)))))) / abs(Float64(y_45_scale * x_45_scale))) / Float64(Float64(t_2 * 4.0) * t_2)) * Float64(y_45_scale * x_45_scale)) * Float64(y_45_scale * x_45_scale)); else tmp = Float64(0.25 * Float64(Float64(abs(b) * Float64((x_45_scale ^ 2.0) * sqrt(Float64(8.0 * Float64(Float64((abs(a) ^ 4.0) * Float64(sqrt((t_1 ^ 4.0)) + (t_1 ^ 2.0))) / (x_45_scale ^ 2.0)))))) / (abs(a) ^ 2.0))); end return tmp end
function tmp_2 = code(a, b, angle, x_45_scale, y_45_scale) t_0 = ((-abs(a) * abs(b)) * abs(b)) * abs(a); t_1 = 0.005555555555555556 * (angle * pi); t_2 = abs(a) * abs(b); tmp = 0.0; if (abs(a) <= 6.5e-72) tmp = (((sqrt(((8.0 * t_0) * (t_0 * (sqrt(((abs(b) ^ 4.0) / (x_45_scale ^ 4.0))) + ((abs(b) ^ 2.0) / (x_45_scale ^ 2.0)))))) / abs((y_45_scale * x_45_scale))) / ((t_2 * 4.0) * t_2)) * (y_45_scale * x_45_scale)) * (y_45_scale * x_45_scale); else tmp = 0.25 * ((abs(b) * ((x_45_scale ^ 2.0) * sqrt((8.0 * (((abs(a) ^ 4.0) * (sqrt((t_1 ^ 4.0)) + (t_1 ^ 2.0))) / (x_45_scale ^ 2.0)))))) / (abs(a) ^ 2.0)); end tmp_2 = tmp; end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[(N[(N[((-N[Abs[a], $MachinePrecision]) * N[Abs[b], $MachinePrecision]), $MachinePrecision] * N[Abs[b], $MachinePrecision]), $MachinePrecision] * N[Abs[a], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[Abs[a], $MachinePrecision] * N[Abs[b], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[a], $MachinePrecision], 6.5e-72], N[(N[(N[(N[(N[Sqrt[N[(N[(8.0 * t$95$0), $MachinePrecision] * N[(t$95$0 * N[(N[Sqrt[N[(N[Power[N[Abs[b], $MachinePrecision], 4.0], $MachinePrecision] / N[Power[x$45$scale, 4.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[(N[Power[N[Abs[b], $MachinePrecision], 2.0], $MachinePrecision] / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] / N[Abs[N[(y$45$scale * x$45$scale), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / N[(N[(t$95$2 * 4.0), $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision], N[(0.25 * N[(N[(N[Abs[b], $MachinePrecision] * N[(N[Power[x$45$scale, 2.0], $MachinePrecision] * N[Sqrt[N[(8.0 * N[(N[(N[Power[N[Abs[a], $MachinePrecision], 4.0], $MachinePrecision] * N[(N[Sqrt[N[Power[t$95$1, 4.0], $MachinePrecision]], $MachinePrecision] + N[Power[t$95$1, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[N[Abs[a], $MachinePrecision], 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
t_0 := \left(\left(\left(-\left|a\right|\right) \cdot \left|b\right|\right) \cdot \left|b\right|\right) \cdot \left|a\right|\\
t_1 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
t_2 := \left|a\right| \cdot \left|b\right|\\
\mathbf{if}\;\left|a\right| \leq 6.5 \cdot 10^{-72}:\\
\;\;\;\;\left(\frac{\frac{\sqrt{\left(8 \cdot t\_0\right) \cdot \left(t\_0 \cdot \left(\sqrt{\frac{{\left(\left|b\right|\right)}^{4}}{{x-scale}^{4}}} + \frac{{\left(\left|b\right|\right)}^{2}}{{x-scale}^{2}}\right)\right)}}{\left|y-scale \cdot x-scale\right|}}{\left(t\_2 \cdot 4\right) \cdot t\_2} \cdot \left(y-scale \cdot x-scale\right)\right) \cdot \left(y-scale \cdot x-scale\right)\\
\mathbf{else}:\\
\;\;\;\;0.25 \cdot \frac{\left|b\right| \cdot \left({x-scale}^{2} \cdot \sqrt{8 \cdot \frac{{\left(\left|a\right|\right)}^{4} \cdot \left(\sqrt{{t\_1}^{4}} + {t\_1}^{2}\right)}{{x-scale}^{2}}}\right)}{{\left(\left|a\right|\right)}^{2}}\\
\end{array}
if a < 6.4999999999999997e-72Initial program 2.8%
Applied rewrites6.2%
Taylor expanded in y-scale around inf
Applied rewrites5.1%
Taylor expanded in angle around 0
lower-+.f64N/A
lower-sqrt.64N/A
lower-/.f64N/A
lower-pow.64N/A
lower-pow.64N/A
lower-/.f64N/A
lower-pow.64N/A
lower-pow.644.1%
Applied rewrites4.1%
if 6.4999999999999997e-72 < a Initial program 2.8%
Taylor expanded in b around inf
Applied rewrites0.8%
Taylor expanded in y-scale around 0
lower-sqrt.64N/A
Applied rewrites1.6%
Taylor expanded in angle around 0
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f641.6%
Applied rewrites1.6%
Taylor expanded in angle around 0
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f641.6%
Applied rewrites1.6%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (pow (fabs y-scale) 2.0))
(t_1 (* 0.005555555555555556 (* angle PI))))
(if (<= (fabs y-scale) 9e+144)
(*
0.25
(*
(fabs b)
(*
(pow x-scale 2.0)
(*
t_0
(sqrt
(*
8.0
(/
(+ (sqrt (/ 1.0 (pow x-scale 4.0))) (/ 1.0 (pow x-scale 2.0)))
(* (pow x-scale 2.0) t_0))))))))
(*
0.25
(/
(*
(fabs b)
(*
(pow x-scale 2.0)
(sqrt
(*
8.0
(/
(* (pow a 4.0) (+ (sqrt (pow t_1 4.0)) (pow t_1 2.0)))
(pow x-scale 2.0))))))
(pow a 2.0))))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = pow(fabs(y_45_scale), 2.0);
double t_1 = 0.005555555555555556 * (angle * ((double) M_PI));
double tmp;
if (fabs(y_45_scale) <= 9e+144) {
tmp = 0.25 * (fabs(b) * (pow(x_45_scale, 2.0) * (t_0 * sqrt((8.0 * ((sqrt((1.0 / pow(x_45_scale, 4.0))) + (1.0 / pow(x_45_scale, 2.0))) / (pow(x_45_scale, 2.0) * t_0)))))));
} else {
tmp = 0.25 * ((fabs(b) * (pow(x_45_scale, 2.0) * sqrt((8.0 * ((pow(a, 4.0) * (sqrt(pow(t_1, 4.0)) + pow(t_1, 2.0))) / pow(x_45_scale, 2.0)))))) / pow(a, 2.0));
}
return tmp;
}
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
double t_0 = Math.pow(Math.abs(y_45_scale), 2.0);
double t_1 = 0.005555555555555556 * (angle * Math.PI);
double tmp;
if (Math.abs(y_45_scale) <= 9e+144) {
tmp = 0.25 * (Math.abs(b) * (Math.pow(x_45_scale, 2.0) * (t_0 * Math.sqrt((8.0 * ((Math.sqrt((1.0 / Math.pow(x_45_scale, 4.0))) + (1.0 / Math.pow(x_45_scale, 2.0))) / (Math.pow(x_45_scale, 2.0) * t_0)))))));
} else {
tmp = 0.25 * ((Math.abs(b) * (Math.pow(x_45_scale, 2.0) * Math.sqrt((8.0 * ((Math.pow(a, 4.0) * (Math.sqrt(Math.pow(t_1, 4.0)) + Math.pow(t_1, 2.0))) / Math.pow(x_45_scale, 2.0)))))) / Math.pow(a, 2.0));
}
return tmp;
}
def code(a, b, angle, x_45_scale, y_45_scale): t_0 = math.pow(math.fabs(y_45_scale), 2.0) t_1 = 0.005555555555555556 * (angle * math.pi) tmp = 0 if math.fabs(y_45_scale) <= 9e+144: tmp = 0.25 * (math.fabs(b) * (math.pow(x_45_scale, 2.0) * (t_0 * math.sqrt((8.0 * ((math.sqrt((1.0 / math.pow(x_45_scale, 4.0))) + (1.0 / math.pow(x_45_scale, 2.0))) / (math.pow(x_45_scale, 2.0) * t_0))))))) else: tmp = 0.25 * ((math.fabs(b) * (math.pow(x_45_scale, 2.0) * math.sqrt((8.0 * ((math.pow(a, 4.0) * (math.sqrt(math.pow(t_1, 4.0)) + math.pow(t_1, 2.0))) / math.pow(x_45_scale, 2.0)))))) / math.pow(a, 2.0)) return tmp
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = abs(y_45_scale) ^ 2.0 t_1 = Float64(0.005555555555555556 * Float64(angle * pi)) tmp = 0.0 if (abs(y_45_scale) <= 9e+144) tmp = Float64(0.25 * Float64(abs(b) * Float64((x_45_scale ^ 2.0) * Float64(t_0 * sqrt(Float64(8.0 * Float64(Float64(sqrt(Float64(1.0 / (x_45_scale ^ 4.0))) + Float64(1.0 / (x_45_scale ^ 2.0))) / Float64((x_45_scale ^ 2.0) * t_0)))))))); else tmp = Float64(0.25 * Float64(Float64(abs(b) * Float64((x_45_scale ^ 2.0) * sqrt(Float64(8.0 * Float64(Float64((a ^ 4.0) * Float64(sqrt((t_1 ^ 4.0)) + (t_1 ^ 2.0))) / (x_45_scale ^ 2.0)))))) / (a ^ 2.0))); end return tmp end
function tmp_2 = code(a, b, angle, x_45_scale, y_45_scale) t_0 = abs(y_45_scale) ^ 2.0; t_1 = 0.005555555555555556 * (angle * pi); tmp = 0.0; if (abs(y_45_scale) <= 9e+144) tmp = 0.25 * (abs(b) * ((x_45_scale ^ 2.0) * (t_0 * sqrt((8.0 * ((sqrt((1.0 / (x_45_scale ^ 4.0))) + (1.0 / (x_45_scale ^ 2.0))) / ((x_45_scale ^ 2.0) * t_0))))))); else tmp = 0.25 * ((abs(b) * ((x_45_scale ^ 2.0) * sqrt((8.0 * (((a ^ 4.0) * (sqrt((t_1 ^ 4.0)) + (t_1 ^ 2.0))) / (x_45_scale ^ 2.0)))))) / (a ^ 2.0)); end tmp_2 = tmp; end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = N[Power[N[Abs[y$45$scale], $MachinePrecision], 2.0], $MachinePrecision]}, Block[{t$95$1 = N[(0.005555555555555556 * N[(angle * Pi), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[y$45$scale], $MachinePrecision], 9e+144], N[(0.25 * N[(N[Abs[b], $MachinePrecision] * N[(N[Power[x$45$scale, 2.0], $MachinePrecision] * N[(t$95$0 * N[Sqrt[N[(8.0 * N[(N[(N[Sqrt[N[(1.0 / N[Power[x$45$scale, 4.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[Power[x$45$scale, 2.0], $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(0.25 * N[(N[(N[Abs[b], $MachinePrecision] * N[(N[Power[x$45$scale, 2.0], $MachinePrecision] * N[Sqrt[N[(8.0 * N[(N[(N[Power[a, 4.0], $MachinePrecision] * N[(N[Sqrt[N[Power[t$95$1, 4.0], $MachinePrecision]], $MachinePrecision] + N[Power[t$95$1, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[Power[a, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}
t_0 := {\left(\left|y-scale\right|\right)}^{2}\\
t_1 := 0.005555555555555556 \cdot \left(angle \cdot \pi\right)\\
\mathbf{if}\;\left|y-scale\right| \leq 9 \cdot 10^{+144}:\\
\;\;\;\;0.25 \cdot \left(\left|b\right| \cdot \left({x-scale}^{2} \cdot \left(t\_0 \cdot \sqrt{8 \cdot \frac{\sqrt{\frac{1}{{x-scale}^{4}}} + \frac{1}{{x-scale}^{2}}}{{x-scale}^{2} \cdot t\_0}}\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;0.25 \cdot \frac{\left|b\right| \cdot \left({x-scale}^{2} \cdot \sqrt{8 \cdot \frac{{a}^{4} \cdot \left(\sqrt{{t\_1}^{4}} + {t\_1}^{2}\right)}{{x-scale}^{2}}}\right)}{{a}^{2}}\\
\end{array}
if y-scale < 8.99999999999999935e144Initial program 2.8%
Taylor expanded in b around inf
Applied rewrites0.8%
Taylor expanded in a around 0
Applied rewrites2.7%
Taylor expanded in angle around 0
lower-+.f64N/A
lower-sqrt.64N/A
lower-/.f64N/A
lower-pow.64N/A
lower-/.f64N/A
lower-pow.642.2%
Applied rewrites2.2%
if 8.99999999999999935e144 < y-scale Initial program 2.8%
Taylor expanded in b around inf
Applied rewrites0.8%
Taylor expanded in y-scale around 0
lower-sqrt.64N/A
Applied rewrites1.6%
Taylor expanded in angle around 0
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f641.6%
Applied rewrites1.6%
Taylor expanded in angle around 0
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f641.6%
Applied rewrites1.6%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(*
0.25
(*
(fabs b)
(*
(pow x-scale 2.0)
(*
(pow y-scale 2.0)
(sqrt
(*
8.0
(/
(+ (sqrt (/ 1.0 (pow x-scale 4.0))) (/ 1.0 (pow x-scale 2.0)))
(* (pow x-scale 2.0) (pow y-scale 2.0))))))))))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return 0.25 * (fabs(b) * (pow(x_45_scale, 2.0) * (pow(y_45_scale, 2.0) * sqrt((8.0 * ((sqrt((1.0 / pow(x_45_scale, 4.0))) + (1.0 / pow(x_45_scale, 2.0))) / (pow(x_45_scale, 2.0) * pow(y_45_scale, 2.0))))))));
}
module fmin_fmax_functions
implicit none
private
public fmax
public fmin
interface fmax
module procedure fmax88
module procedure fmax44
module procedure fmax84
module procedure fmax48
end interface
interface fmin
module procedure fmin88
module procedure fmin44
module procedure fmin84
module procedure fmin48
end interface
contains
real(8) function fmax88(x, y) result (res)
real(8), intent (in) :: x
real(8), intent (in) :: y
res = merge(y, merge(x, max(x, y), y /= y), x /= x)
end function
real(4) function fmax44(x, y) result (res)
real(4), intent (in) :: x
real(4), intent (in) :: y
res = merge(y, merge(x, max(x, y), y /= y), x /= x)
end function
real(8) function fmax84(x, y) result(res)
real(8), intent (in) :: x
real(4), intent (in) :: y
res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
end function
real(8) function fmax48(x, y) result(res)
real(4), intent (in) :: x
real(8), intent (in) :: y
res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
end function
real(8) function fmin88(x, y) result (res)
real(8), intent (in) :: x
real(8), intent (in) :: y
res = merge(y, merge(x, min(x, y), y /= y), x /= x)
end function
real(4) function fmin44(x, y) result (res)
real(4), intent (in) :: x
real(4), intent (in) :: y
res = merge(y, merge(x, min(x, y), y /= y), x /= x)
end function
real(8) function fmin84(x, y) result(res)
real(8), intent (in) :: x
real(4), intent (in) :: y
res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
end function
real(8) function fmin48(x, y) result(res)
real(4), intent (in) :: x
real(8), intent (in) :: y
res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
end function
end module
real(8) function code(a, b, angle, x_45scale, y_45scale)
use fmin_fmax_functions
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: angle
real(8), intent (in) :: x_45scale
real(8), intent (in) :: y_45scale
code = 0.25d0 * (abs(b) * ((x_45scale ** 2.0d0) * ((y_45scale ** 2.0d0) * sqrt((8.0d0 * ((sqrt((1.0d0 / (x_45scale ** 4.0d0))) + (1.0d0 / (x_45scale ** 2.0d0))) / ((x_45scale ** 2.0d0) * (y_45scale ** 2.0d0))))))))
end function
public static double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return 0.25 * (Math.abs(b) * (Math.pow(x_45_scale, 2.0) * (Math.pow(y_45_scale, 2.0) * Math.sqrt((8.0 * ((Math.sqrt((1.0 / Math.pow(x_45_scale, 4.0))) + (1.0 / Math.pow(x_45_scale, 2.0))) / (Math.pow(x_45_scale, 2.0) * Math.pow(y_45_scale, 2.0))))))));
}
def code(a, b, angle, x_45_scale, y_45_scale): return 0.25 * (math.fabs(b) * (math.pow(x_45_scale, 2.0) * (math.pow(y_45_scale, 2.0) * math.sqrt((8.0 * ((math.sqrt((1.0 / math.pow(x_45_scale, 4.0))) + (1.0 / math.pow(x_45_scale, 2.0))) / (math.pow(x_45_scale, 2.0) * math.pow(y_45_scale, 2.0))))))))
function code(a, b, angle, x_45_scale, y_45_scale) return Float64(0.25 * Float64(abs(b) * Float64((x_45_scale ^ 2.0) * Float64((y_45_scale ^ 2.0) * sqrt(Float64(8.0 * Float64(Float64(sqrt(Float64(1.0 / (x_45_scale ^ 4.0))) + Float64(1.0 / (x_45_scale ^ 2.0))) / Float64((x_45_scale ^ 2.0) * (y_45_scale ^ 2.0))))))))) end
function tmp = code(a, b, angle, x_45_scale, y_45_scale) tmp = 0.25 * (abs(b) * ((x_45_scale ^ 2.0) * ((y_45_scale ^ 2.0) * sqrt((8.0 * ((sqrt((1.0 / (x_45_scale ^ 4.0))) + (1.0 / (x_45_scale ^ 2.0))) / ((x_45_scale ^ 2.0) * (y_45_scale ^ 2.0)))))))); end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := N[(0.25 * N[(N[Abs[b], $MachinePrecision] * N[(N[Power[x$45$scale, 2.0], $MachinePrecision] * N[(N[Power[y$45$scale, 2.0], $MachinePrecision] * N[Sqrt[N[(8.0 * N[(N[(N[Sqrt[N[(1.0 / N[Power[x$45$scale, 4.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision] + N[(1.0 / N[Power[x$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[Power[x$45$scale, 2.0], $MachinePrecision] * N[Power[y$45$scale, 2.0], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
0.25 \cdot \left(\left|b\right| \cdot \left({x-scale}^{2} \cdot \left({y-scale}^{2} \cdot \sqrt{8 \cdot \frac{\sqrt{\frac{1}{{x-scale}^{4}}} + \frac{1}{{x-scale}^{2}}}{{x-scale}^{2} \cdot {y-scale}^{2}}}\right)\right)\right)
Initial program 2.8%
Taylor expanded in b around inf
Applied rewrites0.8%
Taylor expanded in a around 0
Applied rewrites2.7%
Taylor expanded in angle around 0
lower-+.f64N/A
lower-sqrt.64N/A
lower-/.f64N/A
lower-pow.64N/A
lower-/.f64N/A
lower-pow.642.2%
Applied rewrites2.2%
(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 (* (- a) b)))
(*
(/
(/
(-
(sqrt
(*
(*
(*
(*
(*
(* (* a b) b)
(/ (- a) (* (* (* y-scale y-scale) x-scale) x-scale)))
4.0)
2.0)
(* (* t_2 b) a))
(fma b t_0 (fma a t_1 (fabs (- (* a t_1) (* b t_0))))))))
(* 4.0 (* a b)))
t_2)
(* (* 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 / (y_45_scale * y_45_scale);
double t_2 = -a * b;
return ((-sqrt((((((((a * b) * b) * (-a / (((y_45_scale * y_45_scale) * x_45_scale) * x_45_scale))) * 4.0) * 2.0) * ((t_2 * b) * a)) * fma(b, t_0, fma(a, t_1, fabs(((a * t_1) - (b * t_0))))))) / (4.0 * (a * b))) / t_2) * ((y_45_scale * y_45_scale) * (x_45_scale * x_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(-a) * b) return Float64(Float64(Float64(Float64(-sqrt(Float64(Float64(Float64(Float64(Float64(Float64(Float64(a * b) * b) * Float64(Float64(-a) / Float64(Float64(Float64(y_45_scale * y_45_scale) * x_45_scale) * x_45_scale))) * 4.0) * 2.0) * Float64(Float64(t_2 * b) * a)) * fma(b, t_0, fma(a, t_1, abs(Float64(Float64(a * t_1) - Float64(b * t_0)))))))) / Float64(4.0 * Float64(a * b))) / t_2) * Float64(Float64(y_45_scale * y_45_scale) * Float64(x_45_scale * x_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[((-a) * b), $MachinePrecision]}, N[(N[(N[((-N[Sqrt[N[(N[(N[(N[(N[(N[(N[(a * b), $MachinePrecision] * b), $MachinePrecision] * N[((-a) / N[(N[(N[(y$45$scale * y$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision] * x$45$scale), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 4.0), $MachinePrecision] * 2.0), $MachinePrecision] * N[(N[(t$95$2 * b), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision] * N[(b * t$95$0 + N[(a * t$95$1 + N[Abs[N[(N[(a * t$95$1), $MachinePrecision] - N[(b * t$95$0), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / N[(4.0 * N[(a * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / t$95$2), $MachinePrecision] * N[(N[(y$45$scale * y$45$scale), $MachinePrecision] * N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]), $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(-a\right) \cdot b\\
\frac{\frac{-\sqrt{\left(\left(\left(\left(\left(\left(a \cdot b\right) \cdot b\right) \cdot \frac{-a}{\left(\left(y-scale \cdot y-scale\right) \cdot x-scale\right) \cdot x-scale}\right) \cdot 4\right) \cdot 2\right) \cdot \left(\left(t\_2 \cdot b\right) \cdot a\right)\right) \cdot \mathsf{fma}\left(b, t\_0, \mathsf{fma}\left(a, t\_1, \left|a \cdot t\_1 - b \cdot t\_0\right|\right)\right)}}{4 \cdot \left(a \cdot b\right)}}{t\_2} \cdot \left(\left(y-scale \cdot y-scale\right) \cdot \left(x-scale \cdot x-scale\right)\right)
\end{array}
Initial program 2.8%
Taylor expanded in angle around 0
Applied rewrites4.3%
Applied rewrites1.9%
Applied rewrites3.4%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(let* ((t_0 (* (* y-scale (* x-scale y-scale)) x-scale)))
(*
(/
(sqrt
(*
(* (* (* (* (/ (- a) t_0) (* (* a b) b)) 8.0) (* (* (- a) b) b)) a)
(fma
(/ b (* x-scale x-scale))
b
(fma
(/ a (* y-scale y-scale))
a
(fabs
(-
(/ (* b b) (* x-scale x-scale))
(/ (* a a) (* y-scale y-scale))))))))
(* (* (* 4.0 (* a b)) b) a))
t_0)))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)) * x_45_scale;
return (sqrt(((((((-a / t_0) * ((a * b) * b)) * 8.0) * ((-a * b) * b)) * a) * fma((b / (x_45_scale * x_45_scale)), b, fma((a / (y_45_scale * y_45_scale)), a, fabs((((b * b) / (x_45_scale * x_45_scale)) - ((a * a) / (y_45_scale * y_45_scale)))))))) / (((4.0 * (a * b)) * b) * a)) * t_0;
}
function code(a, b, angle, x_45_scale, y_45_scale) t_0 = Float64(Float64(y_45_scale * Float64(x_45_scale * y_45_scale)) * x_45_scale) return Float64(Float64(sqrt(Float64(Float64(Float64(Float64(Float64(Float64(Float64(-a) / t_0) * Float64(Float64(a * b) * b)) * 8.0) * Float64(Float64(Float64(-a) * b) * b)) * a) * fma(Float64(b / Float64(x_45_scale * x_45_scale)), b, fma(Float64(a / Float64(y_45_scale * y_45_scale)), a, 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(4.0 * Float64(a * b)) * b) * a)) * t_0) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := Block[{t$95$0 = 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[(N[(N[(N[((-a) / t$95$0), $MachinePrecision] * N[(N[(a * b), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * 8.0), $MachinePrecision] * N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * a), $MachinePrecision] * N[(N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * b + N[(N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * a + 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]), $MachinePrecision]], $MachinePrecision] / N[(N[(N[(4.0 * N[(a * b), $MachinePrecision]), $MachinePrecision] * b), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision]]
\begin{array}{l}
t_0 := \left(y-scale \cdot \left(x-scale \cdot y-scale\right)\right) \cdot x-scale\\
\frac{\sqrt{\left(\left(\left(\left(\frac{-a}{t\_0} \cdot \left(\left(a \cdot b\right) \cdot b\right)\right) \cdot 8\right) \cdot \left(\left(\left(-a\right) \cdot b\right) \cdot b\right)\right) \cdot a\right) \cdot \mathsf{fma}\left(\frac{b}{x-scale \cdot x-scale}, b, \mathsf{fma}\left(\frac{a}{y-scale \cdot y-scale}, a, \left|\frac{b \cdot b}{x-scale \cdot x-scale} - \frac{a \cdot a}{y-scale \cdot y-scale}\right|\right)\right)}}{\left(\left(4 \cdot \left(a \cdot b\right)\right) \cdot b\right) \cdot a} \cdot t\_0
\end{array}
Initial program 2.8%
Taylor expanded in angle around 0
Applied rewrites4.3%
Applied rewrites1.9%
Applied rewrites2.0%
Applied rewrites3.2%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(*
(*
(*
(/
(sqrt
(*
(*
(*
(*
(*
(/ (- a) (* (* y-scale (* x-scale y-scale)) x-scale))
(* (* a b) b))
8.0)
(* (* (- a) b) b))
a)
(fma
(/ b (* x-scale x-scale))
b
(fma
(/ a (* y-scale y-scale))
a
(fabs
(-
(/ (* b b) (* x-scale x-scale))
(/ (* a a) (* y-scale y-scale))))))))
(* (* (* 4.0 (* a b)) b) a))
y-scale)
y-scale)
(* x-scale x-scale)))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return (((sqrt(((((((-a / ((y_45_scale * (x_45_scale * y_45_scale)) * x_45_scale)) * ((a * b) * b)) * 8.0) * ((-a * b) * b)) * a) * fma((b / (x_45_scale * x_45_scale)), b, fma((a / (y_45_scale * y_45_scale)), a, fabs((((b * b) / (x_45_scale * x_45_scale)) - ((a * a) / (y_45_scale * y_45_scale)))))))) / (((4.0 * (a * b)) * b) * a)) * y_45_scale) * y_45_scale) * (x_45_scale * x_45_scale);
}
function code(a, b, angle, x_45_scale, y_45_scale) return Float64(Float64(Float64(Float64(sqrt(Float64(Float64(Float64(Float64(Float64(Float64(Float64(-a) / Float64(Float64(y_45_scale * Float64(x_45_scale * y_45_scale)) * x_45_scale)) * Float64(Float64(a * b) * b)) * 8.0) * Float64(Float64(Float64(-a) * b) * b)) * a) * fma(Float64(b / Float64(x_45_scale * x_45_scale)), b, fma(Float64(a / Float64(y_45_scale * y_45_scale)), a, 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(4.0 * Float64(a * b)) * b) * a)) * y_45_scale) * y_45_scale) * Float64(x_45_scale * x_45_scale)) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := N[(N[(N[(N[(N[Sqrt[N[(N[(N[(N[(N[(N[((-a) / N[(N[(y$45$scale * N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(N[(a * b), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * 8.0), $MachinePrecision] * N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * a), $MachinePrecision] * N[(N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * b + N[(N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * a + 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]), $MachinePrecision]], $MachinePrecision] / N[(N[(N[(4.0 * N[(a * b), $MachinePrecision]), $MachinePrecision] * b), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision] * y$45$scale), $MachinePrecision] * y$45$scale), $MachinePrecision] * N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]
\left(\left(\frac{\sqrt{\left(\left(\left(\left(\frac{-a}{\left(y-scale \cdot \left(x-scale \cdot y-scale\right)\right) \cdot x-scale} \cdot \left(\left(a \cdot b\right) \cdot b\right)\right) \cdot 8\right) \cdot \left(\left(\left(-a\right) \cdot b\right) \cdot b\right)\right) \cdot a\right) \cdot \mathsf{fma}\left(\frac{b}{x-scale \cdot x-scale}, b, \mathsf{fma}\left(\frac{a}{y-scale \cdot y-scale}, a, \left|\frac{b \cdot b}{x-scale \cdot x-scale} - \frac{a \cdot a}{y-scale \cdot y-scale}\right|\right)\right)}}{\left(\left(4 \cdot \left(a \cdot b\right)\right) \cdot b\right) \cdot a} \cdot y-scale\right) \cdot y-scale\right) \cdot \left(x-scale \cdot x-scale\right)
Initial program 2.8%
Taylor expanded in angle around 0
Applied rewrites4.3%
Applied rewrites1.9%
Applied rewrites2.0%
Applied rewrites3.0%
(FPCore (a b angle x-scale y-scale)
:precision binary64
(*
(*
(/
(sqrt
(*
(*
(*
(*
(*
(/ (- a) (* (* y-scale (* x-scale y-scale)) x-scale))
(* (* a b) b))
8.0)
(* (* (- a) b) b))
a)
(fma
(/ b (* x-scale x-scale))
b
(fma
(/ a (* y-scale y-scale))
a
(fabs
(-
(/ (* b b) (* x-scale x-scale))
(/ (* a a) (* y-scale y-scale))))))))
(* (* (* 4.0 (* a b)) b) a))
(* y-scale y-scale))
(* x-scale x-scale)))double code(double a, double b, double angle, double x_45_scale, double y_45_scale) {
return ((sqrt(((((((-a / ((y_45_scale * (x_45_scale * y_45_scale)) * x_45_scale)) * ((a * b) * b)) * 8.0) * ((-a * b) * b)) * a) * fma((b / (x_45_scale * x_45_scale)), b, fma((a / (y_45_scale * y_45_scale)), a, fabs((((b * b) / (x_45_scale * x_45_scale)) - ((a * a) / (y_45_scale * y_45_scale)))))))) / (((4.0 * (a * b)) * b) * a)) * (y_45_scale * y_45_scale)) * (x_45_scale * x_45_scale);
}
function code(a, b, angle, x_45_scale, y_45_scale) return Float64(Float64(Float64(sqrt(Float64(Float64(Float64(Float64(Float64(Float64(Float64(-a) / Float64(Float64(y_45_scale * Float64(x_45_scale * y_45_scale)) * x_45_scale)) * Float64(Float64(a * b) * b)) * 8.0) * Float64(Float64(Float64(-a) * b) * b)) * a) * fma(Float64(b / Float64(x_45_scale * x_45_scale)), b, fma(Float64(a / Float64(y_45_scale * y_45_scale)), a, 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(4.0 * Float64(a * b)) * b) * a)) * Float64(y_45_scale * y_45_scale)) * Float64(x_45_scale * x_45_scale)) end
code[a_, b_, angle_, x$45$scale_, y$45$scale_] := N[(N[(N[(N[Sqrt[N[(N[(N[(N[(N[(N[((-a) / N[(N[(y$45$scale * N[(x$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * x$45$scale), $MachinePrecision]), $MachinePrecision] * N[(N[(a * b), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * 8.0), $MachinePrecision] * N[(N[((-a) * b), $MachinePrecision] * b), $MachinePrecision]), $MachinePrecision] * a), $MachinePrecision] * N[(N[(b / N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision] * b + N[(N[(a / N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * a + 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]), $MachinePrecision]], $MachinePrecision] / N[(N[(N[(4.0 * N[(a * b), $MachinePrecision]), $MachinePrecision] * b), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision] * N[(y$45$scale * y$45$scale), $MachinePrecision]), $MachinePrecision] * N[(x$45$scale * x$45$scale), $MachinePrecision]), $MachinePrecision]
\left(\frac{\sqrt{\left(\left(\left(\left(\frac{-a}{\left(y-scale \cdot \left(x-scale \cdot y-scale\right)\right) \cdot x-scale} \cdot \left(\left(a \cdot b\right) \cdot b\right)\right) \cdot 8\right) \cdot \left(\left(\left(-a\right) \cdot b\right) \cdot b\right)\right) \cdot a\right) \cdot \mathsf{fma}\left(\frac{b}{x-scale \cdot x-scale}, b, \mathsf{fma}\left(\frac{a}{y-scale \cdot y-scale}, a, \left|\frac{b \cdot b}{x-scale \cdot x-scale} - \frac{a \cdot a}{y-scale \cdot y-scale}\right|\right)\right)}}{\left(\left(4 \cdot \left(a \cdot b\right)\right) \cdot b\right) \cdot a} \cdot \left(y-scale \cdot y-scale\right)\right) \cdot \left(x-scale \cdot x-scale\right)
Initial program 2.8%
Taylor expanded in angle around 0
Applied rewrites4.3%
Applied rewrites1.9%
Applied rewrites2.0%
Applied rewrites1.8%
herbie shell --seed 2025183
(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))))