
(FPCore (x y z t a b c) :precision binary64 (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)))
double code(double x, double y, double z, double t, double a, double b, double c) {
return ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c);
}
real(8) function code(x, y, z, t, a, b, c)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
code = ((((x * 9.0d0) * y) - (((z * 4.0d0) * t) * a)) + b) / (z * c)
end function
public static double code(double x, double y, double z, double t, double a, double b, double c) {
return ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c);
}
def code(x, y, z, t, a, b, c): return ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c)
function code(x, y, z, t, a, b, c) return Float64(Float64(Float64(Float64(Float64(x * 9.0) * y) - Float64(Float64(Float64(z * 4.0) * t) * a)) + b) / Float64(z * c)) end
function tmp = code(x, y, z, t, a, b, c) tmp = ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c); end
code[x_, y_, z_, t_, a_, b_, c_] := N[(N[(N[(N[(N[(x * 9.0), $MachinePrecision] * y), $MachinePrecision] - N[(N[(N[(z * 4.0), $MachinePrecision] * t), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision] + b), $MachinePrecision] / N[(z * c), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 18 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x y z t a b c) :precision binary64 (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)))
double code(double x, double y, double z, double t, double a, double b, double c) {
return ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c);
}
real(8) function code(x, y, z, t, a, b, c)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
code = ((((x * 9.0d0) * y) - (((z * 4.0d0) * t) * a)) + b) / (z * c)
end function
public static double code(double x, double y, double z, double t, double a, double b, double c) {
return ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c);
}
def code(x, y, z, t, a, b, c): return ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c)
function code(x, y, z, t, a, b, c) return Float64(Float64(Float64(Float64(Float64(x * 9.0) * y) - Float64(Float64(Float64(z * 4.0) * t) * a)) + b) / Float64(z * c)) end
function tmp = code(x, y, z, t, a, b, c) tmp = ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c); end
code[x_, y_, z_, t_, a_, b_, c_] := N[(N[(N[(N[(N[(x * 9.0), $MachinePrecision] * y), $MachinePrecision] - N[(N[(N[(z * 4.0), $MachinePrecision] * t), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision] + b), $MachinePrecision] / N[(z * c), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
\frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c}
\end{array}
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(*
c_s
(if (<= c_m 2.1e-43)
(/ (fma (* a t) (* -4.0 z) (fma (* x y) 9.0 b)) (* z c_m))
(fma
(* -4.0 t)
(/ a c_m)
(/ (fma (* -9.0 x) (/ y c_m) (/ (- b) c_m)) (- z))))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if (c_m <= 2.1e-43) {
tmp = fma((a * t), (-4.0 * z), fma((x * y), 9.0, b)) / (z * c_m);
} else {
tmp = fma((-4.0 * t), (a / c_m), (fma((-9.0 * x), (y / c_m), (-b / c_m)) / -z));
}
return c_s * tmp;
}
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) tmp = 0.0 if (c_m <= 2.1e-43) tmp = Float64(fma(Float64(a * t), Float64(-4.0 * z), fma(Float64(x * y), 9.0, b)) / Float64(z * c_m)); else tmp = fma(Float64(-4.0 * t), Float64(a / c_m), Float64(fma(Float64(-9.0 * x), Float64(y / c_m), Float64(Float64(-b) / c_m)) / Float64(-z))); end return Float64(c_s * tmp) end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := N[(c$95$s * If[LessEqual[c$95$m, 2.1e-43], N[(N[(N[(a * t), $MachinePrecision] * N[(-4.0 * z), $MachinePrecision] + N[(N[(x * y), $MachinePrecision] * 9.0 + b), $MachinePrecision]), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision], N[(N[(-4.0 * t), $MachinePrecision] * N[(a / c$95$m), $MachinePrecision] + N[(N[(N[(-9.0 * x), $MachinePrecision] * N[(y / c$95$m), $MachinePrecision] + N[((-b) / c$95$m), $MachinePrecision]), $MachinePrecision] / (-z)), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;c\_m \leq 2.1 \cdot 10^{-43}:\\
\;\;\;\;\frac{\mathsf{fma}\left(a \cdot t, -4 \cdot z, \mathsf{fma}\left(x \cdot y, 9, b\right)\right)}{z \cdot c\_m}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-4 \cdot t, \frac{a}{c\_m}, \frac{\mathsf{fma}\left(-9 \cdot x, \frac{y}{c\_m}, \frac{-b}{c\_m}\right)}{-z}\right)\\
\end{array}
\end{array}
if c < 2.1000000000000001e-43Initial program 80.4%
lift-+.f64N/A
lift--.f64N/A
sub-negN/A
+-commutativeN/A
associate-+l+N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
distribute-lft-neg-inN/A
lower-*.f64N/A
metadata-evalN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
Applied rewrites82.8%
if 2.1000000000000001e-43 < c Initial program 74.3%
Taylor expanded in a around -inf
associate-*r*N/A
lower-*.f64N/A
mul-1-negN/A
lower-neg.f64N/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
mul-1-negN/A
distribute-neg-frac2N/A
mul-1-negN/A
lower-/.f64N/A
Applied rewrites80.2%
Taylor expanded in z around -inf
Applied rewrites93.5%
Final simplification85.8%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(let* ((t_1 (fma (* x y) 9.0 b))
(t_2 (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c_m)))
(t_3 (* (* -4.0 z) a)))
(*
c_s
(if (<= t_2 -5e-324)
(/ (fma (* a t) (* -4.0 z) t_1) (* z c_m))
(if (<= t_2 2e-79)
(/ (/ (fma t_3 t t_1) z) c_m)
(if (<= t_2 INFINITY)
(/ (fma (* 9.0 x) y (fma t_3 t b)) (* z c_m))
(/ (* a -4.0) (/ c_m t))))))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double t_1 = fma((x * y), 9.0, b);
double t_2 = ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c_m);
double t_3 = (-4.0 * z) * a;
double tmp;
if (t_2 <= -5e-324) {
tmp = fma((a * t), (-4.0 * z), t_1) / (z * c_m);
} else if (t_2 <= 2e-79) {
tmp = (fma(t_3, t, t_1) / z) / c_m;
} else if (t_2 <= ((double) INFINITY)) {
tmp = fma((9.0 * x), y, fma(t_3, t, b)) / (z * c_m);
} else {
tmp = (a * -4.0) / (c_m / t);
}
return c_s * tmp;
}
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) t_1 = fma(Float64(x * y), 9.0, b) t_2 = Float64(Float64(Float64(Float64(Float64(x * 9.0) * y) - Float64(Float64(Float64(z * 4.0) * t) * a)) + b) / Float64(z * c_m)) t_3 = Float64(Float64(-4.0 * z) * a) tmp = 0.0 if (t_2 <= -5e-324) tmp = Float64(fma(Float64(a * t), Float64(-4.0 * z), t_1) / Float64(z * c_m)); elseif (t_2 <= 2e-79) tmp = Float64(Float64(fma(t_3, t, t_1) / z) / c_m); elseif (t_2 <= Inf) tmp = Float64(fma(Float64(9.0 * x), y, fma(t_3, t, b)) / Float64(z * c_m)); else tmp = Float64(Float64(a * -4.0) / Float64(c_m / t)); end return Float64(c_s * tmp) end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := Block[{t$95$1 = N[(N[(x * y), $MachinePrecision] * 9.0 + b), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[(N[(x * 9.0), $MachinePrecision] * y), $MachinePrecision] - N[(N[(N[(z * 4.0), $MachinePrecision] * t), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision] + b), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(-4.0 * z), $MachinePrecision] * a), $MachinePrecision]}, N[(c$95$s * If[LessEqual[t$95$2, -5e-324], N[(N[(N[(a * t), $MachinePrecision] * N[(-4.0 * z), $MachinePrecision] + t$95$1), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, 2e-79], N[(N[(N[(t$95$3 * t + t$95$1), $MachinePrecision] / z), $MachinePrecision] / c$95$m), $MachinePrecision], If[LessEqual[t$95$2, Infinity], N[(N[(N[(9.0 * x), $MachinePrecision] * y + N[(t$95$3 * t + b), $MachinePrecision]), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision], N[(N[(a * -4.0), $MachinePrecision] / N[(c$95$m / t), $MachinePrecision]), $MachinePrecision]]]]), $MachinePrecision]]]]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
\begin{array}{l}
t_1 := \mathsf{fma}\left(x \cdot y, 9, b\right)\\
t_2 := \frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c\_m}\\
t_3 := \left(-4 \cdot z\right) \cdot a\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_2 \leq -5 \cdot 10^{-324}:\\
\;\;\;\;\frac{\mathsf{fma}\left(a \cdot t, -4 \cdot z, t\_1\right)}{z \cdot c\_m}\\
\mathbf{elif}\;t\_2 \leq 2 \cdot 10^{-79}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(t\_3, t, t\_1\right)}{z}}{c\_m}\\
\mathbf{elif}\;t\_2 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(9 \cdot x, y, \mathsf{fma}\left(t\_3, t, b\right)\right)}{z \cdot c\_m}\\
\mathbf{else}:\\
\;\;\;\;\frac{a \cdot -4}{\frac{c\_m}{t}}\\
\end{array}
\end{array}
\end{array}
if (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) < -4.94066e-324Initial program 90.6%
lift-+.f64N/A
lift--.f64N/A
sub-negN/A
+-commutativeN/A
associate-+l+N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
distribute-lft-neg-inN/A
lower-*.f64N/A
metadata-evalN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
Applied rewrites89.8%
if -4.94066e-324 < (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) < 2e-79Initial program 56.4%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites90.6%
if 2e-79 < (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) < +inf.0Initial program 90.9%
lift-+.f64N/A
lift--.f64N/A
associate-+l-N/A
sub-negN/A
lift-*.f64N/A
lower-fma.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
neg-sub0N/A
associate-+l-N/A
neg-sub0N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
distribute-lft-neg-inN/A
*-commutativeN/A
associate-*r*N/A
lower-fma.f64N/A
Applied rewrites92.0%
if +inf.0 < (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) Initial program 0.0%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f647.5
Applied rewrites7.5%
Taylor expanded in x around 0
Applied rewrites52.1%
Taylor expanded in x around 0
Applied rewrites73.6%
Applied rewrites73.4%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(let* ((t_1 (fma (* x y) 9.0 b))
(t_2 (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c_m)))
(t_3 (* (* -4.0 z) a)))
(*
c_s
(if (<= t_2 -1e-86)
(/ (fma (* a t) (* -4.0 z) t_1) (* z c_m))
(if (<= t_2 0.0)
(/ (/ (fma t_3 t t_1) c_m) z)
(if (<= t_2 INFINITY)
(/ (fma (* 9.0 x) y (fma t_3 t b)) (* z c_m))
(/ (* a -4.0) (/ c_m t))))))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double t_1 = fma((x * y), 9.0, b);
double t_2 = ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c_m);
double t_3 = (-4.0 * z) * a;
double tmp;
if (t_2 <= -1e-86) {
tmp = fma((a * t), (-4.0 * z), t_1) / (z * c_m);
} else if (t_2 <= 0.0) {
tmp = (fma(t_3, t, t_1) / c_m) / z;
} else if (t_2 <= ((double) INFINITY)) {
tmp = fma((9.0 * x), y, fma(t_3, t, b)) / (z * c_m);
} else {
tmp = (a * -4.0) / (c_m / t);
}
return c_s * tmp;
}
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) t_1 = fma(Float64(x * y), 9.0, b) t_2 = Float64(Float64(Float64(Float64(Float64(x * 9.0) * y) - Float64(Float64(Float64(z * 4.0) * t) * a)) + b) / Float64(z * c_m)) t_3 = Float64(Float64(-4.0 * z) * a) tmp = 0.0 if (t_2 <= -1e-86) tmp = Float64(fma(Float64(a * t), Float64(-4.0 * z), t_1) / Float64(z * c_m)); elseif (t_2 <= 0.0) tmp = Float64(Float64(fma(t_3, t, t_1) / c_m) / z); elseif (t_2 <= Inf) tmp = Float64(fma(Float64(9.0 * x), y, fma(t_3, t, b)) / Float64(z * c_m)); else tmp = Float64(Float64(a * -4.0) / Float64(c_m / t)); end return Float64(c_s * tmp) end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := Block[{t$95$1 = N[(N[(x * y), $MachinePrecision] * 9.0 + b), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(N[(N[(x * 9.0), $MachinePrecision] * y), $MachinePrecision] - N[(N[(N[(z * 4.0), $MachinePrecision] * t), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision] + b), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(-4.0 * z), $MachinePrecision] * a), $MachinePrecision]}, N[(c$95$s * If[LessEqual[t$95$2, -1e-86], N[(N[(N[(a * t), $MachinePrecision] * N[(-4.0 * z), $MachinePrecision] + t$95$1), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, 0.0], N[(N[(N[(t$95$3 * t + t$95$1), $MachinePrecision] / c$95$m), $MachinePrecision] / z), $MachinePrecision], If[LessEqual[t$95$2, Infinity], N[(N[(N[(9.0 * x), $MachinePrecision] * y + N[(t$95$3 * t + b), $MachinePrecision]), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision], N[(N[(a * -4.0), $MachinePrecision] / N[(c$95$m / t), $MachinePrecision]), $MachinePrecision]]]]), $MachinePrecision]]]]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
\begin{array}{l}
t_1 := \mathsf{fma}\left(x \cdot y, 9, b\right)\\
t_2 := \frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c\_m}\\
t_3 := \left(-4 \cdot z\right) \cdot a\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_2 \leq -1 \cdot 10^{-86}:\\
\;\;\;\;\frac{\mathsf{fma}\left(a \cdot t, -4 \cdot z, t\_1\right)}{z \cdot c\_m}\\
\mathbf{elif}\;t\_2 \leq 0:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(t\_3, t, t\_1\right)}{c\_m}}{z}\\
\mathbf{elif}\;t\_2 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(9 \cdot x, y, \mathsf{fma}\left(t\_3, t, b\right)\right)}{z \cdot c\_m}\\
\mathbf{else}:\\
\;\;\;\;\frac{a \cdot -4}{\frac{c\_m}{t}}\\
\end{array}
\end{array}
\end{array}
if (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) < -1.00000000000000008e-86Initial program 89.9%
lift-+.f64N/A
lift--.f64N/A
sub-negN/A
+-commutativeN/A
associate-+l+N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
distribute-lft-neg-inN/A
lower-*.f64N/A
metadata-evalN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
Applied rewrites89.2%
if -1.00000000000000008e-86 < (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) < -0.0Initial program 51.9%
lift-/.f64N/A
lift-*.f64N/A
associate-/l/N/A
lower-/.f64N/A
Applied rewrites86.4%
if -0.0 < (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) < +inf.0Initial program 91.9%
lift-+.f64N/A
lift--.f64N/A
associate-+l-N/A
sub-negN/A
lift-*.f64N/A
lower-fma.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
neg-sub0N/A
associate-+l-N/A
neg-sub0N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
distribute-lft-neg-inN/A
*-commutativeN/A
associate-*r*N/A
lower-fma.f64N/A
Applied rewrites92.8%
if +inf.0 < (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) Initial program 0.0%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f647.5
Applied rewrites7.5%
Taylor expanded in x around 0
Applied rewrites52.1%
Taylor expanded in x around 0
Applied rewrites73.6%
Applied rewrites73.4%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(let* ((t_1 (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c_m))))
(*
c_s
(if (<= t_1 -5e-324)
(/ (fma (* a t) (* -4.0 z) (fma (* x y) 9.0 b)) (* z c_m))
(if (<= t_1 0.0)
(/ (/ (fma -4.0 (* (* t z) a) b) z) c_m)
(if (<= t_1 INFINITY)
(/ (fma (* 9.0 x) y (fma (* (* -4.0 z) a) t b)) (* z c_m))
(/ (* a -4.0) (/ c_m t))))))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double t_1 = ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c_m);
double tmp;
if (t_1 <= -5e-324) {
tmp = fma((a * t), (-4.0 * z), fma((x * y), 9.0, b)) / (z * c_m);
} else if (t_1 <= 0.0) {
tmp = (fma(-4.0, ((t * z) * a), b) / z) / c_m;
} else if (t_1 <= ((double) INFINITY)) {
tmp = fma((9.0 * x), y, fma(((-4.0 * z) * a), t, b)) / (z * c_m);
} else {
tmp = (a * -4.0) / (c_m / t);
}
return c_s * tmp;
}
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) t_1 = Float64(Float64(Float64(Float64(Float64(x * 9.0) * y) - Float64(Float64(Float64(z * 4.0) * t) * a)) + b) / Float64(z * c_m)) tmp = 0.0 if (t_1 <= -5e-324) tmp = Float64(fma(Float64(a * t), Float64(-4.0 * z), fma(Float64(x * y), 9.0, b)) / Float64(z * c_m)); elseif (t_1 <= 0.0) tmp = Float64(Float64(fma(-4.0, Float64(Float64(t * z) * a), b) / z) / c_m); elseif (t_1 <= Inf) tmp = Float64(fma(Float64(9.0 * x), y, fma(Float64(Float64(-4.0 * z) * a), t, b)) / Float64(z * c_m)); else tmp = Float64(Float64(a * -4.0) / Float64(c_m / t)); end return Float64(c_s * tmp) end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := Block[{t$95$1 = N[(N[(N[(N[(N[(x * 9.0), $MachinePrecision] * y), $MachinePrecision] - N[(N[(N[(z * 4.0), $MachinePrecision] * t), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision] + b), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision]}, N[(c$95$s * If[LessEqual[t$95$1, -5e-324], N[(N[(N[(a * t), $MachinePrecision] * N[(-4.0 * z), $MachinePrecision] + N[(N[(x * y), $MachinePrecision] * 9.0 + b), $MachinePrecision]), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 0.0], N[(N[(N[(-4.0 * N[(N[(t * z), $MachinePrecision] * a), $MachinePrecision] + b), $MachinePrecision] / z), $MachinePrecision] / c$95$m), $MachinePrecision], If[LessEqual[t$95$1, Infinity], N[(N[(N[(9.0 * x), $MachinePrecision] * y + N[(N[(N[(-4.0 * z), $MachinePrecision] * a), $MachinePrecision] * t + b), $MachinePrecision]), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision], N[(N[(a * -4.0), $MachinePrecision] / N[(c$95$m / t), $MachinePrecision]), $MachinePrecision]]]]), $MachinePrecision]]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
\begin{array}{l}
t_1 := \frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c\_m}\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_1 \leq -5 \cdot 10^{-324}:\\
\;\;\;\;\frac{\mathsf{fma}\left(a \cdot t, -4 \cdot z, \mathsf{fma}\left(x \cdot y, 9, b\right)\right)}{z \cdot c\_m}\\
\mathbf{elif}\;t\_1 \leq 0:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(-4, \left(t \cdot z\right) \cdot a, b\right)}{z}}{c\_m}\\
\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;\frac{\mathsf{fma}\left(9 \cdot x, y, \mathsf{fma}\left(\left(-4 \cdot z\right) \cdot a, t, b\right)\right)}{z \cdot c\_m}\\
\mathbf{else}:\\
\;\;\;\;\frac{a \cdot -4}{\frac{c\_m}{t}}\\
\end{array}
\end{array}
\end{array}
if (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) < -4.94066e-324Initial program 90.6%
lift-+.f64N/A
lift--.f64N/A
sub-negN/A
+-commutativeN/A
associate-+l+N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
distribute-rgt-neg-inN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
distribute-lft-neg-inN/A
lower-*.f64N/A
metadata-evalN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
Applied rewrites89.8%
if -4.94066e-324 < (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) < -0.0Initial program 33.8%
Taylor expanded in x around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f6492.5
Applied rewrites92.5%
if -0.0 < (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) < +inf.0Initial program 91.9%
lift-+.f64N/A
lift--.f64N/A
associate-+l-N/A
sub-negN/A
lift-*.f64N/A
lower-fma.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
neg-sub0N/A
associate-+l-N/A
neg-sub0N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
distribute-lft-neg-inN/A
*-commutativeN/A
associate-*r*N/A
lower-fma.f64N/A
Applied rewrites92.8%
if +inf.0 < (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) Initial program 0.0%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f647.5
Applied rewrites7.5%
Taylor expanded in x around 0
Applied rewrites52.1%
Taylor expanded in x around 0
Applied rewrites73.6%
Applied rewrites73.4%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(let* ((t_1 (/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c_m)))
(t_2 (/ (fma (* 9.0 x) y (fma (* (* -4.0 z) a) t b)) (* z c_m))))
(*
c_s
(if (<= t_1 -5e-324)
t_2
(if (<= t_1 0.0)
(/ (/ (fma -4.0 (* (* t z) a) b) z) c_m)
(if (<= t_1 INFINITY) t_2 (/ (* a -4.0) (/ c_m t))))))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double t_1 = ((((x * 9.0) * y) - (((z * 4.0) * t) * a)) + b) / (z * c_m);
double t_2 = fma((9.0 * x), y, fma(((-4.0 * z) * a), t, b)) / (z * c_m);
double tmp;
if (t_1 <= -5e-324) {
tmp = t_2;
} else if (t_1 <= 0.0) {
tmp = (fma(-4.0, ((t * z) * a), b) / z) / c_m;
} else if (t_1 <= ((double) INFINITY)) {
tmp = t_2;
} else {
tmp = (a * -4.0) / (c_m / t);
}
return c_s * tmp;
}
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) t_1 = Float64(Float64(Float64(Float64(Float64(x * 9.0) * y) - Float64(Float64(Float64(z * 4.0) * t) * a)) + b) / Float64(z * c_m)) t_2 = Float64(fma(Float64(9.0 * x), y, fma(Float64(Float64(-4.0 * z) * a), t, b)) / Float64(z * c_m)) tmp = 0.0 if (t_1 <= -5e-324) tmp = t_2; elseif (t_1 <= 0.0) tmp = Float64(Float64(fma(-4.0, Float64(Float64(t * z) * a), b) / z) / c_m); elseif (t_1 <= Inf) tmp = t_2; else tmp = Float64(Float64(a * -4.0) / Float64(c_m / t)); end return Float64(c_s * tmp) end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := Block[{t$95$1 = N[(N[(N[(N[(N[(x * 9.0), $MachinePrecision] * y), $MachinePrecision] - N[(N[(N[(z * 4.0), $MachinePrecision] * t), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision] + b), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(9.0 * x), $MachinePrecision] * y + N[(N[(N[(-4.0 * z), $MachinePrecision] * a), $MachinePrecision] * t + b), $MachinePrecision]), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision]}, N[(c$95$s * If[LessEqual[t$95$1, -5e-324], t$95$2, If[LessEqual[t$95$1, 0.0], N[(N[(N[(-4.0 * N[(N[(t * z), $MachinePrecision] * a), $MachinePrecision] + b), $MachinePrecision] / z), $MachinePrecision] / c$95$m), $MachinePrecision], If[LessEqual[t$95$1, Infinity], t$95$2, N[(N[(a * -4.0), $MachinePrecision] / N[(c$95$m / t), $MachinePrecision]), $MachinePrecision]]]]), $MachinePrecision]]]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
\begin{array}{l}
t_1 := \frac{\left(\left(x \cdot 9\right) \cdot y - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b}{z \cdot c\_m}\\
t_2 := \frac{\mathsf{fma}\left(9 \cdot x, y, \mathsf{fma}\left(\left(-4 \cdot z\right) \cdot a, t, b\right)\right)}{z \cdot c\_m}\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_1 \leq -5 \cdot 10^{-324}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;t\_1 \leq 0:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(-4, \left(t \cdot z\right) \cdot a, b\right)}{z}}{c\_m}\\
\mathbf{elif}\;t\_1 \leq \infty:\\
\;\;\;\;t\_2\\
\mathbf{else}:\\
\;\;\;\;\frac{a \cdot -4}{\frac{c\_m}{t}}\\
\end{array}
\end{array}
\end{array}
if (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) < -4.94066e-324 or -0.0 < (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) < +inf.0Initial program 91.2%
lift-+.f64N/A
lift--.f64N/A
associate-+l-N/A
sub-negN/A
lift-*.f64N/A
lower-fma.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
neg-sub0N/A
associate-+l-N/A
neg-sub0N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
distribute-lft-neg-inN/A
*-commutativeN/A
associate-*r*N/A
lower-fma.f64N/A
Applied rewrites91.2%
if -4.94066e-324 < (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) < -0.0Initial program 33.8%
Taylor expanded in x around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f6492.5
Applied rewrites92.5%
if +inf.0 < (/.f64 (+.f64 (-.f64 (*.f64 (*.f64 x #s(literal 9 binary64)) y) (*.f64 (*.f64 (*.f64 z #s(literal 4 binary64)) t) a)) b) (*.f64 z c)) Initial program 0.0%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f647.5
Applied rewrites7.5%
Taylor expanded in x around 0
Applied rewrites52.1%
Taylor expanded in x around 0
Applied rewrites73.6%
Applied rewrites73.4%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(let* ((t_1 (/ (* (* x y) 9.0) (* z c_m))))
(*
c_s
(if (<= b -1.26e-17)
(/ (/ b c_m) z)
(if (<= b -6.8e-156)
t_1
(if (<= b 9.2e-262)
(/ (* a -4.0) (/ c_m t))
(if (<= b 1.76e-127)
t_1
(if (<= b 3.15e-24)
(/ (* (* t a) -4.0) c_m)
(pow (* (/ c_m b) z) -1.0)))))))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double t_1 = ((x * y) * 9.0) / (z * c_m);
double tmp;
if (b <= -1.26e-17) {
tmp = (b / c_m) / z;
} else if (b <= -6.8e-156) {
tmp = t_1;
} else if (b <= 9.2e-262) {
tmp = (a * -4.0) / (c_m / t);
} else if (b <= 1.76e-127) {
tmp = t_1;
} else if (b <= 3.15e-24) {
tmp = ((t * a) * -4.0) / c_m;
} else {
tmp = pow(((c_m / b) * z), -1.0);
}
return c_s * tmp;
}
c\_m = abs(c)
c\_s = copysign(1.0d0, c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
real(8) function code(c_s, x, y, z, t, a, b, c_m)
real(8), intent (in) :: c_s
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c_m
real(8) :: t_1
real(8) :: tmp
t_1 = ((x * y) * 9.0d0) / (z * c_m)
if (b <= (-1.26d-17)) then
tmp = (b / c_m) / z
else if (b <= (-6.8d-156)) then
tmp = t_1
else if (b <= 9.2d-262) then
tmp = (a * (-4.0d0)) / (c_m / t)
else if (b <= 1.76d-127) then
tmp = t_1
else if (b <= 3.15d-24) then
tmp = ((t * a) * (-4.0d0)) / c_m
else
tmp = ((c_m / b) * z) ** (-1.0d0)
end if
code = c_s * tmp
end function
c\_m = Math.abs(c);
c\_s = Math.copySign(1.0, c);
assert x < y && y < z && z < t && t < a && a < b && b < c_m;
public static double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double t_1 = ((x * y) * 9.0) / (z * c_m);
double tmp;
if (b <= -1.26e-17) {
tmp = (b / c_m) / z;
} else if (b <= -6.8e-156) {
tmp = t_1;
} else if (b <= 9.2e-262) {
tmp = (a * -4.0) / (c_m / t);
} else if (b <= 1.76e-127) {
tmp = t_1;
} else if (b <= 3.15e-24) {
tmp = ((t * a) * -4.0) / c_m;
} else {
tmp = Math.pow(((c_m / b) * z), -1.0);
}
return c_s * tmp;
}
c\_m = math.fabs(c) c\_s = math.copysign(1.0, c) [x, y, z, t, a, b, c_m] = sort([x, y, z, t, a, b, c_m]) def code(c_s, x, y, z, t, a, b, c_m): t_1 = ((x * y) * 9.0) / (z * c_m) tmp = 0 if b <= -1.26e-17: tmp = (b / c_m) / z elif b <= -6.8e-156: tmp = t_1 elif b <= 9.2e-262: tmp = (a * -4.0) / (c_m / t) elif b <= 1.76e-127: tmp = t_1 elif b <= 3.15e-24: tmp = ((t * a) * -4.0) / c_m else: tmp = math.pow(((c_m / b) * z), -1.0) return c_s * tmp
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) t_1 = Float64(Float64(Float64(x * y) * 9.0) / Float64(z * c_m)) tmp = 0.0 if (b <= -1.26e-17) tmp = Float64(Float64(b / c_m) / z); elseif (b <= -6.8e-156) tmp = t_1; elseif (b <= 9.2e-262) tmp = Float64(Float64(a * -4.0) / Float64(c_m / t)); elseif (b <= 1.76e-127) tmp = t_1; elseif (b <= 3.15e-24) tmp = Float64(Float64(Float64(t * a) * -4.0) / c_m); else tmp = Float64(Float64(c_m / b) * z) ^ -1.0; end return Float64(c_s * tmp) end
c\_m = abs(c);
c\_s = sign(c) * abs(1.0);
x, y, z, t, a, b, c_m = num2cell(sort([x, y, z, t, a, b, c_m])){:}
function tmp_2 = code(c_s, x, y, z, t, a, b, c_m)
t_1 = ((x * y) * 9.0) / (z * c_m);
tmp = 0.0;
if (b <= -1.26e-17)
tmp = (b / c_m) / z;
elseif (b <= -6.8e-156)
tmp = t_1;
elseif (b <= 9.2e-262)
tmp = (a * -4.0) / (c_m / t);
elseif (b <= 1.76e-127)
tmp = t_1;
elseif (b <= 3.15e-24)
tmp = ((t * a) * -4.0) / c_m;
else
tmp = ((c_m / b) * z) ^ -1.0;
end
tmp_2 = c_s * tmp;
end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := Block[{t$95$1 = N[(N[(N[(x * y), $MachinePrecision] * 9.0), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision]}, N[(c$95$s * If[LessEqual[b, -1.26e-17], N[(N[(b / c$95$m), $MachinePrecision] / z), $MachinePrecision], If[LessEqual[b, -6.8e-156], t$95$1, If[LessEqual[b, 9.2e-262], N[(N[(a * -4.0), $MachinePrecision] / N[(c$95$m / t), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 1.76e-127], t$95$1, If[LessEqual[b, 3.15e-24], N[(N[(N[(t * a), $MachinePrecision] * -4.0), $MachinePrecision] / c$95$m), $MachinePrecision], N[Power[N[(N[(c$95$m / b), $MachinePrecision] * z), $MachinePrecision], -1.0], $MachinePrecision]]]]]]), $MachinePrecision]]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
\begin{array}{l}
t_1 := \frac{\left(x \cdot y\right) \cdot 9}{z \cdot c\_m}\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;b \leq -1.26 \cdot 10^{-17}:\\
\;\;\;\;\frac{\frac{b}{c\_m}}{z}\\
\mathbf{elif}\;b \leq -6.8 \cdot 10^{-156}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;b \leq 9.2 \cdot 10^{-262}:\\
\;\;\;\;\frac{a \cdot -4}{\frac{c\_m}{t}}\\
\mathbf{elif}\;b \leq 1.76 \cdot 10^{-127}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;b \leq 3.15 \cdot 10^{-24}:\\
\;\;\;\;\frac{\left(t \cdot a\right) \cdot -4}{c\_m}\\
\mathbf{else}:\\
\;\;\;\;{\left(\frac{c\_m}{b} \cdot z\right)}^{-1}\\
\end{array}
\end{array}
\end{array}
if b < -1.2600000000000001e-17Initial program 81.5%
Taylor expanded in b around inf
lower-/.f64N/A
lower-*.f6458.2
Applied rewrites58.2%
Applied rewrites62.6%
if -1.2600000000000001e-17 < b < -6.79999999999999981e-156 or 9.20000000000000039e-262 < b < 1.76000000000000007e-127Initial program 81.9%
lift-+.f64N/A
lift--.f64N/A
associate-+l-N/A
sub-negN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
neg-sub0N/A
associate-+l-N/A
neg-sub0N/A
Applied rewrites85.1%
Taylor expanded in x around inf
*-commutativeN/A
lower-*.f64N/A
lower-*.f6461.2
Applied rewrites61.2%
if -6.79999999999999981e-156 < b < 9.20000000000000039e-262Initial program 76.2%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6473.2
Applied rewrites73.2%
Taylor expanded in x around 0
Applied rewrites55.0%
Taylor expanded in x around 0
Applied rewrites62.6%
Applied rewrites62.7%
if 1.76000000000000007e-127 < b < 3.1499999999999999e-24Initial program 75.6%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6476.6
Applied rewrites76.6%
Taylor expanded in x around 0
Applied rewrites68.5%
if 3.1499999999999999e-24 < b Initial program 75.2%
Taylor expanded in b around inf
lower-/.f64N/A
lower-*.f6452.5
Applied rewrites52.5%
Applied rewrites53.9%
Applied rewrites52.4%
Applied rewrites54.0%
Final simplification60.6%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(let* ((t_1 (* (* -4.0 z) a)))
(*
c_s
(if (<= z -6.8e+56)
(fma
(* (/ x (* c_m z)) 9.0)
y
(fma -4.0 (/ (* a t) c_m) (/ b (* c_m z))))
(if (<= z 2.4e+69)
(/ (fma (* 9.0 x) y (fma t_1 t b)) (* z c_m))
(/ (/ (fma t_1 t (fma (* x y) 9.0 b)) z) c_m))))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double t_1 = (-4.0 * z) * a;
double tmp;
if (z <= -6.8e+56) {
tmp = fma(((x / (c_m * z)) * 9.0), y, fma(-4.0, ((a * t) / c_m), (b / (c_m * z))));
} else if (z <= 2.4e+69) {
tmp = fma((9.0 * x), y, fma(t_1, t, b)) / (z * c_m);
} else {
tmp = (fma(t_1, t, fma((x * y), 9.0, b)) / z) / c_m;
}
return c_s * tmp;
}
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) t_1 = Float64(Float64(-4.0 * z) * a) tmp = 0.0 if (z <= -6.8e+56) tmp = fma(Float64(Float64(x / Float64(c_m * z)) * 9.0), y, fma(-4.0, Float64(Float64(a * t) / c_m), Float64(b / Float64(c_m * z)))); elseif (z <= 2.4e+69) tmp = Float64(fma(Float64(9.0 * x), y, fma(t_1, t, b)) / Float64(z * c_m)); else tmp = Float64(Float64(fma(t_1, t, fma(Float64(x * y), 9.0, b)) / z) / c_m); end return Float64(c_s * tmp) end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := Block[{t$95$1 = N[(N[(-4.0 * z), $MachinePrecision] * a), $MachinePrecision]}, N[(c$95$s * If[LessEqual[z, -6.8e+56], N[(N[(N[(x / N[(c$95$m * z), $MachinePrecision]), $MachinePrecision] * 9.0), $MachinePrecision] * y + N[(-4.0 * N[(N[(a * t), $MachinePrecision] / c$95$m), $MachinePrecision] + N[(b / N[(c$95$m * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 2.4e+69], N[(N[(N[(9.0 * x), $MachinePrecision] * y + N[(t$95$1 * t + b), $MachinePrecision]), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision], N[(N[(N[(t$95$1 * t + N[(N[(x * y), $MachinePrecision] * 9.0 + b), $MachinePrecision]), $MachinePrecision] / z), $MachinePrecision] / c$95$m), $MachinePrecision]]]), $MachinePrecision]]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
\begin{array}{l}
t_1 := \left(-4 \cdot z\right) \cdot a\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;z \leq -6.8 \cdot 10^{+56}:\\
\;\;\;\;\mathsf{fma}\left(\frac{x}{c\_m \cdot z} \cdot 9, y, \mathsf{fma}\left(-4, \frac{a \cdot t}{c\_m}, \frac{b}{c\_m \cdot z}\right)\right)\\
\mathbf{elif}\;z \leq 2.4 \cdot 10^{+69}:\\
\;\;\;\;\frac{\mathsf{fma}\left(9 \cdot x, y, \mathsf{fma}\left(t\_1, t, b\right)\right)}{z \cdot c\_m}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(t\_1, t, \mathsf{fma}\left(x \cdot y, 9, b\right)\right)}{z}}{c\_m}\\
\end{array}
\end{array}
\end{array}
if z < -6.80000000000000002e56Initial program 52.3%
Taylor expanded in x around 0
associate--l+N/A
associate-*r/N/A
associate-*r*N/A
associate-*l/N/A
associate-*r/N/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower-*.f64N/A
lower-/.f64N/A
lower-*.f6482.4
Applied rewrites82.4%
if -6.80000000000000002e56 < z < 2.4000000000000002e69Initial program 94.6%
lift-+.f64N/A
lift--.f64N/A
associate-+l-N/A
sub-negN/A
lift-*.f64N/A
lower-fma.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
neg-sub0N/A
associate-+l-N/A
neg-sub0N/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
distribute-lft-neg-inN/A
*-commutativeN/A
associate-*r*N/A
lower-fma.f64N/A
Applied rewrites96.0%
if 2.4000000000000002e69 < z Initial program 61.5%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites81.4%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(let* ((t_1 (/ (* (* x y) 9.0) (* z c_m))) (t_2 (/ (/ b c_m) z)))
(*
c_s
(if (<= b -1.26e-17)
t_2
(if (<= b -6.8e-156)
t_1
(if (<= b 9.2e-262)
(/ (* a -4.0) (/ c_m t))
(if (<= b 1.76e-127)
t_1
(if (<= b 6.4e-28) (/ (* (* t a) -4.0) c_m) t_2))))))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double t_1 = ((x * y) * 9.0) / (z * c_m);
double t_2 = (b / c_m) / z;
double tmp;
if (b <= -1.26e-17) {
tmp = t_2;
} else if (b <= -6.8e-156) {
tmp = t_1;
} else if (b <= 9.2e-262) {
tmp = (a * -4.0) / (c_m / t);
} else if (b <= 1.76e-127) {
tmp = t_1;
} else if (b <= 6.4e-28) {
tmp = ((t * a) * -4.0) / c_m;
} else {
tmp = t_2;
}
return c_s * tmp;
}
c\_m = abs(c)
c\_s = copysign(1.0d0, c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
real(8) function code(c_s, x, y, z, t, a, b, c_m)
real(8), intent (in) :: c_s
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c_m
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_1 = ((x * y) * 9.0d0) / (z * c_m)
t_2 = (b / c_m) / z
if (b <= (-1.26d-17)) then
tmp = t_2
else if (b <= (-6.8d-156)) then
tmp = t_1
else if (b <= 9.2d-262) then
tmp = (a * (-4.0d0)) / (c_m / t)
else if (b <= 1.76d-127) then
tmp = t_1
else if (b <= 6.4d-28) then
tmp = ((t * a) * (-4.0d0)) / c_m
else
tmp = t_2
end if
code = c_s * tmp
end function
c\_m = Math.abs(c);
c\_s = Math.copySign(1.0, c);
assert x < y && y < z && z < t && t < a && a < b && b < c_m;
public static double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double t_1 = ((x * y) * 9.0) / (z * c_m);
double t_2 = (b / c_m) / z;
double tmp;
if (b <= -1.26e-17) {
tmp = t_2;
} else if (b <= -6.8e-156) {
tmp = t_1;
} else if (b <= 9.2e-262) {
tmp = (a * -4.0) / (c_m / t);
} else if (b <= 1.76e-127) {
tmp = t_1;
} else if (b <= 6.4e-28) {
tmp = ((t * a) * -4.0) / c_m;
} else {
tmp = t_2;
}
return c_s * tmp;
}
c\_m = math.fabs(c) c\_s = math.copysign(1.0, c) [x, y, z, t, a, b, c_m] = sort([x, y, z, t, a, b, c_m]) def code(c_s, x, y, z, t, a, b, c_m): t_1 = ((x * y) * 9.0) / (z * c_m) t_2 = (b / c_m) / z tmp = 0 if b <= -1.26e-17: tmp = t_2 elif b <= -6.8e-156: tmp = t_1 elif b <= 9.2e-262: tmp = (a * -4.0) / (c_m / t) elif b <= 1.76e-127: tmp = t_1 elif b <= 6.4e-28: tmp = ((t * a) * -4.0) / c_m else: tmp = t_2 return c_s * tmp
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) t_1 = Float64(Float64(Float64(x * y) * 9.0) / Float64(z * c_m)) t_2 = Float64(Float64(b / c_m) / z) tmp = 0.0 if (b <= -1.26e-17) tmp = t_2; elseif (b <= -6.8e-156) tmp = t_1; elseif (b <= 9.2e-262) tmp = Float64(Float64(a * -4.0) / Float64(c_m / t)); elseif (b <= 1.76e-127) tmp = t_1; elseif (b <= 6.4e-28) tmp = Float64(Float64(Float64(t * a) * -4.0) / c_m); else tmp = t_2; end return Float64(c_s * tmp) end
c\_m = abs(c);
c\_s = sign(c) * abs(1.0);
x, y, z, t, a, b, c_m = num2cell(sort([x, y, z, t, a, b, c_m])){:}
function tmp_2 = code(c_s, x, y, z, t, a, b, c_m)
t_1 = ((x * y) * 9.0) / (z * c_m);
t_2 = (b / c_m) / z;
tmp = 0.0;
if (b <= -1.26e-17)
tmp = t_2;
elseif (b <= -6.8e-156)
tmp = t_1;
elseif (b <= 9.2e-262)
tmp = (a * -4.0) / (c_m / t);
elseif (b <= 1.76e-127)
tmp = t_1;
elseif (b <= 6.4e-28)
tmp = ((t * a) * -4.0) / c_m;
else
tmp = t_2;
end
tmp_2 = c_s * tmp;
end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := Block[{t$95$1 = N[(N[(N[(x * y), $MachinePrecision] * 9.0), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(b / c$95$m), $MachinePrecision] / z), $MachinePrecision]}, N[(c$95$s * If[LessEqual[b, -1.26e-17], t$95$2, If[LessEqual[b, -6.8e-156], t$95$1, If[LessEqual[b, 9.2e-262], N[(N[(a * -4.0), $MachinePrecision] / N[(c$95$m / t), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 1.76e-127], t$95$1, If[LessEqual[b, 6.4e-28], N[(N[(N[(t * a), $MachinePrecision] * -4.0), $MachinePrecision] / c$95$m), $MachinePrecision], t$95$2]]]]]), $MachinePrecision]]]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
\begin{array}{l}
t_1 := \frac{\left(x \cdot y\right) \cdot 9}{z \cdot c\_m}\\
t_2 := \frac{\frac{b}{c\_m}}{z}\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;b \leq -1.26 \cdot 10^{-17}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;b \leq -6.8 \cdot 10^{-156}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;b \leq 9.2 \cdot 10^{-262}:\\
\;\;\;\;\frac{a \cdot -4}{\frac{c\_m}{t}}\\
\mathbf{elif}\;b \leq 1.76 \cdot 10^{-127}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;b \leq 6.4 \cdot 10^{-28}:\\
\;\;\;\;\frac{\left(t \cdot a\right) \cdot -4}{c\_m}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
\end{array}
if b < -1.2600000000000001e-17 or 6.39999999999999964e-28 < b Initial program 78.4%
Taylor expanded in b around inf
lower-/.f64N/A
lower-*.f6455.3
Applied rewrites55.3%
Applied rewrites58.3%
if -1.2600000000000001e-17 < b < -6.79999999999999981e-156 or 9.20000000000000039e-262 < b < 1.76000000000000007e-127Initial program 81.9%
lift-+.f64N/A
lift--.f64N/A
associate-+l-N/A
sub-negN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
neg-sub0N/A
associate-+l-N/A
neg-sub0N/A
Applied rewrites85.1%
Taylor expanded in x around inf
*-commutativeN/A
lower-*.f64N/A
lower-*.f6461.2
Applied rewrites61.2%
if -6.79999999999999981e-156 < b < 9.20000000000000039e-262Initial program 76.2%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6473.2
Applied rewrites73.2%
Taylor expanded in x around 0
Applied rewrites55.0%
Taylor expanded in x around 0
Applied rewrites62.6%
Applied rewrites62.7%
if 1.76000000000000007e-127 < b < 6.39999999999999964e-28Initial program 75.6%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6476.6
Applied rewrites76.6%
Taylor expanded in x around 0
Applied rewrites68.5%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(let* ((t_1 (/ (* (* x y) 9.0) (* z c_m))) (t_2 (/ (/ b c_m) z)))
(*
c_s
(if (<= b -1.26e-17)
t_2
(if (<= b -6.8e-156)
t_1
(if (<= b 9.2e-262)
(* (/ t c_m) (* a -4.0))
(if (<= b 1.76e-127)
t_1
(if (<= b 6.4e-28) (/ (* (* t a) -4.0) c_m) t_2))))))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double t_1 = ((x * y) * 9.0) / (z * c_m);
double t_2 = (b / c_m) / z;
double tmp;
if (b <= -1.26e-17) {
tmp = t_2;
} else if (b <= -6.8e-156) {
tmp = t_1;
} else if (b <= 9.2e-262) {
tmp = (t / c_m) * (a * -4.0);
} else if (b <= 1.76e-127) {
tmp = t_1;
} else if (b <= 6.4e-28) {
tmp = ((t * a) * -4.0) / c_m;
} else {
tmp = t_2;
}
return c_s * tmp;
}
c\_m = abs(c)
c\_s = copysign(1.0d0, c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
real(8) function code(c_s, x, y, z, t, a, b, c_m)
real(8), intent (in) :: c_s
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c_m
real(8) :: t_1
real(8) :: t_2
real(8) :: tmp
t_1 = ((x * y) * 9.0d0) / (z * c_m)
t_2 = (b / c_m) / z
if (b <= (-1.26d-17)) then
tmp = t_2
else if (b <= (-6.8d-156)) then
tmp = t_1
else if (b <= 9.2d-262) then
tmp = (t / c_m) * (a * (-4.0d0))
else if (b <= 1.76d-127) then
tmp = t_1
else if (b <= 6.4d-28) then
tmp = ((t * a) * (-4.0d0)) / c_m
else
tmp = t_2
end if
code = c_s * tmp
end function
c\_m = Math.abs(c);
c\_s = Math.copySign(1.0, c);
assert x < y && y < z && z < t && t < a && a < b && b < c_m;
public static double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double t_1 = ((x * y) * 9.0) / (z * c_m);
double t_2 = (b / c_m) / z;
double tmp;
if (b <= -1.26e-17) {
tmp = t_2;
} else if (b <= -6.8e-156) {
tmp = t_1;
} else if (b <= 9.2e-262) {
tmp = (t / c_m) * (a * -4.0);
} else if (b <= 1.76e-127) {
tmp = t_1;
} else if (b <= 6.4e-28) {
tmp = ((t * a) * -4.0) / c_m;
} else {
tmp = t_2;
}
return c_s * tmp;
}
c\_m = math.fabs(c) c\_s = math.copysign(1.0, c) [x, y, z, t, a, b, c_m] = sort([x, y, z, t, a, b, c_m]) def code(c_s, x, y, z, t, a, b, c_m): t_1 = ((x * y) * 9.0) / (z * c_m) t_2 = (b / c_m) / z tmp = 0 if b <= -1.26e-17: tmp = t_2 elif b <= -6.8e-156: tmp = t_1 elif b <= 9.2e-262: tmp = (t / c_m) * (a * -4.0) elif b <= 1.76e-127: tmp = t_1 elif b <= 6.4e-28: tmp = ((t * a) * -4.0) / c_m else: tmp = t_2 return c_s * tmp
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) t_1 = Float64(Float64(Float64(x * y) * 9.0) / Float64(z * c_m)) t_2 = Float64(Float64(b / c_m) / z) tmp = 0.0 if (b <= -1.26e-17) tmp = t_2; elseif (b <= -6.8e-156) tmp = t_1; elseif (b <= 9.2e-262) tmp = Float64(Float64(t / c_m) * Float64(a * -4.0)); elseif (b <= 1.76e-127) tmp = t_1; elseif (b <= 6.4e-28) tmp = Float64(Float64(Float64(t * a) * -4.0) / c_m); else tmp = t_2; end return Float64(c_s * tmp) end
c\_m = abs(c);
c\_s = sign(c) * abs(1.0);
x, y, z, t, a, b, c_m = num2cell(sort([x, y, z, t, a, b, c_m])){:}
function tmp_2 = code(c_s, x, y, z, t, a, b, c_m)
t_1 = ((x * y) * 9.0) / (z * c_m);
t_2 = (b / c_m) / z;
tmp = 0.0;
if (b <= -1.26e-17)
tmp = t_2;
elseif (b <= -6.8e-156)
tmp = t_1;
elseif (b <= 9.2e-262)
tmp = (t / c_m) * (a * -4.0);
elseif (b <= 1.76e-127)
tmp = t_1;
elseif (b <= 6.4e-28)
tmp = ((t * a) * -4.0) / c_m;
else
tmp = t_2;
end
tmp_2 = c_s * tmp;
end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := Block[{t$95$1 = N[(N[(N[(x * y), $MachinePrecision] * 9.0), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(b / c$95$m), $MachinePrecision] / z), $MachinePrecision]}, N[(c$95$s * If[LessEqual[b, -1.26e-17], t$95$2, If[LessEqual[b, -6.8e-156], t$95$1, If[LessEqual[b, 9.2e-262], N[(N[(t / c$95$m), $MachinePrecision] * N[(a * -4.0), $MachinePrecision]), $MachinePrecision], If[LessEqual[b, 1.76e-127], t$95$1, If[LessEqual[b, 6.4e-28], N[(N[(N[(t * a), $MachinePrecision] * -4.0), $MachinePrecision] / c$95$m), $MachinePrecision], t$95$2]]]]]), $MachinePrecision]]]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
\begin{array}{l}
t_1 := \frac{\left(x \cdot y\right) \cdot 9}{z \cdot c\_m}\\
t_2 := \frac{\frac{b}{c\_m}}{z}\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;b \leq -1.26 \cdot 10^{-17}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;b \leq -6.8 \cdot 10^{-156}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;b \leq 9.2 \cdot 10^{-262}:\\
\;\;\;\;\frac{t}{c\_m} \cdot \left(a \cdot -4\right)\\
\mathbf{elif}\;b \leq 1.76 \cdot 10^{-127}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;b \leq 6.4 \cdot 10^{-28}:\\
\;\;\;\;\frac{\left(t \cdot a\right) \cdot -4}{c\_m}\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
\end{array}
if b < -1.2600000000000001e-17 or 6.39999999999999964e-28 < b Initial program 78.4%
Taylor expanded in b around inf
lower-/.f64N/A
lower-*.f6455.3
Applied rewrites55.3%
Applied rewrites58.3%
if -1.2600000000000001e-17 < b < -6.79999999999999981e-156 or 9.20000000000000039e-262 < b < 1.76000000000000007e-127Initial program 81.9%
lift-+.f64N/A
lift--.f64N/A
associate-+l-N/A
sub-negN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
neg-sub0N/A
associate-+l-N/A
neg-sub0N/A
Applied rewrites85.1%
Taylor expanded in x around inf
*-commutativeN/A
lower-*.f64N/A
lower-*.f6461.2
Applied rewrites61.2%
if -6.79999999999999981e-156 < b < 9.20000000000000039e-262Initial program 76.2%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6473.2
Applied rewrites73.2%
Taylor expanded in x around 0
Applied rewrites55.0%
Taylor expanded in x around 0
Applied rewrites62.6%
Applied rewrites62.7%
if 1.76000000000000007e-127 < b < 6.39999999999999964e-28Initial program 75.6%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6476.6
Applied rewrites76.6%
Taylor expanded in x around 0
Applied rewrites68.5%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(*
c_s
(if (or (<= a -2e-44) (not (<= a 3.7e+37)))
(fma (* -4.0 t) (/ a c_m) (/ b (* z c_m)))
(/ (/ (fma (* 9.0 y) x b) z) c_m))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if ((a <= -2e-44) || !(a <= 3.7e+37)) {
tmp = fma((-4.0 * t), (a / c_m), (b / (z * c_m)));
} else {
tmp = (fma((9.0 * y), x, b) / z) / c_m;
}
return c_s * tmp;
}
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) tmp = 0.0 if ((a <= -2e-44) || !(a <= 3.7e+37)) tmp = fma(Float64(-4.0 * t), Float64(a / c_m), Float64(b / Float64(z * c_m))); else tmp = Float64(Float64(fma(Float64(9.0 * y), x, b) / z) / c_m); end return Float64(c_s * tmp) end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := N[(c$95$s * If[Or[LessEqual[a, -2e-44], N[Not[LessEqual[a, 3.7e+37]], $MachinePrecision]], N[(N[(-4.0 * t), $MachinePrecision] * N[(a / c$95$m), $MachinePrecision] + N[(b / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(9.0 * y), $MachinePrecision] * x + b), $MachinePrecision] / z), $MachinePrecision] / c$95$m), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;a \leq -2 \cdot 10^{-44} \lor \neg \left(a \leq 3.7 \cdot 10^{+37}\right):\\
\;\;\;\;\mathsf{fma}\left(-4 \cdot t, \frac{a}{c\_m}, \frac{b}{z \cdot c\_m}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\mathsf{fma}\left(9 \cdot y, x, b\right)}{z}}{c\_m}\\
\end{array}
\end{array}
if a < -1.99999999999999991e-44 or 3.6999999999999999e37 < a Initial program 77.3%
Taylor expanded in a around -inf
associate-*r*N/A
lower-*.f64N/A
mul-1-negN/A
lower-neg.f64N/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
mul-1-negN/A
distribute-neg-frac2N/A
mul-1-negN/A
lower-/.f64N/A
Applied rewrites80.3%
Taylor expanded in z around -inf
Applied rewrites83.6%
Taylor expanded in x around 0
Applied rewrites77.8%
if -1.99999999999999991e-44 < a < 3.6999999999999999e37Initial program 80.1%
Taylor expanded in z around 0
associate-/r*N/A
lower-/.f64N/A
lower-/.f64N/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f6477.0
Applied rewrites77.0%
Applied rewrites76.0%
Final simplification77.0%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(*
c_s
(if (<= t -2.55e+209)
(/ (* a -4.0) (/ c_m t))
(if (<= t 1.75e+31)
(/ (fma (* -9.0 x) y (- b)) (* (- z) c_m))
(* (* (/ t c_m) a) -4.0)))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if (t <= -2.55e+209) {
tmp = (a * -4.0) / (c_m / t);
} else if (t <= 1.75e+31) {
tmp = fma((-9.0 * x), y, -b) / (-z * c_m);
} else {
tmp = ((t / c_m) * a) * -4.0;
}
return c_s * tmp;
}
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) tmp = 0.0 if (t <= -2.55e+209) tmp = Float64(Float64(a * -4.0) / Float64(c_m / t)); elseif (t <= 1.75e+31) tmp = Float64(fma(Float64(-9.0 * x), y, Float64(-b)) / Float64(Float64(-z) * c_m)); else tmp = Float64(Float64(Float64(t / c_m) * a) * -4.0); end return Float64(c_s * tmp) end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := N[(c$95$s * If[LessEqual[t, -2.55e+209], N[(N[(a * -4.0), $MachinePrecision] / N[(c$95$m / t), $MachinePrecision]), $MachinePrecision], If[LessEqual[t, 1.75e+31], N[(N[(N[(-9.0 * x), $MachinePrecision] * y + (-b)), $MachinePrecision] / N[((-z) * c$95$m), $MachinePrecision]), $MachinePrecision], N[(N[(N[(t / c$95$m), $MachinePrecision] * a), $MachinePrecision] * -4.0), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;t \leq -2.55 \cdot 10^{+209}:\\
\;\;\;\;\frac{a \cdot -4}{\frac{c\_m}{t}}\\
\mathbf{elif}\;t \leq 1.75 \cdot 10^{+31}:\\
\;\;\;\;\frac{\mathsf{fma}\left(-9 \cdot x, y, -b\right)}{\left(-z\right) \cdot c\_m}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{t}{c\_m} \cdot a\right) \cdot -4\\
\end{array}
\end{array}
if t < -2.55000000000000011e209Initial program 62.9%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6458.6
Applied rewrites58.6%
Taylor expanded in x around 0
Applied rewrites72.0%
Taylor expanded in x around 0
Applied rewrites76.6%
Applied rewrites76.6%
if -2.55000000000000011e209 < t < 1.75e31Initial program 81.5%
Taylor expanded in a around -inf
associate-*r*N/A
lower-*.f64N/A
mul-1-negN/A
lower-neg.f64N/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
mul-1-negN/A
distribute-neg-frac2N/A
mul-1-negN/A
lower-/.f64N/A
Applied rewrites74.7%
Taylor expanded in z around -inf
Applied rewrites83.8%
Taylor expanded in z around 0
Applied rewrites68.3%
if 1.75e31 < t Initial program 74.5%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6451.8
Applied rewrites51.8%
Taylor expanded in x around 0
Applied rewrites47.6%
Taylor expanded in x around 0
Applied rewrites62.7%
Final simplification67.9%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(*
c_s
(if (<= t -2.55e+209)
(/ (* a -4.0) (/ c_m t))
(if (<= t 1.75e+31)
(/ (fma (* y x) 9.0 b) (* z c_m))
(* (* (/ t c_m) a) -4.0)))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if (t <= -2.55e+209) {
tmp = (a * -4.0) / (c_m / t);
} else if (t <= 1.75e+31) {
tmp = fma((y * x), 9.0, b) / (z * c_m);
} else {
tmp = ((t / c_m) * a) * -4.0;
}
return c_s * tmp;
}
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) tmp = 0.0 if (t <= -2.55e+209) tmp = Float64(Float64(a * -4.0) / Float64(c_m / t)); elseif (t <= 1.75e+31) tmp = Float64(fma(Float64(y * x), 9.0, b) / Float64(z * c_m)); else tmp = Float64(Float64(Float64(t / c_m) * a) * -4.0); end return Float64(c_s * tmp) end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := N[(c$95$s * If[LessEqual[t, -2.55e+209], N[(N[(a * -4.0), $MachinePrecision] / N[(c$95$m / t), $MachinePrecision]), $MachinePrecision], If[LessEqual[t, 1.75e+31], N[(N[(N[(y * x), $MachinePrecision] * 9.0 + b), $MachinePrecision] / N[(z * c$95$m), $MachinePrecision]), $MachinePrecision], N[(N[(N[(t / c$95$m), $MachinePrecision] * a), $MachinePrecision] * -4.0), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;t \leq -2.55 \cdot 10^{+209}:\\
\;\;\;\;\frac{a \cdot -4}{\frac{c\_m}{t}}\\
\mathbf{elif}\;t \leq 1.75 \cdot 10^{+31}:\\
\;\;\;\;\frac{\mathsf{fma}\left(y \cdot x, 9, b\right)}{z \cdot c\_m}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{t}{c\_m} \cdot a\right) \cdot -4\\
\end{array}
\end{array}
if t < -2.55000000000000011e209Initial program 62.9%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6458.6
Applied rewrites58.6%
Taylor expanded in x around 0
Applied rewrites72.0%
Taylor expanded in x around 0
Applied rewrites76.6%
Applied rewrites76.6%
if -2.55000000000000011e209 < t < 1.75e31Initial program 81.5%
Taylor expanded in z around 0
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f6468.3
Applied rewrites68.3%
if 1.75e31 < t Initial program 74.5%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6451.8
Applied rewrites51.8%
Taylor expanded in x around 0
Applied rewrites47.6%
Taylor expanded in x around 0
Applied rewrites62.7%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(*
c_s
(if (<= t -2.55e+209)
(/ (* a -4.0) (/ c_m t))
(if (<= t 1.75e+31)
(/ (fma (* 9.0 y) x b) (* c_m z))
(* (* (/ t c_m) a) -4.0)))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if (t <= -2.55e+209) {
tmp = (a * -4.0) / (c_m / t);
} else if (t <= 1.75e+31) {
tmp = fma((9.0 * y), x, b) / (c_m * z);
} else {
tmp = ((t / c_m) * a) * -4.0;
}
return c_s * tmp;
}
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) tmp = 0.0 if (t <= -2.55e+209) tmp = Float64(Float64(a * -4.0) / Float64(c_m / t)); elseif (t <= 1.75e+31) tmp = Float64(fma(Float64(9.0 * y), x, b) / Float64(c_m * z)); else tmp = Float64(Float64(Float64(t / c_m) * a) * -4.0); end return Float64(c_s * tmp) end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := N[(c$95$s * If[LessEqual[t, -2.55e+209], N[(N[(a * -4.0), $MachinePrecision] / N[(c$95$m / t), $MachinePrecision]), $MachinePrecision], If[LessEqual[t, 1.75e+31], N[(N[(N[(9.0 * y), $MachinePrecision] * x + b), $MachinePrecision] / N[(c$95$m * z), $MachinePrecision]), $MachinePrecision], N[(N[(N[(t / c$95$m), $MachinePrecision] * a), $MachinePrecision] * -4.0), $MachinePrecision]]]), $MachinePrecision]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;t \leq -2.55 \cdot 10^{+209}:\\
\;\;\;\;\frac{a \cdot -4}{\frac{c\_m}{t}}\\
\mathbf{elif}\;t \leq 1.75 \cdot 10^{+31}:\\
\;\;\;\;\frac{\mathsf{fma}\left(9 \cdot y, x, b\right)}{c\_m \cdot z}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{t}{c\_m} \cdot a\right) \cdot -4\\
\end{array}
\end{array}
if t < -2.55000000000000011e209Initial program 62.9%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6458.6
Applied rewrites58.6%
Taylor expanded in x around 0
Applied rewrites72.0%
Taylor expanded in x around 0
Applied rewrites76.6%
Applied rewrites76.6%
if -2.55000000000000011e209 < t < 1.75e31Initial program 81.5%
Taylor expanded in z around 0
associate-/r*N/A
lower-/.f64N/A
lower-/.f64N/A
+-commutativeN/A
*-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f6466.3
Applied rewrites66.3%
Applied rewrites68.3%
if 1.75e31 < t Initial program 74.5%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6451.8
Applied rewrites51.8%
Taylor expanded in x around 0
Applied rewrites47.6%
Taylor expanded in x around 0
Applied rewrites62.7%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(*
c_s
(if (or (<= b -7.6e-24) (not (<= b 3.15e-24)))
(/ (/ b c_m) z)
(* (/ t c_m) (* a -4.0)))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if ((b <= -7.6e-24) || !(b <= 3.15e-24)) {
tmp = (b / c_m) / z;
} else {
tmp = (t / c_m) * (a * -4.0);
}
return c_s * tmp;
}
c\_m = abs(c)
c\_s = copysign(1.0d0, c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
real(8) function code(c_s, x, y, z, t, a, b, c_m)
real(8), intent (in) :: c_s
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c_m
real(8) :: tmp
if ((b <= (-7.6d-24)) .or. (.not. (b <= 3.15d-24))) then
tmp = (b / c_m) / z
else
tmp = (t / c_m) * (a * (-4.0d0))
end if
code = c_s * tmp
end function
c\_m = Math.abs(c);
c\_s = Math.copySign(1.0, c);
assert x < y && y < z && z < t && t < a && a < b && b < c_m;
public static double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if ((b <= -7.6e-24) || !(b <= 3.15e-24)) {
tmp = (b / c_m) / z;
} else {
tmp = (t / c_m) * (a * -4.0);
}
return c_s * tmp;
}
c\_m = math.fabs(c) c\_s = math.copysign(1.0, c) [x, y, z, t, a, b, c_m] = sort([x, y, z, t, a, b, c_m]) def code(c_s, x, y, z, t, a, b, c_m): tmp = 0 if (b <= -7.6e-24) or not (b <= 3.15e-24): tmp = (b / c_m) / z else: tmp = (t / c_m) * (a * -4.0) return c_s * tmp
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) tmp = 0.0 if ((b <= -7.6e-24) || !(b <= 3.15e-24)) tmp = Float64(Float64(b / c_m) / z); else tmp = Float64(Float64(t / c_m) * Float64(a * -4.0)); end return Float64(c_s * tmp) end
c\_m = abs(c);
c\_s = sign(c) * abs(1.0);
x, y, z, t, a, b, c_m = num2cell(sort([x, y, z, t, a, b, c_m])){:}
function tmp_2 = code(c_s, x, y, z, t, a, b, c_m)
tmp = 0.0;
if ((b <= -7.6e-24) || ~((b <= 3.15e-24)))
tmp = (b / c_m) / z;
else
tmp = (t / c_m) * (a * -4.0);
end
tmp_2 = c_s * tmp;
end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := N[(c$95$s * If[Or[LessEqual[b, -7.6e-24], N[Not[LessEqual[b, 3.15e-24]], $MachinePrecision]], N[(N[(b / c$95$m), $MachinePrecision] / z), $MachinePrecision], N[(N[(t / c$95$m), $MachinePrecision] * N[(a * -4.0), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;b \leq -7.6 \cdot 10^{-24} \lor \neg \left(b \leq 3.15 \cdot 10^{-24}\right):\\
\;\;\;\;\frac{\frac{b}{c\_m}}{z}\\
\mathbf{else}:\\
\;\;\;\;\frac{t}{c\_m} \cdot \left(a \cdot -4\right)\\
\end{array}
\end{array}
if b < -7.60000000000000052e-24 or 3.1499999999999999e-24 < b Initial program 78.5%
Taylor expanded in b around inf
lower-/.f64N/A
lower-*.f6455.0
Applied rewrites55.0%
Applied rewrites57.9%
if -7.60000000000000052e-24 < b < 3.1499999999999999e-24Initial program 78.8%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6474.3
Applied rewrites74.3%
Taylor expanded in x around 0
Applied rewrites48.3%
Taylor expanded in x around 0
Applied rewrites50.6%
Applied rewrites50.7%
Final simplification54.5%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(*
c_s
(if (or (<= z -1.8e-48) (not (<= z 0.205)))
(* (/ t c_m) (* a -4.0))
(/ b (* c_m z)))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if ((z <= -1.8e-48) || !(z <= 0.205)) {
tmp = (t / c_m) * (a * -4.0);
} else {
tmp = b / (c_m * z);
}
return c_s * tmp;
}
c\_m = abs(c)
c\_s = copysign(1.0d0, c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
real(8) function code(c_s, x, y, z, t, a, b, c_m)
real(8), intent (in) :: c_s
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c_m
real(8) :: tmp
if ((z <= (-1.8d-48)) .or. (.not. (z <= 0.205d0))) then
tmp = (t / c_m) * (a * (-4.0d0))
else
tmp = b / (c_m * z)
end if
code = c_s * tmp
end function
c\_m = Math.abs(c);
c\_s = Math.copySign(1.0, c);
assert x < y && y < z && z < t && t < a && a < b && b < c_m;
public static double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if ((z <= -1.8e-48) || !(z <= 0.205)) {
tmp = (t / c_m) * (a * -4.0);
} else {
tmp = b / (c_m * z);
}
return c_s * tmp;
}
c\_m = math.fabs(c) c\_s = math.copysign(1.0, c) [x, y, z, t, a, b, c_m] = sort([x, y, z, t, a, b, c_m]) def code(c_s, x, y, z, t, a, b, c_m): tmp = 0 if (z <= -1.8e-48) or not (z <= 0.205): tmp = (t / c_m) * (a * -4.0) else: tmp = b / (c_m * z) return c_s * tmp
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) tmp = 0.0 if ((z <= -1.8e-48) || !(z <= 0.205)) tmp = Float64(Float64(t / c_m) * Float64(a * -4.0)); else tmp = Float64(b / Float64(c_m * z)); end return Float64(c_s * tmp) end
c\_m = abs(c);
c\_s = sign(c) * abs(1.0);
x, y, z, t, a, b, c_m = num2cell(sort([x, y, z, t, a, b, c_m])){:}
function tmp_2 = code(c_s, x, y, z, t, a, b, c_m)
tmp = 0.0;
if ((z <= -1.8e-48) || ~((z <= 0.205)))
tmp = (t / c_m) * (a * -4.0);
else
tmp = b / (c_m * z);
end
tmp_2 = c_s * tmp;
end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := N[(c$95$s * If[Or[LessEqual[z, -1.8e-48], N[Not[LessEqual[z, 0.205]], $MachinePrecision]], N[(N[(t / c$95$m), $MachinePrecision] * N[(a * -4.0), $MachinePrecision]), $MachinePrecision], N[(b / N[(c$95$m * z), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;z \leq -1.8 \cdot 10^{-48} \lor \neg \left(z \leq 0.205\right):\\
\;\;\;\;\frac{t}{c\_m} \cdot \left(a \cdot -4\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{b}{c\_m \cdot z}\\
\end{array}
\end{array}
if z < -1.8000000000000001e-48 or 0.204999999999999988 < z Initial program 65.7%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6458.8
Applied rewrites58.8%
Taylor expanded in x around 0
Applied rewrites52.8%
Taylor expanded in x around 0
Applied rewrites53.6%
Applied rewrites53.6%
if -1.8000000000000001e-48 < z < 0.204999999999999988Initial program 95.6%
Taylor expanded in b around inf
lower-/.f64N/A
lower-*.f6450.5
Applied rewrites50.5%
Final simplification52.3%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(*
c_s
(if (or (<= z -1.8e-48) (not (<= z 0.205)))
(* (* (/ t c_m) a) -4.0)
(/ b (* c_m z)))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if ((z <= -1.8e-48) || !(z <= 0.205)) {
tmp = ((t / c_m) * a) * -4.0;
} else {
tmp = b / (c_m * z);
}
return c_s * tmp;
}
c\_m = abs(c)
c\_s = copysign(1.0d0, c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
real(8) function code(c_s, x, y, z, t, a, b, c_m)
real(8), intent (in) :: c_s
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c_m
real(8) :: tmp
if ((z <= (-1.8d-48)) .or. (.not. (z <= 0.205d0))) then
tmp = ((t / c_m) * a) * (-4.0d0)
else
tmp = b / (c_m * z)
end if
code = c_s * tmp
end function
c\_m = Math.abs(c);
c\_s = Math.copySign(1.0, c);
assert x < y && y < z && z < t && t < a && a < b && b < c_m;
public static double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if ((z <= -1.8e-48) || !(z <= 0.205)) {
tmp = ((t / c_m) * a) * -4.0;
} else {
tmp = b / (c_m * z);
}
return c_s * tmp;
}
c\_m = math.fabs(c) c\_s = math.copysign(1.0, c) [x, y, z, t, a, b, c_m] = sort([x, y, z, t, a, b, c_m]) def code(c_s, x, y, z, t, a, b, c_m): tmp = 0 if (z <= -1.8e-48) or not (z <= 0.205): tmp = ((t / c_m) * a) * -4.0 else: tmp = b / (c_m * z) return c_s * tmp
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) tmp = 0.0 if ((z <= -1.8e-48) || !(z <= 0.205)) tmp = Float64(Float64(Float64(t / c_m) * a) * -4.0); else tmp = Float64(b / Float64(c_m * z)); end return Float64(c_s * tmp) end
c\_m = abs(c);
c\_s = sign(c) * abs(1.0);
x, y, z, t, a, b, c_m = num2cell(sort([x, y, z, t, a, b, c_m])){:}
function tmp_2 = code(c_s, x, y, z, t, a, b, c_m)
tmp = 0.0;
if ((z <= -1.8e-48) || ~((z <= 0.205)))
tmp = ((t / c_m) * a) * -4.0;
else
tmp = b / (c_m * z);
end
tmp_2 = c_s * tmp;
end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := N[(c$95$s * If[Or[LessEqual[z, -1.8e-48], N[Not[LessEqual[z, 0.205]], $MachinePrecision]], N[(N[(N[(t / c$95$m), $MachinePrecision] * a), $MachinePrecision] * -4.0), $MachinePrecision], N[(b / N[(c$95$m * z), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;z \leq -1.8 \cdot 10^{-48} \lor \neg \left(z \leq 0.205\right):\\
\;\;\;\;\left(\frac{t}{c\_m} \cdot a\right) \cdot -4\\
\mathbf{else}:\\
\;\;\;\;\frac{b}{c\_m \cdot z}\\
\end{array}
\end{array}
if z < -1.8000000000000001e-48 or 0.204999999999999988 < z Initial program 65.7%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6458.8
Applied rewrites58.8%
Taylor expanded in x around 0
Applied rewrites52.8%
Taylor expanded in x around 0
Applied rewrites53.6%
if -1.8000000000000001e-48 < z < 0.204999999999999988Initial program 95.6%
Taylor expanded in b around inf
lower-/.f64N/A
lower-*.f6450.5
Applied rewrites50.5%
Final simplification52.2%
c\_m = (fabs.f64 c)
c\_s = (copysign.f64 #s(literal 1 binary64) c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
(FPCore (c_s x y z t a b c_m)
:precision binary64
(*
c_s
(if (or (<= a -1.8e-112) (not (<= a 7.2e+37)))
(* (* t (/ a c_m)) -4.0)
(/ b (* c_m z)))))c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if ((a <= -1.8e-112) || !(a <= 7.2e+37)) {
tmp = (t * (a / c_m)) * -4.0;
} else {
tmp = b / (c_m * z);
}
return c_s * tmp;
}
c\_m = abs(c)
c\_s = copysign(1.0d0, c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
real(8) function code(c_s, x, y, z, t, a, b, c_m)
real(8), intent (in) :: c_s
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c_m
real(8) :: tmp
if ((a <= (-1.8d-112)) .or. (.not. (a <= 7.2d+37))) then
tmp = (t * (a / c_m)) * (-4.0d0)
else
tmp = b / (c_m * z)
end if
code = c_s * tmp
end function
c\_m = Math.abs(c);
c\_s = Math.copySign(1.0, c);
assert x < y && y < z && z < t && t < a && a < b && b < c_m;
public static double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
double tmp;
if ((a <= -1.8e-112) || !(a <= 7.2e+37)) {
tmp = (t * (a / c_m)) * -4.0;
} else {
tmp = b / (c_m * z);
}
return c_s * tmp;
}
c\_m = math.fabs(c) c\_s = math.copysign(1.0, c) [x, y, z, t, a, b, c_m] = sort([x, y, z, t, a, b, c_m]) def code(c_s, x, y, z, t, a, b, c_m): tmp = 0 if (a <= -1.8e-112) or not (a <= 7.2e+37): tmp = (t * (a / c_m)) * -4.0 else: tmp = b / (c_m * z) return c_s * tmp
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) tmp = 0.0 if ((a <= -1.8e-112) || !(a <= 7.2e+37)) tmp = Float64(Float64(t * Float64(a / c_m)) * -4.0); else tmp = Float64(b / Float64(c_m * z)); end return Float64(c_s * tmp) end
c\_m = abs(c);
c\_s = sign(c) * abs(1.0);
x, y, z, t, a, b, c_m = num2cell(sort([x, y, z, t, a, b, c_m])){:}
function tmp_2 = code(c_s, x, y, z, t, a, b, c_m)
tmp = 0.0;
if ((a <= -1.8e-112) || ~((a <= 7.2e+37)))
tmp = (t * (a / c_m)) * -4.0;
else
tmp = b / (c_m * z);
end
tmp_2 = c_s * tmp;
end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := N[(c$95$s * If[Or[LessEqual[a, -1.8e-112], N[Not[LessEqual[a, 7.2e+37]], $MachinePrecision]], N[(N[(t * N[(a / c$95$m), $MachinePrecision]), $MachinePrecision] * -4.0), $MachinePrecision], N[(b / N[(c$95$m * z), $MachinePrecision]), $MachinePrecision]]), $MachinePrecision]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
c\_s \cdot \begin{array}{l}
\mathbf{if}\;a \leq -1.8 \cdot 10^{-112} \lor \neg \left(a \leq 7.2 \cdot 10^{+37}\right):\\
\;\;\;\;\left(t \cdot \frac{a}{c\_m}\right) \cdot -4\\
\mathbf{else}:\\
\;\;\;\;\frac{b}{c\_m \cdot z}\\
\end{array}
\end{array}
if a < -1.8e-112 or 7.19999999999999995e37 < a Initial program 77.4%
Taylor expanded in b around 0
associate-/l/N/A
lower-/.f64N/A
lower-/.f64N/A
cancel-sign-sub-invN/A
metadata-evalN/A
+-commutativeN/A
lower-fma.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6456.5
Applied rewrites56.5%
Taylor expanded in x around 0
Applied rewrites48.5%
Taylor expanded in x around 0
Applied rewrites52.2%
Applied rewrites59.4%
if -1.8e-112 < a < 7.19999999999999995e37Initial program 80.4%
Taylor expanded in b around inf
lower-/.f64N/A
lower-*.f6441.4
Applied rewrites41.4%
Final simplification51.8%
c\_m = (fabs.f64 c) c\_s = (copysign.f64 #s(literal 1 binary64) c) NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function. (FPCore (c_s x y z t a b c_m) :precision binary64 (* c_s (/ b (* c_m z))))
c\_m = fabs(c);
c\_s = copysign(1.0, c);
assert(x < y && y < z && z < t && t < a && a < b && b < c_m);
double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
return c_s * (b / (c_m * z));
}
c\_m = abs(c)
c\_s = copysign(1.0d0, c)
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
real(8) function code(c_s, x, y, z, t, a, b, c_m)
real(8), intent (in) :: c_s
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c_m
code = c_s * (b / (c_m * z))
end function
c\_m = Math.abs(c);
c\_s = Math.copySign(1.0, c);
assert x < y && y < z && z < t && t < a && a < b && b < c_m;
public static double code(double c_s, double x, double y, double z, double t, double a, double b, double c_m) {
return c_s * (b / (c_m * z));
}
c\_m = math.fabs(c) c\_s = math.copysign(1.0, c) [x, y, z, t, a, b, c_m] = sort([x, y, z, t, a, b, c_m]) def code(c_s, x, y, z, t, a, b, c_m): return c_s * (b / (c_m * z))
c\_m = abs(c) c\_s = copysign(1.0, c) x, y, z, t, a, b, c_m = sort([x, y, z, t, a, b, c_m]) function code(c_s, x, y, z, t, a, b, c_m) return Float64(c_s * Float64(b / Float64(c_m * z))) end
c\_m = abs(c);
c\_s = sign(c) * abs(1.0);
x, y, z, t, a, b, c_m = num2cell(sort([x, y, z, t, a, b, c_m])){:}
function tmp = code(c_s, x, y, z, t, a, b, c_m)
tmp = c_s * (b / (c_m * z));
end
c\_m = N[Abs[c], $MachinePrecision]
c\_s = N[With[{TMP1 = Abs[1.0], TMP2 = Sign[c]}, TMP1 * If[TMP2 == 0, 1, TMP2]], $MachinePrecision]
NOTE: x, y, z, t, a, b, and c_m should be sorted in increasing order before calling this function.
code[c$95$s_, x_, y_, z_, t_, a_, b_, c$95$m_] := N[(c$95$s * N[(b / N[(c$95$m * z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
c\_m = \left|c\right|
\\
c\_s = \mathsf{copysign}\left(1, c\right)
\\
[x, y, z, t, a, b, c_m] = \mathsf{sort}([x, y, z, t, a, b, c_m])\\
\\
c\_s \cdot \frac{b}{c\_m \cdot z}
\end{array}
Initial program 78.6%
Taylor expanded in b around inf
lower-/.f64N/A
lower-*.f6435.2
Applied rewrites35.2%
(FPCore (x y z t a b c)
:precision binary64
(let* ((t_1 (/ b (* c z)))
(t_2 (* 4.0 (/ (* a t) c)))
(t_3 (* (* x 9.0) y))
(t_4 (+ (- t_3 (* (* (* z 4.0) t) a)) b))
(t_5 (/ t_4 (* z c)))
(t_6 (/ (+ (- t_3 (* (* z 4.0) (* t a))) b) (* z c))))
(if (< t_5 -1.100156740804105e-171)
t_6
(if (< t_5 0.0)
(/ (/ t_4 z) c)
(if (< t_5 1.1708877911747488e-53)
t_6
(if (< t_5 2.876823679546137e+130)
(- (+ (* (* 9.0 (/ y c)) (/ x z)) t_1) t_2)
(if (< t_5 1.3838515042456319e+158)
t_6
(- (+ (* 9.0 (* (/ y (* c z)) x)) t_1) t_2))))))))
double code(double x, double y, double z, double t, double a, double b, double c) {
double t_1 = b / (c * z);
double t_2 = 4.0 * ((a * t) / c);
double t_3 = (x * 9.0) * y;
double t_4 = (t_3 - (((z * 4.0) * t) * a)) + b;
double t_5 = t_4 / (z * c);
double t_6 = ((t_3 - ((z * 4.0) * (t * a))) + b) / (z * c);
double tmp;
if (t_5 < -1.100156740804105e-171) {
tmp = t_6;
} else if (t_5 < 0.0) {
tmp = (t_4 / z) / c;
} else if (t_5 < 1.1708877911747488e-53) {
tmp = t_6;
} else if (t_5 < 2.876823679546137e+130) {
tmp = (((9.0 * (y / c)) * (x / z)) + t_1) - t_2;
} else if (t_5 < 1.3838515042456319e+158) {
tmp = t_6;
} else {
tmp = ((9.0 * ((y / (c * z)) * x)) + t_1) - t_2;
}
return tmp;
}
real(8) function code(x, y, z, t, a, b, c)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8), intent (in) :: a
real(8), intent (in) :: b
real(8), intent (in) :: c
real(8) :: t_1
real(8) :: t_2
real(8) :: t_3
real(8) :: t_4
real(8) :: t_5
real(8) :: t_6
real(8) :: tmp
t_1 = b / (c * z)
t_2 = 4.0d0 * ((a * t) / c)
t_3 = (x * 9.0d0) * y
t_4 = (t_3 - (((z * 4.0d0) * t) * a)) + b
t_5 = t_4 / (z * c)
t_6 = ((t_3 - ((z * 4.0d0) * (t * a))) + b) / (z * c)
if (t_5 < (-1.100156740804105d-171)) then
tmp = t_6
else if (t_5 < 0.0d0) then
tmp = (t_4 / z) / c
else if (t_5 < 1.1708877911747488d-53) then
tmp = t_6
else if (t_5 < 2.876823679546137d+130) then
tmp = (((9.0d0 * (y / c)) * (x / z)) + t_1) - t_2
else if (t_5 < 1.3838515042456319d+158) then
tmp = t_6
else
tmp = ((9.0d0 * ((y / (c * z)) * x)) + t_1) - t_2
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a, double b, double c) {
double t_1 = b / (c * z);
double t_2 = 4.0 * ((a * t) / c);
double t_3 = (x * 9.0) * y;
double t_4 = (t_3 - (((z * 4.0) * t) * a)) + b;
double t_5 = t_4 / (z * c);
double t_6 = ((t_3 - ((z * 4.0) * (t * a))) + b) / (z * c);
double tmp;
if (t_5 < -1.100156740804105e-171) {
tmp = t_6;
} else if (t_5 < 0.0) {
tmp = (t_4 / z) / c;
} else if (t_5 < 1.1708877911747488e-53) {
tmp = t_6;
} else if (t_5 < 2.876823679546137e+130) {
tmp = (((9.0 * (y / c)) * (x / z)) + t_1) - t_2;
} else if (t_5 < 1.3838515042456319e+158) {
tmp = t_6;
} else {
tmp = ((9.0 * ((y / (c * z)) * x)) + t_1) - t_2;
}
return tmp;
}
def code(x, y, z, t, a, b, c): t_1 = b / (c * z) t_2 = 4.0 * ((a * t) / c) t_3 = (x * 9.0) * y t_4 = (t_3 - (((z * 4.0) * t) * a)) + b t_5 = t_4 / (z * c) t_6 = ((t_3 - ((z * 4.0) * (t * a))) + b) / (z * c) tmp = 0 if t_5 < -1.100156740804105e-171: tmp = t_6 elif t_5 < 0.0: tmp = (t_4 / z) / c elif t_5 < 1.1708877911747488e-53: tmp = t_6 elif t_5 < 2.876823679546137e+130: tmp = (((9.0 * (y / c)) * (x / z)) + t_1) - t_2 elif t_5 < 1.3838515042456319e+158: tmp = t_6 else: tmp = ((9.0 * ((y / (c * z)) * x)) + t_1) - t_2 return tmp
function code(x, y, z, t, a, b, c) t_1 = Float64(b / Float64(c * z)) t_2 = Float64(4.0 * Float64(Float64(a * t) / c)) t_3 = Float64(Float64(x * 9.0) * y) t_4 = Float64(Float64(t_3 - Float64(Float64(Float64(z * 4.0) * t) * a)) + b) t_5 = Float64(t_4 / Float64(z * c)) t_6 = Float64(Float64(Float64(t_3 - Float64(Float64(z * 4.0) * Float64(t * a))) + b) / Float64(z * c)) tmp = 0.0 if (t_5 < -1.100156740804105e-171) tmp = t_6; elseif (t_5 < 0.0) tmp = Float64(Float64(t_4 / z) / c); elseif (t_5 < 1.1708877911747488e-53) tmp = t_6; elseif (t_5 < 2.876823679546137e+130) tmp = Float64(Float64(Float64(Float64(9.0 * Float64(y / c)) * Float64(x / z)) + t_1) - t_2); elseif (t_5 < 1.3838515042456319e+158) tmp = t_6; else tmp = Float64(Float64(Float64(9.0 * Float64(Float64(y / Float64(c * z)) * x)) + t_1) - t_2); end return tmp end
function tmp_2 = code(x, y, z, t, a, b, c) t_1 = b / (c * z); t_2 = 4.0 * ((a * t) / c); t_3 = (x * 9.0) * y; t_4 = (t_3 - (((z * 4.0) * t) * a)) + b; t_5 = t_4 / (z * c); t_6 = ((t_3 - ((z * 4.0) * (t * a))) + b) / (z * c); tmp = 0.0; if (t_5 < -1.100156740804105e-171) tmp = t_6; elseif (t_5 < 0.0) tmp = (t_4 / z) / c; elseif (t_5 < 1.1708877911747488e-53) tmp = t_6; elseif (t_5 < 2.876823679546137e+130) tmp = (((9.0 * (y / c)) * (x / z)) + t_1) - t_2; elseif (t_5 < 1.3838515042456319e+158) tmp = t_6; else tmp = ((9.0 * ((y / (c * z)) * x)) + t_1) - t_2; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_, b_, c_] := Block[{t$95$1 = N[(b / N[(c * z), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(4.0 * N[(N[(a * t), $MachinePrecision] / c), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$3 = N[(N[(x * 9.0), $MachinePrecision] * y), $MachinePrecision]}, Block[{t$95$4 = N[(N[(t$95$3 - N[(N[(N[(z * 4.0), $MachinePrecision] * t), $MachinePrecision] * a), $MachinePrecision]), $MachinePrecision] + b), $MachinePrecision]}, Block[{t$95$5 = N[(t$95$4 / N[(z * c), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$6 = N[(N[(N[(t$95$3 - N[(N[(z * 4.0), $MachinePrecision] * N[(t * a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + b), $MachinePrecision] / N[(z * c), $MachinePrecision]), $MachinePrecision]}, If[Less[t$95$5, -1.100156740804105e-171], t$95$6, If[Less[t$95$5, 0.0], N[(N[(t$95$4 / z), $MachinePrecision] / c), $MachinePrecision], If[Less[t$95$5, 1.1708877911747488e-53], t$95$6, If[Less[t$95$5, 2.876823679546137e+130], N[(N[(N[(N[(9.0 * N[(y / c), $MachinePrecision]), $MachinePrecision] * N[(x / z), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision] - t$95$2), $MachinePrecision], If[Less[t$95$5, 1.3838515042456319e+158], t$95$6, N[(N[(N[(9.0 * N[(N[(y / N[(c * z), $MachinePrecision]), $MachinePrecision] * x), $MachinePrecision]), $MachinePrecision] + t$95$1), $MachinePrecision] - t$95$2), $MachinePrecision]]]]]]]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{b}{c \cdot z}\\
t_2 := 4 \cdot \frac{a \cdot t}{c}\\
t_3 := \left(x \cdot 9\right) \cdot y\\
t_4 := \left(t\_3 - \left(\left(z \cdot 4\right) \cdot t\right) \cdot a\right) + b\\
t_5 := \frac{t\_4}{z \cdot c}\\
t_6 := \frac{\left(t\_3 - \left(z \cdot 4\right) \cdot \left(t \cdot a\right)\right) + b}{z \cdot c}\\
\mathbf{if}\;t\_5 < -1.100156740804105 \cdot 10^{-171}:\\
\;\;\;\;t\_6\\
\mathbf{elif}\;t\_5 < 0:\\
\;\;\;\;\frac{\frac{t\_4}{z}}{c}\\
\mathbf{elif}\;t\_5 < 1.1708877911747488 \cdot 10^{-53}:\\
\;\;\;\;t\_6\\
\mathbf{elif}\;t\_5 < 2.876823679546137 \cdot 10^{+130}:\\
\;\;\;\;\left(\left(9 \cdot \frac{y}{c}\right) \cdot \frac{x}{z} + t\_1\right) - t\_2\\
\mathbf{elif}\;t\_5 < 1.3838515042456319 \cdot 10^{+158}:\\
\;\;\;\;t\_6\\
\mathbf{else}:\\
\;\;\;\;\left(9 \cdot \left(\frac{y}{c \cdot z} \cdot x\right) + t\_1\right) - t\_2\\
\end{array}
\end{array}
herbie shell --seed 2024318
(FPCore (x y z t a b c)
:name "Diagrams.Solve.Polynomial:cubForm from diagrams-solve-0.1, J"
:precision binary64
:alt
(! :herbie-platform default (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) -220031348160821/200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 0) (/ (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) z) c) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 365902434742109/31250000000000000000000000000000000000000000000000000000000000000000) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 28768236795461370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) (- (+ (* (* 9 (/ y c)) (/ x z)) (/ b (* c z))) (* 4 (/ (* a t) c))) (if (< (/ (+ (- (* (* x 9) y) (* (* (* z 4) t) a)) b) (* z c)) 138385150424563190000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) (/ (+ (- (* (* x 9) y) (* (* z 4) (* t a))) b) (* z c)) (- (+ (* 9 (* (/ y (* c z)) x)) (/ b (* c z))) (* 4 (/ (* a t) c)))))))))
(/ (+ (- (* (* x 9.0) y) (* (* (* z 4.0) t) a)) b) (* z c)))