
(FPCore (x y z t a) :precision binary64 (+ x (/ (* (- y z) (- t x)) (- a z))))
double code(double x, double y, double z, double t, double a) {
return x + (((y - z) * (t - x)) / (a - z));
}
real(8) function code(x, y, z, t, a)
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
code = x + (((y - z) * (t - x)) / (a - z))
end function
public static double code(double x, double y, double z, double t, double a) {
return x + (((y - z) * (t - x)) / (a - z));
}
def code(x, y, z, t, a): return x + (((y - z) * (t - x)) / (a - z))
function code(x, y, z, t, a) return Float64(x + Float64(Float64(Float64(y - z) * Float64(t - x)) / Float64(a - z))) end
function tmp = code(x, y, z, t, a) tmp = x + (((y - z) * (t - x)) / (a - z)); end
code[x_, y_, z_, t_, a_] := N[(x + N[(N[(N[(y - z), $MachinePrecision] * N[(t - x), $MachinePrecision]), $MachinePrecision] / N[(a - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 18 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x y z t a) :precision binary64 (+ x (/ (* (- y z) (- t x)) (- a z))))
double code(double x, double y, double z, double t, double a) {
return x + (((y - z) * (t - x)) / (a - z));
}
real(8) function code(x, y, z, t, a)
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
code = x + (((y - z) * (t - x)) / (a - z))
end function
public static double code(double x, double y, double z, double t, double a) {
return x + (((y - z) * (t - x)) / (a - z));
}
def code(x, y, z, t, a): return x + (((y - z) * (t - x)) / (a - z))
function code(x, y, z, t, a) return Float64(x + Float64(Float64(Float64(y - z) * Float64(t - x)) / Float64(a - z))) end
function tmp = code(x, y, z, t, a) tmp = x + (((y - z) * (t - x)) / (a - z)); end
code[x_, y_, z_, t_, a_] := N[(x + N[(N[(N[(y - z), $MachinePrecision] * N[(t - x), $MachinePrecision]), $MachinePrecision] / N[(a - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x + \frac{\left(y - z\right) \cdot \left(t - x\right)}{a - z}
\end{array}
(FPCore (x y z t a) :precision binary64 (if (<= z 2.1e+81) (fma (- t x) (/ (- y z) (- a z)) x) (fma (- t x) (* (pow z -1.0) (- a y)) t)))
double code(double x, double y, double z, double t, double a) {
double tmp;
if (z <= 2.1e+81) {
tmp = fma((t - x), ((y - z) / (a - z)), x);
} else {
tmp = fma((t - x), (pow(z, -1.0) * (a - y)), t);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if (z <= 2.1e+81) tmp = fma(Float64(t - x), Float64(Float64(y - z) / Float64(a - z)), x); else tmp = fma(Float64(t - x), Float64((z ^ -1.0) * Float64(a - y)), t); end return tmp end
code[x_, y_, z_, t_, a_] := If[LessEqual[z, 2.1e+81], N[(N[(t - x), $MachinePrecision] * N[(N[(y - z), $MachinePrecision] / N[(a - z), $MachinePrecision]), $MachinePrecision] + x), $MachinePrecision], N[(N[(t - x), $MachinePrecision] * N[(N[Power[z, -1.0], $MachinePrecision] * N[(a - y), $MachinePrecision]), $MachinePrecision] + t), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq 2.1 \cdot 10^{+81}:\\
\;\;\;\;\mathsf{fma}\left(t - x, \frac{y - z}{a - z}, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t - x, {z}^{-1} \cdot \left(a - y\right), t\right)\\
\end{array}
\end{array}
if z < 2.0999999999999999e81Initial program 79.9%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f6489.9
Applied rewrites89.9%
if 2.0999999999999999e81 < z Initial program 27.3%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites87.4%
Applied rewrites91.4%
Final simplification90.1%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (fma (/ (- t x) z) a t)))
(if (<= z -1.15e+149)
t_1
(if (<= z -4.2e-8)
(* (- y z) (/ t (- a z)))
(if (<= z 5.4e+17)
(fma (- t x) (/ y a) x)
(if (<= z 7.2e+125) (/ (* (- y z) t) (- a z)) t_1))))))
double code(double x, double y, double z, double t, double a) {
double t_1 = fma(((t - x) / z), a, t);
double tmp;
if (z <= -1.15e+149) {
tmp = t_1;
} else if (z <= -4.2e-8) {
tmp = (y - z) * (t / (a - z));
} else if (z <= 5.4e+17) {
tmp = fma((t - x), (y / a), x);
} else if (z <= 7.2e+125) {
tmp = ((y - z) * t) / (a - z);
} else {
tmp = t_1;
}
return tmp;
}
function code(x, y, z, t, a) t_1 = fma(Float64(Float64(t - x) / z), a, t) tmp = 0.0 if (z <= -1.15e+149) tmp = t_1; elseif (z <= -4.2e-8) tmp = Float64(Float64(y - z) * Float64(t / Float64(a - z))); elseif (z <= 5.4e+17) tmp = fma(Float64(t - x), Float64(y / a), x); elseif (z <= 7.2e+125) tmp = Float64(Float64(Float64(y - z) * t) / Float64(a - z)); else tmp = t_1; end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(N[(t - x), $MachinePrecision] / z), $MachinePrecision] * a + t), $MachinePrecision]}, If[LessEqual[z, -1.15e+149], t$95$1, If[LessEqual[z, -4.2e-8], N[(N[(y - z), $MachinePrecision] * N[(t / N[(a - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[z, 5.4e+17], N[(N[(t - x), $MachinePrecision] * N[(y / a), $MachinePrecision] + x), $MachinePrecision], If[LessEqual[z, 7.2e+125], N[(N[(N[(y - z), $MachinePrecision] * t), $MachinePrecision] / N[(a - z), $MachinePrecision]), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \mathsf{fma}\left(\frac{t - x}{z}, a, t\right)\\
\mathbf{if}\;z \leq -1.15 \cdot 10^{+149}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;z \leq -4.2 \cdot 10^{-8}:\\
\;\;\;\;\left(y - z\right) \cdot \frac{t}{a - z}\\
\mathbf{elif}\;z \leq 5.4 \cdot 10^{+17}:\\
\;\;\;\;\mathsf{fma}\left(t - x, \frac{y}{a}, x\right)\\
\mathbf{elif}\;z \leq 7.2 \cdot 10^{+125}:\\
\;\;\;\;\frac{\left(y - z\right) \cdot t}{a - z}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if z < -1.1499999999999999e149 or 7.2000000000000007e125 < z Initial program 29.9%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites85.0%
Taylor expanded in y around 0
Applied rewrites73.4%
if -1.1499999999999999e149 < z < -4.19999999999999989e-8Initial program 60.0%
Taylor expanded in x around 0
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6463.5
Applied rewrites63.5%
if -4.19999999999999989e-8 < z < 5.4e17Initial program 92.4%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f6495.4
Applied rewrites95.4%
Taylor expanded in y around 0
mul-1-negN/A
lower-neg.f6441.2
Applied rewrites41.2%
Taylor expanded in a around inf
lower-/.f64N/A
lower--.f6483.7
Applied rewrites83.7%
Taylor expanded in y around inf
Applied rewrites79.9%
if 5.4e17 < z < 7.2000000000000007e125Initial program 73.2%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f6486.8
Applied rewrites86.8%
Taylor expanded in x around 0
lower-/.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower--.f6461.7
Applied rewrites61.7%
Final simplification74.8%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (* (- y z) (/ t (- a z)))) (t_2 (fma (/ (- t x) z) a t)))
(if (<= z -1.15e+149)
t_2
(if (<= z -4.2e-8)
t_1
(if (<= z 5.4e+17)
(fma (- t x) (/ y a) x)
(if (<= z 9.6e+125) t_1 t_2))))))
double code(double x, double y, double z, double t, double a) {
double t_1 = (y - z) * (t / (a - z));
double t_2 = fma(((t - x) / z), a, t);
double tmp;
if (z <= -1.15e+149) {
tmp = t_2;
} else if (z <= -4.2e-8) {
tmp = t_1;
} else if (z <= 5.4e+17) {
tmp = fma((t - x), (y / a), x);
} else if (z <= 9.6e+125) {
tmp = t_1;
} else {
tmp = t_2;
}
return tmp;
}
function code(x, y, z, t, a) t_1 = Float64(Float64(y - z) * Float64(t / Float64(a - z))) t_2 = fma(Float64(Float64(t - x) / z), a, t) tmp = 0.0 if (z <= -1.15e+149) tmp = t_2; elseif (z <= -4.2e-8) tmp = t_1; elseif (z <= 5.4e+17) tmp = fma(Float64(t - x), Float64(y / a), x); elseif (z <= 9.6e+125) tmp = t_1; else tmp = t_2; end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(y - z), $MachinePrecision] * N[(t / N[(a - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(N[(t - x), $MachinePrecision] / z), $MachinePrecision] * a + t), $MachinePrecision]}, If[LessEqual[z, -1.15e+149], t$95$2, If[LessEqual[z, -4.2e-8], t$95$1, If[LessEqual[z, 5.4e+17], N[(N[(t - x), $MachinePrecision] * N[(y / a), $MachinePrecision] + x), $MachinePrecision], If[LessEqual[z, 9.6e+125], t$95$1, t$95$2]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \left(y - z\right) \cdot \frac{t}{a - z}\\
t_2 := \mathsf{fma}\left(\frac{t - x}{z}, a, t\right)\\
\mathbf{if}\;z \leq -1.15 \cdot 10^{+149}:\\
\;\;\;\;t\_2\\
\mathbf{elif}\;z \leq -4.2 \cdot 10^{-8}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;z \leq 5.4 \cdot 10^{+17}:\\
\;\;\;\;\mathsf{fma}\left(t - x, \frac{y}{a}, x\right)\\
\mathbf{elif}\;z \leq 9.6 \cdot 10^{+125}:\\
\;\;\;\;t\_1\\
\mathbf{else}:\\
\;\;\;\;t\_2\\
\end{array}
\end{array}
if z < -1.1499999999999999e149 or 9.5999999999999999e125 < z Initial program 29.9%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites85.0%
Taylor expanded in y around 0
Applied rewrites73.4%
if -1.1499999999999999e149 < z < -4.19999999999999989e-8 or 5.4e17 < z < 9.5999999999999999e125Initial program 65.2%
Taylor expanded in x around 0
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6462.6
Applied rewrites62.6%
if -4.19999999999999989e-8 < z < 5.4e17Initial program 92.4%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f6495.4
Applied rewrites95.4%
Taylor expanded in y around 0
mul-1-negN/A
lower-neg.f6441.2
Applied rewrites41.2%
Taylor expanded in a around inf
lower-/.f64N/A
lower--.f6483.7
Applied rewrites83.7%
Taylor expanded in y around inf
Applied rewrites79.9%
Final simplification74.8%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (- t (* (/ (- t x) z) (- y a)))))
(if (<= z -4.6e+41)
t_1
(if (<= z 2.4e-144)
(fma (- t x) (/ (- y z) a) x)
(if (<= z 3.2e+79) (+ x (/ (* (- y z) t) (- a z))) t_1)))))
double code(double x, double y, double z, double t, double a) {
double t_1 = t - (((t - x) / z) * (y - a));
double tmp;
if (z <= -4.6e+41) {
tmp = t_1;
} else if (z <= 2.4e-144) {
tmp = fma((t - x), ((y - z) / a), x);
} else if (z <= 3.2e+79) {
tmp = x + (((y - z) * t) / (a - z));
} else {
tmp = t_1;
}
return tmp;
}
function code(x, y, z, t, a) t_1 = Float64(t - Float64(Float64(Float64(t - x) / z) * Float64(y - a))) tmp = 0.0 if (z <= -4.6e+41) tmp = t_1; elseif (z <= 2.4e-144) tmp = fma(Float64(t - x), Float64(Float64(y - z) / a), x); elseif (z <= 3.2e+79) tmp = Float64(x + Float64(Float64(Float64(y - z) * t) / Float64(a - z))); else tmp = t_1; end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(t - N[(N[(N[(t - x), $MachinePrecision] / z), $MachinePrecision] * N[(y - a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[z, -4.6e+41], t$95$1, If[LessEqual[z, 2.4e-144], N[(N[(t - x), $MachinePrecision] * N[(N[(y - z), $MachinePrecision] / a), $MachinePrecision] + x), $MachinePrecision], If[LessEqual[z, 3.2e+79], N[(x + N[(N[(N[(y - z), $MachinePrecision] * t), $MachinePrecision] / N[(a - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := t - \frac{t - x}{z} \cdot \left(y - a\right)\\
\mathbf{if}\;z \leq -4.6 \cdot 10^{+41}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;z \leq 2.4 \cdot 10^{-144}:\\
\;\;\;\;\mathsf{fma}\left(t - x, \frac{y - z}{a}, x\right)\\
\mathbf{elif}\;z \leq 3.2 \cdot 10^{+79}:\\
\;\;\;\;x + \frac{\left(y - z\right) \cdot t}{a - z}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if z < -4.5999999999999997e41 or 3.20000000000000003e79 < z Initial program 38.0%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f6467.9
Applied rewrites67.9%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
mul-1-negN/A
unsub-negN/A
lower--.f64N/A
div-subN/A
associate-/l*N/A
associate-/l*N/A
distribute-rgt-out--N/A
lower-*.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower--.f6481.4
Applied rewrites81.4%
if -4.5999999999999997e41 < z < 2.39999999999999994e-144Initial program 91.5%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f6495.6
Applied rewrites95.6%
Taylor expanded in a around inf
+-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6486.6
Applied rewrites86.6%
if 2.39999999999999994e-144 < z < 3.20000000000000003e79Initial program 89.4%
Taylor expanded in x around 0
*-commutativeN/A
lower-*.f64N/A
lower--.f6479.1
Applied rewrites79.1%
(FPCore (x y z t a) :precision binary64 (if (or (<= z -4.6e+41) (not (<= z 1.8e+25))) (- t (* (/ (- t x) z) (- y a))) (fma (- t x) (/ (- y z) a) x)))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((z <= -4.6e+41) || !(z <= 1.8e+25)) {
tmp = t - (((t - x) / z) * (y - a));
} else {
tmp = fma((t - x), ((y - z) / a), x);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if ((z <= -4.6e+41) || !(z <= 1.8e+25)) tmp = Float64(t - Float64(Float64(Float64(t - x) / z) * Float64(y - a))); else tmp = fma(Float64(t - x), Float64(Float64(y - z) / a), x); end return tmp end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[z, -4.6e+41], N[Not[LessEqual[z, 1.8e+25]], $MachinePrecision]], N[(t - N[(N[(N[(t - x), $MachinePrecision] / z), $MachinePrecision] * N[(y - a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(t - x), $MachinePrecision] * N[(N[(y - z), $MachinePrecision] / a), $MachinePrecision] + x), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -4.6 \cdot 10^{+41} \lor \neg \left(z \leq 1.8 \cdot 10^{+25}\right):\\
\;\;\;\;t - \frac{t - x}{z} \cdot \left(y - a\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(t - x, \frac{y - z}{a}, x\right)\\
\end{array}
\end{array}
if z < -4.5999999999999997e41 or 1.80000000000000008e25 < z Initial program 42.2%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f6470.5
Applied rewrites70.5%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
mul-1-negN/A
unsub-negN/A
lower--.f64N/A
div-subN/A
associate-/l*N/A
associate-/l*N/A
distribute-rgt-out--N/A
lower-*.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower--.f6478.9
Applied rewrites78.9%
if -4.5999999999999997e41 < z < 1.80000000000000008e25Initial program 92.1%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f6495.6
Applied rewrites95.6%
Taylor expanded in a around inf
+-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6482.9
Applied rewrites82.9%
Final simplification81.2%
(FPCore (x y z t a)
:precision binary64
(if (<= z -2.5e+66)
(fma (/ (- a y) z) t t)
(if (<= z 2.35e+120)
(fma (- t x) (/ (- y z) a) x)
(fma (/ (- t x) z) a t))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if (z <= -2.5e+66) {
tmp = fma(((a - y) / z), t, t);
} else if (z <= 2.35e+120) {
tmp = fma((t - x), ((y - z) / a), x);
} else {
tmp = fma(((t - x) / z), a, t);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if (z <= -2.5e+66) tmp = fma(Float64(Float64(a - y) / z), t, t); elseif (z <= 2.35e+120) tmp = fma(Float64(t - x), Float64(Float64(y - z) / a), x); else tmp = fma(Float64(Float64(t - x) / z), a, t); end return tmp end
code[x_, y_, z_, t_, a_] := If[LessEqual[z, -2.5e+66], N[(N[(N[(a - y), $MachinePrecision] / z), $MachinePrecision] * t + t), $MachinePrecision], If[LessEqual[z, 2.35e+120], N[(N[(t - x), $MachinePrecision] * N[(N[(y - z), $MachinePrecision] / a), $MachinePrecision] + x), $MachinePrecision], N[(N[(N[(t - x), $MachinePrecision] / z), $MachinePrecision] * a + t), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -2.5 \cdot 10^{+66}:\\
\;\;\;\;\mathsf{fma}\left(\frac{a - y}{z}, t, t\right)\\
\mathbf{elif}\;z \leq 2.35 \cdot 10^{+120}:\\
\;\;\;\;\mathsf{fma}\left(t - x, \frac{y - z}{a}, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t - x}{z}, a, t\right)\\
\end{array}
\end{array}
if z < -2.49999999999999996e66Initial program 48.1%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites77.6%
Taylor expanded in x around 0
Applied rewrites65.1%
if -2.49999999999999996e66 < z < 2.34999999999999997e120Initial program 88.6%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f6493.9
Applied rewrites93.9%
Taylor expanded in a around inf
+-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6478.3
Applied rewrites78.3%
if 2.34999999999999997e120 < z Initial program 22.5%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites87.2%
Taylor expanded in y around 0
Applied rewrites70.4%
Final simplification74.6%
(FPCore (x y z t a) :precision binary64 (if (<= z -9e+65) (fma (/ (- a y) z) t t) (if (<= z 4.9e+119) (fma (- y z) (/ (- t x) a) x) (fma (/ (- t x) z) a t))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if (z <= -9e+65) {
tmp = fma(((a - y) / z), t, t);
} else if (z <= 4.9e+119) {
tmp = fma((y - z), ((t - x) / a), x);
} else {
tmp = fma(((t - x) / z), a, t);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if (z <= -9e+65) tmp = fma(Float64(Float64(a - y) / z), t, t); elseif (z <= 4.9e+119) tmp = fma(Float64(y - z), Float64(Float64(t - x) / a), x); else tmp = fma(Float64(Float64(t - x) / z), a, t); end return tmp end
code[x_, y_, z_, t_, a_] := If[LessEqual[z, -9e+65], N[(N[(N[(a - y), $MachinePrecision] / z), $MachinePrecision] * t + t), $MachinePrecision], If[LessEqual[z, 4.9e+119], N[(N[(y - z), $MachinePrecision] * N[(N[(t - x), $MachinePrecision] / a), $MachinePrecision] + x), $MachinePrecision], N[(N[(N[(t - x), $MachinePrecision] / z), $MachinePrecision] * a + t), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -9 \cdot 10^{+65}:\\
\;\;\;\;\mathsf{fma}\left(\frac{a - y}{z}, t, t\right)\\
\mathbf{elif}\;z \leq 4.9 \cdot 10^{+119}:\\
\;\;\;\;\mathsf{fma}\left(y - z, \frac{t - x}{a}, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t - x}{z}, a, t\right)\\
\end{array}
\end{array}
if z < -9e65Initial program 48.1%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites77.6%
Taylor expanded in x around 0
Applied rewrites65.1%
if -9e65 < z < 4.89999999999999996e119Initial program 88.6%
Taylor expanded in a around inf
+-commutativeN/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6475.7
Applied rewrites75.7%
if 4.89999999999999996e119 < z Initial program 22.5%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites87.2%
Taylor expanded in y around 0
Applied rewrites70.4%
Final simplification72.9%
(FPCore (x y z t a) :precision binary64 (if (or (<= z -1.5e+43) (not (<= z 3.5e+28))) (fma (/ (- a y) z) t t) (+ x (* t (/ y a)))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((z <= -1.5e+43) || !(z <= 3.5e+28)) {
tmp = fma(((a - y) / z), t, t);
} else {
tmp = x + (t * (y / a));
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if ((z <= -1.5e+43) || !(z <= 3.5e+28)) tmp = fma(Float64(Float64(a - y) / z), t, t); else tmp = Float64(x + Float64(t * Float64(y / a))); end return tmp end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[z, -1.5e+43], N[Not[LessEqual[z, 3.5e+28]], $MachinePrecision]], N[(N[(N[(a - y), $MachinePrecision] / z), $MachinePrecision] * t + t), $MachinePrecision], N[(x + N[(t * N[(y / a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -1.5 \cdot 10^{+43} \lor \neg \left(z \leq 3.5 \cdot 10^{+28}\right):\\
\;\;\;\;\mathsf{fma}\left(\frac{a - y}{z}, t, t\right)\\
\mathbf{else}:\\
\;\;\;\;x + t \cdot \frac{y}{a}\\
\end{array}
\end{array}
if z < -1.50000000000000008e43 or 3.5e28 < z Initial program 42.2%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites78.9%
Taylor expanded in x around 0
Applied rewrites58.6%
if -1.50000000000000008e43 < z < 3.5e28Initial program 92.1%
Taylor expanded in a around inf
associate-/l*N/A
*-commutativeN/A
lower-*.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower--.f6482.9
Applied rewrites82.9%
Taylor expanded in x around 0
Applied rewrites66.8%
Taylor expanded in y around inf
Applied rewrites64.5%
Final simplification62.0%
(FPCore (x y z t a) :precision binary64 (if (<= z -1.5e+43) (fma (/ (- a y) z) t t) (if (<= z 1.78e+112) (fma (- t x) (/ y a) x) (fma (/ (- t x) z) a t))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if (z <= -1.5e+43) {
tmp = fma(((a - y) / z), t, t);
} else if (z <= 1.78e+112) {
tmp = fma((t - x), (y / a), x);
} else {
tmp = fma(((t - x) / z), a, t);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if (z <= -1.5e+43) tmp = fma(Float64(Float64(a - y) / z), t, t); elseif (z <= 1.78e+112) tmp = fma(Float64(t - x), Float64(y / a), x); else tmp = fma(Float64(Float64(t - x) / z), a, t); end return tmp end
code[x_, y_, z_, t_, a_] := If[LessEqual[z, -1.5e+43], N[(N[(N[(a - y), $MachinePrecision] / z), $MachinePrecision] * t + t), $MachinePrecision], If[LessEqual[z, 1.78e+112], N[(N[(t - x), $MachinePrecision] * N[(y / a), $MachinePrecision] + x), $MachinePrecision], N[(N[(N[(t - x), $MachinePrecision] / z), $MachinePrecision] * a + t), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -1.5 \cdot 10^{+43}:\\
\;\;\;\;\mathsf{fma}\left(\frac{a - y}{z}, t, t\right)\\
\mathbf{elif}\;z \leq 1.78 \cdot 10^{+112}:\\
\;\;\;\;\mathsf{fma}\left(t - x, \frac{y}{a}, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t - x}{z}, a, t\right)\\
\end{array}
\end{array}
if z < -1.50000000000000008e43Initial program 46.8%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites76.4%
Taylor expanded in x around 0
Applied rewrites60.2%
if -1.50000000000000008e43 < z < 1.78e112Initial program 90.6%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f6494.9
Applied rewrites94.9%
Taylor expanded in y around 0
mul-1-negN/A
lower-neg.f6443.3
Applied rewrites43.3%
Taylor expanded in a around inf
lower-/.f64N/A
lower--.f6479.3
Applied rewrites79.3%
Taylor expanded in y around inf
Applied rewrites72.8%
if 1.78e112 < z Initial program 22.5%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites87.2%
Taylor expanded in y around 0
Applied rewrites70.4%
Final simplification69.8%
(FPCore (x y z t a) :precision binary64 (if (<= z -1.5e+43) (fma (/ (- a y) z) t t) (if (<= z 1.78e+112) (fma (/ (- t x) a) y x) (fma (/ (- t x) z) a t))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if (z <= -1.5e+43) {
tmp = fma(((a - y) / z), t, t);
} else if (z <= 1.78e+112) {
tmp = fma(((t - x) / a), y, x);
} else {
tmp = fma(((t - x) / z), a, t);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if (z <= -1.5e+43) tmp = fma(Float64(Float64(a - y) / z), t, t); elseif (z <= 1.78e+112) tmp = fma(Float64(Float64(t - x) / a), y, x); else tmp = fma(Float64(Float64(t - x) / z), a, t); end return tmp end
code[x_, y_, z_, t_, a_] := If[LessEqual[z, -1.5e+43], N[(N[(N[(a - y), $MachinePrecision] / z), $MachinePrecision] * t + t), $MachinePrecision], If[LessEqual[z, 1.78e+112], N[(N[(N[(t - x), $MachinePrecision] / a), $MachinePrecision] * y + x), $MachinePrecision], N[(N[(N[(t - x), $MachinePrecision] / z), $MachinePrecision] * a + t), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -1.5 \cdot 10^{+43}:\\
\;\;\;\;\mathsf{fma}\left(\frac{a - y}{z}, t, t\right)\\
\mathbf{elif}\;z \leq 1.78 \cdot 10^{+112}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t - x}{a}, y, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t - x}{z}, a, t\right)\\
\end{array}
\end{array}
if z < -1.50000000000000008e43Initial program 46.8%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites76.4%
Taylor expanded in x around 0
Applied rewrites60.2%
if -1.50000000000000008e43 < z < 1.78e112Initial program 90.6%
Taylor expanded in z around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6470.2
Applied rewrites70.2%
if 1.78e112 < z Initial program 22.5%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites87.2%
Taylor expanded in y around 0
Applied rewrites70.4%
Final simplification68.2%
(FPCore (x y z t a) :precision binary64 (if (<= z -1.5e+43) (fma (/ (- a y) z) t t) (if (<= z 6.6e+28) (+ x (* t (/ y a))) (fma (/ (- t x) z) a t))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if (z <= -1.5e+43) {
tmp = fma(((a - y) / z), t, t);
} else if (z <= 6.6e+28) {
tmp = x + (t * (y / a));
} else {
tmp = fma(((t - x) / z), a, t);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if (z <= -1.5e+43) tmp = fma(Float64(Float64(a - y) / z), t, t); elseif (z <= 6.6e+28) tmp = Float64(x + Float64(t * Float64(y / a))); else tmp = fma(Float64(Float64(t - x) / z), a, t); end return tmp end
code[x_, y_, z_, t_, a_] := If[LessEqual[z, -1.5e+43], N[(N[(N[(a - y), $MachinePrecision] / z), $MachinePrecision] * t + t), $MachinePrecision], If[LessEqual[z, 6.6e+28], N[(x + N[(t * N[(y / a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(t - x), $MachinePrecision] / z), $MachinePrecision] * a + t), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -1.5 \cdot 10^{+43}:\\
\;\;\;\;\mathsf{fma}\left(\frac{a - y}{z}, t, t\right)\\
\mathbf{elif}\;z \leq 6.6 \cdot 10^{+28}:\\
\;\;\;\;x + t \cdot \frac{y}{a}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t - x}{z}, a, t\right)\\
\end{array}
\end{array}
if z < -1.50000000000000008e43Initial program 46.8%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites76.4%
Taylor expanded in x around 0
Applied rewrites60.2%
if -1.50000000000000008e43 < z < 6.6e28Initial program 92.1%
Taylor expanded in a around inf
associate-/l*N/A
*-commutativeN/A
lower-*.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower--.f6482.9
Applied rewrites82.9%
Taylor expanded in x around 0
Applied rewrites66.8%
Taylor expanded in y around inf
Applied rewrites64.5%
if 6.6e28 < z Initial program 37.8%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
div-subN/A
distribute-lft-out--N/A
associate-/l*N/A
associate-*r*N/A
mul-1-negN/A
associate-/l*N/A
distribute-lft-neg-inN/A
distribute-rgt-out--N/A
lower-fma.f64N/A
Applied rewrites81.2%
Taylor expanded in y around 0
Applied rewrites57.9%
Final simplification62.2%
(FPCore (x y z t a) :precision binary64 (if (<= z 3.7e+84) (fma (- t x) (/ (- y z) (- a z)) x) (- t (* (/ (- t x) z) (- y a)))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if (z <= 3.7e+84) {
tmp = fma((t - x), ((y - z) / (a - z)), x);
} else {
tmp = t - (((t - x) / z) * (y - a));
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if (z <= 3.7e+84) tmp = fma(Float64(t - x), Float64(Float64(y - z) / Float64(a - z)), x); else tmp = Float64(t - Float64(Float64(Float64(t - x) / z) * Float64(y - a))); end return tmp end
code[x_, y_, z_, t_, a_] := If[LessEqual[z, 3.7e+84], N[(N[(t - x), $MachinePrecision] * N[(N[(y - z), $MachinePrecision] / N[(a - z), $MachinePrecision]), $MachinePrecision] + x), $MachinePrecision], N[(t - N[(N[(N[(t - x), $MachinePrecision] / z), $MachinePrecision] * N[(y - a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq 3.7 \cdot 10^{+84}:\\
\;\;\;\;\mathsf{fma}\left(t - x, \frac{y - z}{a - z}, x\right)\\
\mathbf{else}:\\
\;\;\;\;t - \frac{t - x}{z} \cdot \left(y - a\right)\\
\end{array}
\end{array}
if z < 3.7e84Initial program 79.9%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f6489.9
Applied rewrites89.9%
if 3.7e84 < z Initial program 27.3%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f6461.3
Applied rewrites61.3%
Taylor expanded in z around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
mul-1-negN/A
unsub-negN/A
lower--.f64N/A
div-subN/A
associate-/l*N/A
associate-/l*N/A
distribute-rgt-out--N/A
lower-*.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower--.f6487.4
Applied rewrites87.4%
(FPCore (x y z t a) :precision binary64 (if (or (<= z -3.6e+180) (not (<= z 1.85e+20))) (+ x (- t x)) (+ x (* t (/ y a)))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((z <= -3.6e+180) || !(z <= 1.85e+20)) {
tmp = x + (t - x);
} else {
tmp = x + (t * (y / a));
}
return tmp;
}
real(8) function code(x, y, z, t, a)
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) :: tmp
if ((z <= (-3.6d+180)) .or. (.not. (z <= 1.85d+20))) then
tmp = x + (t - x)
else
tmp = x + (t * (y / a))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a) {
double tmp;
if ((z <= -3.6e+180) || !(z <= 1.85e+20)) {
tmp = x + (t - x);
} else {
tmp = x + (t * (y / a));
}
return tmp;
}
def code(x, y, z, t, a): tmp = 0 if (z <= -3.6e+180) or not (z <= 1.85e+20): tmp = x + (t - x) else: tmp = x + (t * (y / a)) return tmp
function code(x, y, z, t, a) tmp = 0.0 if ((z <= -3.6e+180) || !(z <= 1.85e+20)) tmp = Float64(x + Float64(t - x)); else tmp = Float64(x + Float64(t * Float64(y / a))); end return tmp end
function tmp_2 = code(x, y, z, t, a) tmp = 0.0; if ((z <= -3.6e+180) || ~((z <= 1.85e+20))) tmp = x + (t - x); else tmp = x + (t * (y / a)); end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[z, -3.6e+180], N[Not[LessEqual[z, 1.85e+20]], $MachinePrecision]], N[(x + N[(t - x), $MachinePrecision]), $MachinePrecision], N[(x + N[(t * N[(y / a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;z \leq -3.6 \cdot 10^{+180} \lor \neg \left(z \leq 1.85 \cdot 10^{+20}\right):\\
\;\;\;\;x + \left(t - x\right)\\
\mathbf{else}:\\
\;\;\;\;x + t \cdot \frac{y}{a}\\
\end{array}
\end{array}
if z < -3.6000000000000002e180 or 1.85e20 < z Initial program 38.1%
Taylor expanded in z around inf
lower--.f6439.4
Applied rewrites39.4%
if -3.6000000000000002e180 < z < 1.85e20Initial program 86.0%
Taylor expanded in a around inf
associate-/l*N/A
*-commutativeN/A
lower-*.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower--.f6476.4
Applied rewrites76.4%
Taylor expanded in x around 0
Applied rewrites61.2%
Taylor expanded in y around inf
Applied rewrites59.1%
Final simplification52.8%
(FPCore (x y z t a) :precision binary64 (if (or (<= y -5e-45) (not (<= y 2.25e-113))) (* (/ y (- a z)) t) (+ x (- t x))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((y <= -5e-45) || !(y <= 2.25e-113)) {
tmp = (y / (a - z)) * t;
} else {
tmp = x + (t - x);
}
return tmp;
}
real(8) function code(x, y, z, t, a)
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) :: tmp
if ((y <= (-5d-45)) .or. (.not. (y <= 2.25d-113))) then
tmp = (y / (a - z)) * t
else
tmp = x + (t - x)
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a) {
double tmp;
if ((y <= -5e-45) || !(y <= 2.25e-113)) {
tmp = (y / (a - z)) * t;
} else {
tmp = x + (t - x);
}
return tmp;
}
def code(x, y, z, t, a): tmp = 0 if (y <= -5e-45) or not (y <= 2.25e-113): tmp = (y / (a - z)) * t else: tmp = x + (t - x) return tmp
function code(x, y, z, t, a) tmp = 0.0 if ((y <= -5e-45) || !(y <= 2.25e-113)) tmp = Float64(Float64(y / Float64(a - z)) * t); else tmp = Float64(x + Float64(t - x)); end return tmp end
function tmp_2 = code(x, y, z, t, a) tmp = 0.0; if ((y <= -5e-45) || ~((y <= 2.25e-113))) tmp = (y / (a - z)) * t; else tmp = x + (t - x); end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[y, -5e-45], N[Not[LessEqual[y, 2.25e-113]], $MachinePrecision]], N[(N[(y / N[(a - z), $MachinePrecision]), $MachinePrecision] * t), $MachinePrecision], N[(x + N[(t - x), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y \leq -5 \cdot 10^{-45} \lor \neg \left(y \leq 2.25 \cdot 10^{-113}\right):\\
\;\;\;\;\frac{y}{a - z} \cdot t\\
\mathbf{else}:\\
\;\;\;\;x + \left(t - x\right)\\
\end{array}
\end{array}
if y < -4.99999999999999976e-45 or 2.2500000000000001e-113 < y Initial program 75.9%
Taylor expanded in y around inf
div-subN/A
associate-/l*N/A
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6469.7
Applied rewrites69.7%
Taylor expanded in x around 0
Applied rewrites47.4%
if -4.99999999999999976e-45 < y < 2.2500000000000001e-113Initial program 63.6%
Taylor expanded in z around inf
lower--.f6430.5
Applied rewrites30.5%
Final simplification40.5%
(FPCore (x y z t a) :precision binary64 (if (or (<= y -5.1e-45) (not (<= y 1.95e-113))) (* y (/ t (- a z))) (+ x (- t x))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((y <= -5.1e-45) || !(y <= 1.95e-113)) {
tmp = y * (t / (a - z));
} else {
tmp = x + (t - x);
}
return tmp;
}
real(8) function code(x, y, z, t, a)
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) :: tmp
if ((y <= (-5.1d-45)) .or. (.not. (y <= 1.95d-113))) then
tmp = y * (t / (a - z))
else
tmp = x + (t - x)
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a) {
double tmp;
if ((y <= -5.1e-45) || !(y <= 1.95e-113)) {
tmp = y * (t / (a - z));
} else {
tmp = x + (t - x);
}
return tmp;
}
def code(x, y, z, t, a): tmp = 0 if (y <= -5.1e-45) or not (y <= 1.95e-113): tmp = y * (t / (a - z)) else: tmp = x + (t - x) return tmp
function code(x, y, z, t, a) tmp = 0.0 if ((y <= -5.1e-45) || !(y <= 1.95e-113)) tmp = Float64(y * Float64(t / Float64(a - z))); else tmp = Float64(x + Float64(t - x)); end return tmp end
function tmp_2 = code(x, y, z, t, a) tmp = 0.0; if ((y <= -5.1e-45) || ~((y <= 1.95e-113))) tmp = y * (t / (a - z)); else tmp = x + (t - x); end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[y, -5.1e-45], N[Not[LessEqual[y, 1.95e-113]], $MachinePrecision]], N[(y * N[(t / N[(a - z), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x + N[(t - x), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y \leq -5.1 \cdot 10^{-45} \lor \neg \left(y \leq 1.95 \cdot 10^{-113}\right):\\
\;\;\;\;y \cdot \frac{t}{a - z}\\
\mathbf{else}:\\
\;\;\;\;x + \left(t - x\right)\\
\end{array}
\end{array}
if y < -5.0999999999999997e-45 or 1.9499999999999999e-113 < y Initial program 75.9%
Taylor expanded in y around inf
div-subN/A
associate-/l*N/A
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6469.7
Applied rewrites69.7%
Taylor expanded in x around 0
Applied rewrites47.4%
Applied rewrites45.7%
if -5.0999999999999997e-45 < y < 1.9499999999999999e-113Initial program 63.6%
Taylor expanded in z around inf
lower--.f6430.5
Applied rewrites30.5%
Final simplification39.5%
(FPCore (x y z t a) :precision binary64 (if (or (<= y -1.55e-40) (not (<= y 3.25e+122))) (* (/ (- y) z) t) (+ x (- t x))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((y <= -1.55e-40) || !(y <= 3.25e+122)) {
tmp = (-y / z) * t;
} else {
tmp = x + (t - x);
}
return tmp;
}
real(8) function code(x, y, z, t, a)
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) :: tmp
if ((y <= (-1.55d-40)) .or. (.not. (y <= 3.25d+122))) then
tmp = (-y / z) * t
else
tmp = x + (t - x)
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a) {
double tmp;
if ((y <= -1.55e-40) || !(y <= 3.25e+122)) {
tmp = (-y / z) * t;
} else {
tmp = x + (t - x);
}
return tmp;
}
def code(x, y, z, t, a): tmp = 0 if (y <= -1.55e-40) or not (y <= 3.25e+122): tmp = (-y / z) * t else: tmp = x + (t - x) return tmp
function code(x, y, z, t, a) tmp = 0.0 if ((y <= -1.55e-40) || !(y <= 3.25e+122)) tmp = Float64(Float64(Float64(-y) / z) * t); else tmp = Float64(x + Float64(t - x)); end return tmp end
function tmp_2 = code(x, y, z, t, a) tmp = 0.0; if ((y <= -1.55e-40) || ~((y <= 3.25e+122))) tmp = (-y / z) * t; else tmp = x + (t - x); end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[y, -1.55e-40], N[Not[LessEqual[y, 3.25e+122]], $MachinePrecision]], N[(N[((-y) / z), $MachinePrecision] * t), $MachinePrecision], N[(x + N[(t - x), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;y \leq -1.55 \cdot 10^{-40} \lor \neg \left(y \leq 3.25 \cdot 10^{+122}\right):\\
\;\;\;\;\frac{-y}{z} \cdot t\\
\mathbf{else}:\\
\;\;\;\;x + \left(t - x\right)\\
\end{array}
\end{array}
if y < -1.55000000000000005e-40 or 3.24999999999999982e122 < y Initial program 78.3%
Taylor expanded in y around inf
div-subN/A
associate-/l*N/A
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6479.4
Applied rewrites79.4%
Taylor expanded in x around 0
Applied rewrites55.1%
Taylor expanded in z around inf
Applied rewrites39.1%
if -1.55000000000000005e-40 < y < 3.24999999999999982e122Initial program 65.5%
Taylor expanded in z around inf
lower--.f6425.2
Applied rewrites25.2%
Final simplification31.0%
(FPCore (x y z t a) :precision binary64 (+ x (- t x)))
double code(double x, double y, double z, double t, double a) {
return x + (t - x);
}
real(8) function code(x, y, z, t, a)
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
code = x + (t - x)
end function
public static double code(double x, double y, double z, double t, double a) {
return x + (t - x);
}
def code(x, y, z, t, a): return x + (t - x)
function code(x, y, z, t, a) return Float64(x + Float64(t - x)) end
function tmp = code(x, y, z, t, a) tmp = x + (t - x); end
code[x_, y_, z_, t_, a_] := N[(x + N[(t - x), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x + \left(t - x\right)
\end{array}
Initial program 70.9%
Taylor expanded in z around inf
lower--.f6418.3
Applied rewrites18.3%
(FPCore (x y z t a) :precision binary64 (+ x (- x)))
double code(double x, double y, double z, double t, double a) {
return x + -x;
}
real(8) function code(x, y, z, t, a)
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
code = x + -x
end function
public static double code(double x, double y, double z, double t, double a) {
return x + -x;
}
def code(x, y, z, t, a): return x + -x
function code(x, y, z, t, a) return Float64(x + Float64(-x)) end
function tmp = code(x, y, z, t, a) tmp = x + -x; end
code[x_, y_, z_, t_, a_] := N[(x + (-x)), $MachinePrecision]
\begin{array}{l}
\\
x + \left(-x\right)
\end{array}
Initial program 70.9%
Taylor expanded in z around inf
lower--.f6418.3
Applied rewrites18.3%
Taylor expanded in x around inf
Applied rewrites2.8%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (- t (* (/ y z) (- t x)))))
(if (< z -1.2536131056095036e+188)
t_1
(if (< z 4.446702369113811e+64)
(+ x (/ (- y z) (/ (- a z) (- t x))))
t_1))))
double code(double x, double y, double z, double t, double a) {
double t_1 = t - ((y / z) * (t - x));
double tmp;
if (z < -1.2536131056095036e+188) {
tmp = t_1;
} else if (z < 4.446702369113811e+64) {
tmp = x + ((y - z) / ((a - z) / (t - x)));
} else {
tmp = t_1;
}
return tmp;
}
real(8) function code(x, y, z, t, a)
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) :: t_1
real(8) :: tmp
t_1 = t - ((y / z) * (t - x))
if (z < (-1.2536131056095036d+188)) then
tmp = t_1
else if (z < 4.446702369113811d+64) then
tmp = x + ((y - z) / ((a - z) / (t - x)))
else
tmp = t_1
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a) {
double t_1 = t - ((y / z) * (t - x));
double tmp;
if (z < -1.2536131056095036e+188) {
tmp = t_1;
} else if (z < 4.446702369113811e+64) {
tmp = x + ((y - z) / ((a - z) / (t - x)));
} else {
tmp = t_1;
}
return tmp;
}
def code(x, y, z, t, a): t_1 = t - ((y / z) * (t - x)) tmp = 0 if z < -1.2536131056095036e+188: tmp = t_1 elif z < 4.446702369113811e+64: tmp = x + ((y - z) / ((a - z) / (t - x))) else: tmp = t_1 return tmp
function code(x, y, z, t, a) t_1 = Float64(t - Float64(Float64(y / z) * Float64(t - x))) tmp = 0.0 if (z < -1.2536131056095036e+188) tmp = t_1; elseif (z < 4.446702369113811e+64) tmp = Float64(x + Float64(Float64(y - z) / Float64(Float64(a - z) / Float64(t - x)))); else tmp = t_1; end return tmp end
function tmp_2 = code(x, y, z, t, a) t_1 = t - ((y / z) * (t - x)); tmp = 0.0; if (z < -1.2536131056095036e+188) tmp = t_1; elseif (z < 4.446702369113811e+64) tmp = x + ((y - z) / ((a - z) / (t - x))); else tmp = t_1; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(t - N[(N[(y / z), $MachinePrecision] * N[(t - x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Less[z, -1.2536131056095036e+188], t$95$1, If[Less[z, 4.446702369113811e+64], N[(x + N[(N[(y - z), $MachinePrecision] / N[(N[(a - z), $MachinePrecision] / N[(t - x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := t - \frac{y}{z} \cdot \left(t - x\right)\\
\mathbf{if}\;z < -1.2536131056095036 \cdot 10^{+188}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;z < 4.446702369113811 \cdot 10^{+64}:\\
\;\;\;\;x + \frac{y - z}{\frac{a - z}{t - x}}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
herbie shell --seed 2024318
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:invLinMap from Chart-1.5.3"
:precision binary64
:alt
(! :herbie-platform default (if (< z -125361310560950360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) (- t (* (/ y z) (- t x))) (if (< z 44467023691138110000000000000000000000000000000000000000000000000) (+ x (/ (- y z) (/ (- a z) (- t x)))) (- t (* (/ y z) (- t x))))))
(+ x (/ (* (- y z) (- t x)) (- a z))))