
(FPCore (x y z t a) :precision binary64 (+ x (* y (/ (- z t) (- z a)))))
double code(double x, double y, double z, double t, double a) {
return x + (y * ((z - t) / (z - a)));
}
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) / (z - a)))
end function
public static double code(double x, double y, double z, double t, double a) {
return x + (y * ((z - t) / (z - a)));
}
def code(x, y, z, t, a): return x + (y * ((z - t) / (z - a)))
function code(x, y, z, t, a) return Float64(x + Float64(y * Float64(Float64(z - t) / Float64(z - a)))) end
function tmp = code(x, y, z, t, a) tmp = x + (y * ((z - t) / (z - a))); end
code[x_, y_, z_, t_, a_] := N[(x + N[(y * N[(N[(z - t), $MachinePrecision] / N[(z - a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x + y \cdot \frac{z - t}{z - a}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 11 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x y z t a) :precision binary64 (+ x (* y (/ (- z t) (- z a)))))
double code(double x, double y, double z, double t, double a) {
return x + (y * ((z - t) / (z - a)));
}
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) / (z - a)))
end function
public static double code(double x, double y, double z, double t, double a) {
return x + (y * ((z - t) / (z - a)));
}
def code(x, y, z, t, a): return x + (y * ((z - t) / (z - a)))
function code(x, y, z, t, a) return Float64(x + Float64(y * Float64(Float64(z - t) / Float64(z - a)))) end
function tmp = code(x, y, z, t, a) tmp = x + (y * ((z - t) / (z - a))); end
code[x_, y_, z_, t_, a_] := N[(x + N[(y * N[(N[(z - t), $MachinePrecision] / N[(z - a), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x + y \cdot \frac{z - t}{z - a}
\end{array}
(FPCore (x y z t a) :precision binary64 (fma (/ (- z t) (- z a)) y x))
double code(double x, double y, double z, double t, double a) {
return fma(((z - t) / (z - a)), y, x);
}
function code(x, y, z, t, a) return fma(Float64(Float64(z - t) / Float64(z - a)), y, x) end
code[x_, y_, z_, t_, a_] := N[(N[(N[(z - t), $MachinePrecision] / N[(z - a), $MachinePrecision]), $MachinePrecision] * y + x), $MachinePrecision]
\begin{array}{l}
\\
\mathsf{fma}\left(\frac{z - t}{z - a}, y, x\right)
\end{array}
Initial program 98.0%
lift-+.f64N/A
+-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lower-fma.f6498.0
Applied rewrites98.0%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (/ (- z t) (- z a))))
(if (<= t_1 -2e+43)
(fma y (/ (- t) z) x)
(if (<= t_1 2e-19)
(fma (/ (- z t) (- a)) y x)
(if (<= t_1 1e+64) (fma (/ z (- z a)) y x) (/ (* y t) (+ (- z) a)))))))
double code(double x, double y, double z, double t, double a) {
double t_1 = (z - t) / (z - a);
double tmp;
if (t_1 <= -2e+43) {
tmp = fma(y, (-t / z), x);
} else if (t_1 <= 2e-19) {
tmp = fma(((z - t) / -a), y, x);
} else if (t_1 <= 1e+64) {
tmp = fma((z / (z - a)), y, x);
} else {
tmp = (y * t) / (-z + a);
}
return tmp;
}
function code(x, y, z, t, a) t_1 = Float64(Float64(z - t) / Float64(z - a)) tmp = 0.0 if (t_1 <= -2e+43) tmp = fma(y, Float64(Float64(-t) / z), x); elseif (t_1 <= 2e-19) tmp = fma(Float64(Float64(z - t) / Float64(-a)), y, x); elseif (t_1 <= 1e+64) tmp = fma(Float64(z / Float64(z - a)), y, x); else tmp = Float64(Float64(y * t) / Float64(Float64(-z) + a)); end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(z - t), $MachinePrecision] / N[(z - a), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -2e+43], N[(y * N[((-t) / z), $MachinePrecision] + x), $MachinePrecision], If[LessEqual[t$95$1, 2e-19], N[(N[(N[(z - t), $MachinePrecision] / (-a)), $MachinePrecision] * y + x), $MachinePrecision], If[LessEqual[t$95$1, 1e+64], N[(N[(z / N[(z - a), $MachinePrecision]), $MachinePrecision] * y + x), $MachinePrecision], N[(N[(y * t), $MachinePrecision] / N[((-z) + a), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{z - t}{z - a}\\
\mathbf{if}\;t\_1 \leq -2 \cdot 10^{+43}:\\
\;\;\;\;\mathsf{fma}\left(y, \frac{-t}{z}, x\right)\\
\mathbf{elif}\;t\_1 \leq 2 \cdot 10^{-19}:\\
\;\;\;\;\mathsf{fma}\left(\frac{z - t}{-a}, y, x\right)\\
\mathbf{elif}\;t\_1 \leq 10^{+64}:\\
\;\;\;\;\mathsf{fma}\left(\frac{z}{z - a}, y, x\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{y \cdot t}{\left(-z\right) + a}\\
\end{array}
\end{array}
if (/.f64 (-.f64 z t) (-.f64 z a)) < -2.00000000000000003e43Initial program 99.7%
lift--.f64N/A
flip--N/A
div-subN/A
lower--.f64N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f6499.7
Applied rewrites99.7%
Taylor expanded in a around 0
+-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6484.6
Applied rewrites84.6%
Taylor expanded in z around 0
Applied rewrites84.6%
if -2.00000000000000003e43 < (/.f64 (-.f64 z t) (-.f64 z a)) < 2e-19Initial program 98.7%
lift-+.f64N/A
+-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lower-fma.f6498.7
Applied rewrites98.7%
Taylor expanded in z around 0
mul-1-negN/A
lower-neg.f6495.4
Applied rewrites95.4%
if 2e-19 < (/.f64 (-.f64 z t) (-.f64 z a)) < 1.00000000000000002e64Initial program 100.0%
Taylor expanded in t around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6492.3
Applied rewrites92.3%
if 1.00000000000000002e64 < (/.f64 (-.f64 z t) (-.f64 z a)) Initial program 85.5%
Taylor expanded in t around inf
mul-1-negN/A
*-commutativeN/A
associate-/l*N/A
distribute-lft-neg-inN/A
lower-*.f64N/A
lower-neg.f64N/A
lower-/.f64N/A
lower--.f6470.5
Applied rewrites70.5%
Applied rewrites74.0%
Final simplification90.5%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (/ (- z t) (- z a))))
(if (<= t_1 -2e+43)
(fma y (/ (- t) z) x)
(if (<= t_1 1e-52)
(fma (/ t a) y x)
(if (<= t_1 1e+64) (fma (/ z (- z a)) y x) (/ (* y t) (+ (- z) a)))))))
double code(double x, double y, double z, double t, double a) {
double t_1 = (z - t) / (z - a);
double tmp;
if (t_1 <= -2e+43) {
tmp = fma(y, (-t / z), x);
} else if (t_1 <= 1e-52) {
tmp = fma((t / a), y, x);
} else if (t_1 <= 1e+64) {
tmp = fma((z / (z - a)), y, x);
} else {
tmp = (y * t) / (-z + a);
}
return tmp;
}
function code(x, y, z, t, a) t_1 = Float64(Float64(z - t) / Float64(z - a)) tmp = 0.0 if (t_1 <= -2e+43) tmp = fma(y, Float64(Float64(-t) / z), x); elseif (t_1 <= 1e-52) tmp = fma(Float64(t / a), y, x); elseif (t_1 <= 1e+64) tmp = fma(Float64(z / Float64(z - a)), y, x); else tmp = Float64(Float64(y * t) / Float64(Float64(-z) + a)); end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(z - t), $MachinePrecision] / N[(z - a), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -2e+43], N[(y * N[((-t) / z), $MachinePrecision] + x), $MachinePrecision], If[LessEqual[t$95$1, 1e-52], N[(N[(t / a), $MachinePrecision] * y + x), $MachinePrecision], If[LessEqual[t$95$1, 1e+64], N[(N[(z / N[(z - a), $MachinePrecision]), $MachinePrecision] * y + x), $MachinePrecision], N[(N[(y * t), $MachinePrecision] / N[((-z) + a), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{z - t}{z - a}\\
\mathbf{if}\;t\_1 \leq -2 \cdot 10^{+43}:\\
\;\;\;\;\mathsf{fma}\left(y, \frac{-t}{z}, x\right)\\
\mathbf{elif}\;t\_1 \leq 10^{-52}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t}{a}, y, x\right)\\
\mathbf{elif}\;t\_1 \leq 10^{+64}:\\
\;\;\;\;\mathsf{fma}\left(\frac{z}{z - a}, y, x\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{y \cdot t}{\left(-z\right) + a}\\
\end{array}
\end{array}
if (/.f64 (-.f64 z t) (-.f64 z a)) < -2.00000000000000003e43Initial program 99.7%
lift--.f64N/A
flip--N/A
div-subN/A
lower--.f64N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f6499.7
Applied rewrites99.7%
Taylor expanded in a around 0
+-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6484.6
Applied rewrites84.6%
Taylor expanded in z around 0
Applied rewrites84.6%
if -2.00000000000000003e43 < (/.f64 (-.f64 z t) (-.f64 z a)) < 1e-52Initial program 98.7%
Taylor expanded in z around 0
lower-/.f6485.9
Applied rewrites85.9%
lift-+.f64N/A
+-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lower-fma.f6485.9
Applied rewrites85.9%
if 1e-52 < (/.f64 (-.f64 z t) (-.f64 z a)) < 1.00000000000000002e64Initial program 100.0%
Taylor expanded in t around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6491.7
Applied rewrites91.7%
if 1.00000000000000002e64 < (/.f64 (-.f64 z t) (-.f64 z a)) Initial program 85.5%
Taylor expanded in t around inf
mul-1-negN/A
*-commutativeN/A
associate-/l*N/A
distribute-lft-neg-inN/A
lower-*.f64N/A
lower-neg.f64N/A
lower-/.f64N/A
lower--.f6470.5
Applied rewrites70.5%
Applied rewrites74.0%
Final simplification87.1%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (/ (- z t) (- z a))))
(if (<= t_1 -2e+43)
(fma y (/ (- t) z) x)
(if (<= t_1 1e-52)
(fma (/ t a) y x)
(if (<= t_1 2.0) (fma (/ z (- z a)) y x) (+ x (/ (* t y) a)))))))
double code(double x, double y, double z, double t, double a) {
double t_1 = (z - t) / (z - a);
double tmp;
if (t_1 <= -2e+43) {
tmp = fma(y, (-t / z), x);
} else if (t_1 <= 1e-52) {
tmp = fma((t / a), y, x);
} else if (t_1 <= 2.0) {
tmp = fma((z / (z - a)), y, x);
} else {
tmp = x + ((t * y) / a);
}
return tmp;
}
function code(x, y, z, t, a) t_1 = Float64(Float64(z - t) / Float64(z - a)) tmp = 0.0 if (t_1 <= -2e+43) tmp = fma(y, Float64(Float64(-t) / z), x); elseif (t_1 <= 1e-52) tmp = fma(Float64(t / a), y, x); elseif (t_1 <= 2.0) tmp = fma(Float64(z / Float64(z - a)), y, x); else tmp = Float64(x + Float64(Float64(t * y) / a)); end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(z - t), $MachinePrecision] / N[(z - a), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -2e+43], N[(y * N[((-t) / z), $MachinePrecision] + x), $MachinePrecision], If[LessEqual[t$95$1, 1e-52], N[(N[(t / a), $MachinePrecision] * y + x), $MachinePrecision], If[LessEqual[t$95$1, 2.0], N[(N[(z / N[(z - a), $MachinePrecision]), $MachinePrecision] * y + x), $MachinePrecision], N[(x + N[(N[(t * y), $MachinePrecision] / a), $MachinePrecision]), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{z - t}{z - a}\\
\mathbf{if}\;t\_1 \leq -2 \cdot 10^{+43}:\\
\;\;\;\;\mathsf{fma}\left(y, \frac{-t}{z}, x\right)\\
\mathbf{elif}\;t\_1 \leq 10^{-52}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t}{a}, y, x\right)\\
\mathbf{elif}\;t\_1 \leq 2:\\
\;\;\;\;\mathsf{fma}\left(\frac{z}{z - a}, y, x\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{t \cdot y}{a}\\
\end{array}
\end{array}
if (/.f64 (-.f64 z t) (-.f64 z a)) < -2.00000000000000003e43Initial program 99.7%
lift--.f64N/A
flip--N/A
div-subN/A
lower--.f64N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f6499.7
Applied rewrites99.7%
Taylor expanded in a around 0
+-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6484.6
Applied rewrites84.6%
Taylor expanded in z around 0
Applied rewrites84.6%
if -2.00000000000000003e43 < (/.f64 (-.f64 z t) (-.f64 z a)) < 1e-52Initial program 98.7%
Taylor expanded in z around 0
lower-/.f6485.9
Applied rewrites85.9%
lift-+.f64N/A
+-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lower-fma.f6485.9
Applied rewrites85.9%
if 1e-52 < (/.f64 (-.f64 z t) (-.f64 z a)) < 2Initial program 100.0%
Taylor expanded in t around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6497.2
Applied rewrites97.2%
if 2 < (/.f64 (-.f64 z t) (-.f64 z a)) Initial program 90.9%
Taylor expanded in z around 0
lower-/.f64N/A
lower-*.f6466.5
Applied rewrites66.5%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (/ (- z t) (- z a))))
(if (<= t_1 -2e+43)
(fma y (/ (- t) z) x)
(if (<= t_1 2e-19)
(fma (/ t a) y x)
(if (<= t_1 2e+31) (+ y x) (fma (/ y a) t x))))))
double code(double x, double y, double z, double t, double a) {
double t_1 = (z - t) / (z - a);
double tmp;
if (t_1 <= -2e+43) {
tmp = fma(y, (-t / z), x);
} else if (t_1 <= 2e-19) {
tmp = fma((t / a), y, x);
} else if (t_1 <= 2e+31) {
tmp = y + x;
} else {
tmp = fma((y / a), t, x);
}
return tmp;
}
function code(x, y, z, t, a) t_1 = Float64(Float64(z - t) / Float64(z - a)) tmp = 0.0 if (t_1 <= -2e+43) tmp = fma(y, Float64(Float64(-t) / z), x); elseif (t_1 <= 2e-19) tmp = fma(Float64(t / a), y, x); elseif (t_1 <= 2e+31) tmp = Float64(y + x); else tmp = fma(Float64(y / a), t, x); end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(z - t), $MachinePrecision] / N[(z - a), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -2e+43], N[(y * N[((-t) / z), $MachinePrecision] + x), $MachinePrecision], If[LessEqual[t$95$1, 2e-19], N[(N[(t / a), $MachinePrecision] * y + x), $MachinePrecision], If[LessEqual[t$95$1, 2e+31], N[(y + x), $MachinePrecision], N[(N[(y / a), $MachinePrecision] * t + x), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{z - t}{z - a}\\
\mathbf{if}\;t\_1 \leq -2 \cdot 10^{+43}:\\
\;\;\;\;\mathsf{fma}\left(y, \frac{-t}{z}, x\right)\\
\mathbf{elif}\;t\_1 \leq 2 \cdot 10^{-19}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t}{a}, y, x\right)\\
\mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+31}:\\
\;\;\;\;y + x\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a}, t, x\right)\\
\end{array}
\end{array}
if (/.f64 (-.f64 z t) (-.f64 z a)) < -2.00000000000000003e43Initial program 99.7%
lift--.f64N/A
flip--N/A
div-subN/A
lower--.f64N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f64N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f64N/A
+-commutativeN/A
lower-+.f6499.7
Applied rewrites99.7%
Taylor expanded in a around 0
+-commutativeN/A
associate-/l*N/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6484.6
Applied rewrites84.6%
Taylor expanded in z around 0
Applied rewrites84.6%
if -2.00000000000000003e43 < (/.f64 (-.f64 z t) (-.f64 z a)) < 2e-19Initial program 98.7%
Taylor expanded in z around 0
lower-/.f6484.4
Applied rewrites84.4%
lift-+.f64N/A
+-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lower-fma.f6484.4
Applied rewrites84.4%
if 2e-19 < (/.f64 (-.f64 z t) (-.f64 z a)) < 1.9999999999999999e31Initial program 100.0%
Taylor expanded in z around inf
+-commutativeN/A
lower-+.f6494.5
Applied rewrites94.5%
if 1.9999999999999999e31 < (/.f64 (-.f64 z t) (-.f64 z a)) Initial program 89.4%
Taylor expanded in z around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6466.2
Applied rewrites66.2%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (/ (- z t) (- z a))))
(if (<= t_1 -4e+74)
(* (- t) (/ y z))
(if (<= t_1 2e-19)
(fma (/ t a) y x)
(if (<= t_1 2e+31) (+ y x) (fma (/ y a) t x))))))
double code(double x, double y, double z, double t, double a) {
double t_1 = (z - t) / (z - a);
double tmp;
if (t_1 <= -4e+74) {
tmp = -t * (y / z);
} else if (t_1 <= 2e-19) {
tmp = fma((t / a), y, x);
} else if (t_1 <= 2e+31) {
tmp = y + x;
} else {
tmp = fma((y / a), t, x);
}
return tmp;
}
function code(x, y, z, t, a) t_1 = Float64(Float64(z - t) / Float64(z - a)) tmp = 0.0 if (t_1 <= -4e+74) tmp = Float64(Float64(-t) * Float64(y / z)); elseif (t_1 <= 2e-19) tmp = fma(Float64(t / a), y, x); elseif (t_1 <= 2e+31) tmp = Float64(y + x); else tmp = fma(Float64(y / a), t, x); end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(z - t), $MachinePrecision] / N[(z - a), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -4e+74], N[((-t) * N[(y / z), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$1, 2e-19], N[(N[(t / a), $MachinePrecision] * y + x), $MachinePrecision], If[LessEqual[t$95$1, 2e+31], N[(y + x), $MachinePrecision], N[(N[(y / a), $MachinePrecision] * t + x), $MachinePrecision]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{z - t}{z - a}\\
\mathbf{if}\;t\_1 \leq -4 \cdot 10^{+74}:\\
\;\;\;\;\left(-t\right) \cdot \frac{y}{z}\\
\mathbf{elif}\;t\_1 \leq 2 \cdot 10^{-19}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t}{a}, y, x\right)\\
\mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+31}:\\
\;\;\;\;y + x\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a}, t, x\right)\\
\end{array}
\end{array}
if (/.f64 (-.f64 z t) (-.f64 z a)) < -3.99999999999999981e74Initial program 99.6%
Taylor expanded in t around inf
mul-1-negN/A
*-commutativeN/A
associate-/l*N/A
distribute-lft-neg-inN/A
lower-*.f64N/A
lower-neg.f64N/A
lower-/.f64N/A
lower--.f6475.5
Applied rewrites75.5%
Taylor expanded in z around inf
Applied rewrites60.4%
if -3.99999999999999981e74 < (/.f64 (-.f64 z t) (-.f64 z a)) < 2e-19Initial program 98.8%
Taylor expanded in z around 0
lower-/.f6481.5
Applied rewrites81.5%
lift-+.f64N/A
+-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lower-fma.f6481.5
Applied rewrites81.5%
if 2e-19 < (/.f64 (-.f64 z t) (-.f64 z a)) < 1.9999999999999999e31Initial program 100.0%
Taylor expanded in z around inf
+-commutativeN/A
lower-+.f6494.5
Applied rewrites94.5%
if 1.9999999999999999e31 < (/.f64 (-.f64 z t) (-.f64 z a)) Initial program 89.4%
Taylor expanded in z around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6466.2
Applied rewrites66.2%
(FPCore (x y z t a) :precision binary64 (let* ((t_1 (/ (- z t) (- z a)))) (if (or (<= t_1 2e-19) (not (<= t_1 2e+31))) (fma (/ y a) t x) (+ y x))))
double code(double x, double y, double z, double t, double a) {
double t_1 = (z - t) / (z - a);
double tmp;
if ((t_1 <= 2e-19) || !(t_1 <= 2e+31)) {
tmp = fma((y / a), t, x);
} else {
tmp = y + x;
}
return tmp;
}
function code(x, y, z, t, a) t_1 = Float64(Float64(z - t) / Float64(z - a)) tmp = 0.0 if ((t_1 <= 2e-19) || !(t_1 <= 2e+31)) tmp = fma(Float64(y / a), t, x); else tmp = Float64(y + x); end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(z - t), $MachinePrecision] / N[(z - a), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[t$95$1, 2e-19], N[Not[LessEqual[t$95$1, 2e+31]], $MachinePrecision]], N[(N[(y / a), $MachinePrecision] * t + x), $MachinePrecision], N[(y + x), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{z - t}{z - a}\\
\mathbf{if}\;t\_1 \leq 2 \cdot 10^{-19} \lor \neg \left(t\_1 \leq 2 \cdot 10^{+31}\right):\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a}, t, x\right)\\
\mathbf{else}:\\
\;\;\;\;y + x\\
\end{array}
\end{array}
if (/.f64 (-.f64 z t) (-.f64 z a)) < 2e-19 or 1.9999999999999999e31 < (/.f64 (-.f64 z t) (-.f64 z a)) Initial program 96.7%
Taylor expanded in z around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6470.6
Applied rewrites70.6%
if 2e-19 < (/.f64 (-.f64 z t) (-.f64 z a)) < 1.9999999999999999e31Initial program 100.0%
Taylor expanded in z around inf
+-commutativeN/A
lower-+.f6494.5
Applied rewrites94.5%
Final simplification79.8%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (/ (- z t) (- z a))))
(if (<= t_1 2e-19)
(fma (/ t a) y x)
(if (<= t_1 2e+31) (+ y x) (fma (/ y a) t x)))))
double code(double x, double y, double z, double t, double a) {
double t_1 = (z - t) / (z - a);
double tmp;
if (t_1 <= 2e-19) {
tmp = fma((t / a), y, x);
} else if (t_1 <= 2e+31) {
tmp = y + x;
} else {
tmp = fma((y / a), t, x);
}
return tmp;
}
function code(x, y, z, t, a) t_1 = Float64(Float64(z - t) / Float64(z - a)) tmp = 0.0 if (t_1 <= 2e-19) tmp = fma(Float64(t / a), y, x); elseif (t_1 <= 2e+31) tmp = Float64(y + x); else tmp = fma(Float64(y / a), t, x); end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(z - t), $MachinePrecision] / N[(z - a), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, 2e-19], N[(N[(t / a), $MachinePrecision] * y + x), $MachinePrecision], If[LessEqual[t$95$1, 2e+31], N[(y + x), $MachinePrecision], N[(N[(y / a), $MachinePrecision] * t + x), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{z - t}{z - a}\\
\mathbf{if}\;t\_1 \leq 2 \cdot 10^{-19}:\\
\;\;\;\;\mathsf{fma}\left(\frac{t}{a}, y, x\right)\\
\mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+31}:\\
\;\;\;\;y + x\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a}, t, x\right)\\
\end{array}
\end{array}
if (/.f64 (-.f64 z t) (-.f64 z a)) < 2e-19Initial program 99.0%
Taylor expanded in z around 0
lower-/.f6472.3
Applied rewrites72.3%
lift-+.f64N/A
+-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lower-fma.f6472.3
Applied rewrites72.3%
if 2e-19 < (/.f64 (-.f64 z t) (-.f64 z a)) < 1.9999999999999999e31Initial program 100.0%
Taylor expanded in z around inf
+-commutativeN/A
lower-+.f6494.5
Applied rewrites94.5%
if 1.9999999999999999e31 < (/.f64 (-.f64 z t) (-.f64 z a)) Initial program 89.4%
Taylor expanded in z around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6466.2
Applied rewrites66.2%
(FPCore (x y z t a) :precision binary64 (let* ((t_1 (/ (- z t) (- z a)))) (if (or (<= t_1 -4e+135) (not (<= t_1 2e+101))) (/ (* t y) a) (+ y x))))
double code(double x, double y, double z, double t, double a) {
double t_1 = (z - t) / (z - a);
double tmp;
if ((t_1 <= -4e+135) || !(t_1 <= 2e+101)) {
tmp = (t * y) / a;
} else {
tmp = y + 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) :: t_1
real(8) :: tmp
t_1 = (z - t) / (z - a)
if ((t_1 <= (-4d+135)) .or. (.not. (t_1 <= 2d+101))) then
tmp = (t * y) / a
else
tmp = y + x
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a) {
double t_1 = (z - t) / (z - a);
double tmp;
if ((t_1 <= -4e+135) || !(t_1 <= 2e+101)) {
tmp = (t * y) / a;
} else {
tmp = y + x;
}
return tmp;
}
def code(x, y, z, t, a): t_1 = (z - t) / (z - a) tmp = 0 if (t_1 <= -4e+135) or not (t_1 <= 2e+101): tmp = (t * y) / a else: tmp = y + x return tmp
function code(x, y, z, t, a) t_1 = Float64(Float64(z - t) / Float64(z - a)) tmp = 0.0 if ((t_1 <= -4e+135) || !(t_1 <= 2e+101)) tmp = Float64(Float64(t * y) / a); else tmp = Float64(y + x); end return tmp end
function tmp_2 = code(x, y, z, t, a) t_1 = (z - t) / (z - a); tmp = 0.0; if ((t_1 <= -4e+135) || ~((t_1 <= 2e+101))) tmp = (t * y) / a; else tmp = y + x; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(z - t), $MachinePrecision] / N[(z - a), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[t$95$1, -4e+135], N[Not[LessEqual[t$95$1, 2e+101]], $MachinePrecision]], N[(N[(t * y), $MachinePrecision] / a), $MachinePrecision], N[(y + x), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{z - t}{z - a}\\
\mathbf{if}\;t\_1 \leq -4 \cdot 10^{+135} \lor \neg \left(t\_1 \leq 2 \cdot 10^{+101}\right):\\
\;\;\;\;\frac{t \cdot y}{a}\\
\mathbf{else}:\\
\;\;\;\;y + x\\
\end{array}
\end{array}
if (/.f64 (-.f64 z t) (-.f64 z a)) < -3.99999999999999985e135 or 2e101 < (/.f64 (-.f64 z t) (-.f64 z a)) Initial program 89.6%
Taylor expanded in z around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6464.5
Applied rewrites64.5%
Taylor expanded in x around 0
Applied rewrites52.0%
if -3.99999999999999985e135 < (/.f64 (-.f64 z t) (-.f64 z a)) < 2e101Initial program 99.4%
Taylor expanded in z around inf
+-commutativeN/A
lower-+.f6468.4
Applied rewrites68.4%
Final simplification66.0%
(FPCore (x y z t a) :precision binary64 (let* ((t_1 (/ (- z t) (- z a)))) (if (or (<= t_1 -4e+135) (not (<= t_1 2e+101))) (* y (/ t a)) (+ y x))))
double code(double x, double y, double z, double t, double a) {
double t_1 = (z - t) / (z - a);
double tmp;
if ((t_1 <= -4e+135) || !(t_1 <= 2e+101)) {
tmp = y * (t / a);
} else {
tmp = y + 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) :: t_1
real(8) :: tmp
t_1 = (z - t) / (z - a)
if ((t_1 <= (-4d+135)) .or. (.not. (t_1 <= 2d+101))) then
tmp = y * (t / a)
else
tmp = y + x
end if
code = tmp
end function
public static double code(double x, double y, double z, double t, double a) {
double t_1 = (z - t) / (z - a);
double tmp;
if ((t_1 <= -4e+135) || !(t_1 <= 2e+101)) {
tmp = y * (t / a);
} else {
tmp = y + x;
}
return tmp;
}
def code(x, y, z, t, a): t_1 = (z - t) / (z - a) tmp = 0 if (t_1 <= -4e+135) or not (t_1 <= 2e+101): tmp = y * (t / a) else: tmp = y + x return tmp
function code(x, y, z, t, a) t_1 = Float64(Float64(z - t) / Float64(z - a)) tmp = 0.0 if ((t_1 <= -4e+135) || !(t_1 <= 2e+101)) tmp = Float64(y * Float64(t / a)); else tmp = Float64(y + x); end return tmp end
function tmp_2 = code(x, y, z, t, a) t_1 = (z - t) / (z - a); tmp = 0.0; if ((t_1 <= -4e+135) || ~((t_1 <= 2e+101))) tmp = y * (t / a); else tmp = y + x; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(z - t), $MachinePrecision] / N[(z - a), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[t$95$1, -4e+135], N[Not[LessEqual[t$95$1, 2e+101]], $MachinePrecision]], N[(y * N[(t / a), $MachinePrecision]), $MachinePrecision], N[(y + x), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \frac{z - t}{z - a}\\
\mathbf{if}\;t\_1 \leq -4 \cdot 10^{+135} \lor \neg \left(t\_1 \leq 2 \cdot 10^{+101}\right):\\
\;\;\;\;y \cdot \frac{t}{a}\\
\mathbf{else}:\\
\;\;\;\;y + x\\
\end{array}
\end{array}
if (/.f64 (-.f64 z t) (-.f64 z a)) < -3.99999999999999985e135 or 2e101 < (/.f64 (-.f64 z t) (-.f64 z a)) Initial program 89.6%
Taylor expanded in z around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6464.5
Applied rewrites64.5%
Taylor expanded in x around 0
Applied rewrites52.0%
Applied rewrites49.3%
if -3.99999999999999985e135 < (/.f64 (-.f64 z t) (-.f64 z a)) < 2e101Initial program 99.4%
Taylor expanded in z around inf
+-commutativeN/A
lower-+.f6468.4
Applied rewrites68.4%
Final simplification65.6%
(FPCore (x y z t a) :precision binary64 (+ y x))
double code(double x, double y, double z, double t, double a) {
return y + 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 = y + x
end function
public static double code(double x, double y, double z, double t, double a) {
return y + x;
}
def code(x, y, z, t, a): return y + x
function code(x, y, z, t, a) return Float64(y + x) end
function tmp = code(x, y, z, t, a) tmp = y + x; end
code[x_, y_, z_, t_, a_] := N[(y + x), $MachinePrecision]
\begin{array}{l}
\\
y + x
\end{array}
Initial program 98.0%
Taylor expanded in z around inf
+-commutativeN/A
lower-+.f6461.0
Applied rewrites61.0%
(FPCore (x y z t a) :precision binary64 (+ x (/ y (/ (- z a) (- z t)))))
double code(double x, double y, double z, double t, double a) {
return x + (y / ((z - a) / (z - t)));
}
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 - a) / (z - t)))
end function
public static double code(double x, double y, double z, double t, double a) {
return x + (y / ((z - a) / (z - t)));
}
def code(x, y, z, t, a): return x + (y / ((z - a) / (z - t)))
function code(x, y, z, t, a) return Float64(x + Float64(y / Float64(Float64(z - a) / Float64(z - t)))) end
function tmp = code(x, y, z, t, a) tmp = x + (y / ((z - a) / (z - t))); end
code[x_, y_, z_, t_, a_] := N[(x + N[(y / N[(N[(z - a), $MachinePrecision] / N[(z - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x + \frac{y}{\frac{z - a}{z - t}}
\end{array}
herbie shell --seed 2024338
(FPCore (x y z t a)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:renderAxisLine from plot-0.2.3.4, A"
:precision binary64
:alt
(! :herbie-platform default (+ x (/ y (/ (- z a) (- z t)))))
(+ x (* y (/ (- z t) (- z a)))))