
(FPCore (x y z t a) :precision binary64 (+ x (/ (* (- y x) (- z t)) (- a t))))
double code(double x, double y, double z, double t, double a) {
return x + (((y - x) * (z - t)) / (a - 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 - x) * (z - t)) / (a - t))
end function
public static double code(double x, double y, double z, double t, double a) {
return x + (((y - x) * (z - t)) / (a - t));
}
def code(x, y, z, t, a): return x + (((y - x) * (z - t)) / (a - t))
function code(x, y, z, t, a) return Float64(x + Float64(Float64(Float64(y - x) * Float64(z - t)) / Float64(a - t))) end
function tmp = code(x, y, z, t, a) tmp = x + (((y - x) * (z - t)) / (a - t)); end
code[x_, y_, z_, t_, a_] := N[(x + N[(N[(N[(y - x), $MachinePrecision] * N[(z - t), $MachinePrecision]), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 18 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (x y z t a) :precision binary64 (+ x (/ (* (- y x) (- z t)) (- a t))))
double code(double x, double y, double z, double t, double a) {
return x + (((y - x) * (z - t)) / (a - 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 - x) * (z - t)) / (a - t))
end function
public static double code(double x, double y, double z, double t, double a) {
return x + (((y - x) * (z - t)) / (a - t));
}
def code(x, y, z, t, a): return x + (((y - x) * (z - t)) / (a - t))
function code(x, y, z, t, a) return Float64(x + Float64(Float64(Float64(y - x) * Float64(z - t)) / Float64(a - t))) end
function tmp = code(x, y, z, t, a) tmp = x + (((y - x) * (z - t)) / (a - t)); end
code[x_, y_, z_, t_, a_] := N[(x + N[(N[(N[(y - x), $MachinePrecision] * N[(z - t), $MachinePrecision]), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}
\\
x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}
\end{array}
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (+ x (/ (* (- y x) (- z t)) (- a t)))))
(if (or (<= t_1 -5e-286) (not (<= t_1 0.0)))
(fma (/ (- z t) (- a t)) (- y x) x)
(+ (/ (* (- y x) (- z a)) (- t)) y))))
double code(double x, double y, double z, double t, double a) {
double t_1 = x + (((y - x) * (z - t)) / (a - t));
double tmp;
if ((t_1 <= -5e-286) || !(t_1 <= 0.0)) {
tmp = fma(((z - t) / (a - t)), (y - x), x);
} else {
tmp = (((y - x) * (z - a)) / -t) + y;
}
return tmp;
}
function code(x, y, z, t, a) t_1 = Float64(x + Float64(Float64(Float64(y - x) * Float64(z - t)) / Float64(a - t))) tmp = 0.0 if ((t_1 <= -5e-286) || !(t_1 <= 0.0)) tmp = fma(Float64(Float64(z - t) / Float64(a - t)), Float64(y - x), x); else tmp = Float64(Float64(Float64(Float64(y - x) * Float64(z - a)) / Float64(-t)) + y); end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(x + N[(N[(N[(y - x), $MachinePrecision] * N[(z - t), $MachinePrecision]), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[t$95$1, -5e-286], N[Not[LessEqual[t$95$1, 0.0]], $MachinePrecision]], N[(N[(N[(z - t), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision] * N[(y - x), $MachinePrecision] + x), $MachinePrecision], N[(N[(N[(N[(y - x), $MachinePrecision] * N[(z - a), $MachinePrecision]), $MachinePrecision] / (-t)), $MachinePrecision] + y), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\\
\mathbf{if}\;t\_1 \leq -5 \cdot 10^{-286} \lor \neg \left(t\_1 \leq 0\right):\\
\;\;\;\;\mathsf{fma}\left(\frac{z - t}{a - t}, y - x, x\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(y - x\right) \cdot \left(z - a\right)}{-t} + y\\
\end{array}
\end{array}
if (+.f64 x (/.f64 (*.f64 (-.f64 y x) (-.f64 z t)) (-.f64 a t))) < -5.00000000000000037e-286 or 0.0 < (+.f64 x (/.f64 (*.f64 (-.f64 y x) (-.f64 z t)) (-.f64 a t))) Initial program 75.4%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6492.6
Applied rewrites92.6%
if -5.00000000000000037e-286 < (+.f64 x (/.f64 (*.f64 (-.f64 y x) (-.f64 z t)) (-.f64 a t))) < 0.0Initial program 4.0%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f644.0
Applied rewrites4.0%
Taylor expanded in t around inf
associate--l+N/A
associate-*r/N/A
associate-*r/N/A
associate-*r*N/A
mul-1-negN/A
div-subN/A
mul-1-negN/A
associate-*r*N/A
distribute-lft-out--N/A
associate-*r/N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites99.7%
Final simplification93.1%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (+ x (/ (* (- y x) (- z t)) (- a t)))))
(if (or (<= t_1 -5e-286) (not (<= t_1 0.0)))
(fma (/ (- z t) (- a t)) (- y x) x)
(fma (/ (fma -1.0 y x) t) (- z a) y))))
double code(double x, double y, double z, double t, double a) {
double t_1 = x + (((y - x) * (z - t)) / (a - t));
double tmp;
if ((t_1 <= -5e-286) || !(t_1 <= 0.0)) {
tmp = fma(((z - t) / (a - t)), (y - x), x);
} else {
tmp = fma((fma(-1.0, y, x) / t), (z - a), y);
}
return tmp;
}
function code(x, y, z, t, a) t_1 = Float64(x + Float64(Float64(Float64(y - x) * Float64(z - t)) / Float64(a - t))) tmp = 0.0 if ((t_1 <= -5e-286) || !(t_1 <= 0.0)) tmp = fma(Float64(Float64(z - t) / Float64(a - t)), Float64(y - x), x); else tmp = fma(Float64(fma(-1.0, y, x) / t), Float64(z - a), y); end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(x + N[(N[(N[(y - x), $MachinePrecision] * N[(z - t), $MachinePrecision]), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Or[LessEqual[t$95$1, -5e-286], N[Not[LessEqual[t$95$1, 0.0]], $MachinePrecision]], N[(N[(N[(z - t), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision] * N[(y - x), $MachinePrecision] + x), $MachinePrecision], N[(N[(N[(-1.0 * y + x), $MachinePrecision] / t), $MachinePrecision] * N[(z - a), $MachinePrecision] + y), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := x + \frac{\left(y - x\right) \cdot \left(z - t\right)}{a - t}\\
\mathbf{if}\;t\_1 \leq -5 \cdot 10^{-286} \lor \neg \left(t\_1 \leq 0\right):\\
\;\;\;\;\mathsf{fma}\left(\frac{z - t}{a - t}, y - x, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{\mathsf{fma}\left(-1, y, x\right)}{t}, z - a, y\right)\\
\end{array}
\end{array}
if (+.f64 x (/.f64 (*.f64 (-.f64 y x) (-.f64 z t)) (-.f64 a t))) < -5.00000000000000037e-286 or 0.0 < (+.f64 x (/.f64 (*.f64 (-.f64 y x) (-.f64 z t)) (-.f64 a t))) Initial program 75.4%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6492.6
Applied rewrites92.6%
if -5.00000000000000037e-286 < (+.f64 x (/.f64 (*.f64 (-.f64 y x) (-.f64 z t)) (-.f64 a t))) < 0.0Initial program 4.0%
Taylor expanded in t around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
mul-1-negN/A
div-subN/A
associate-/l*N/A
associate-/l*N/A
distribute-rgt-out--N/A
distribute-lft-neg-inN/A
lower-fma.f64N/A
Applied rewrites89.8%
Final simplification92.4%
(FPCore (x y z t a)
:precision binary64
(if (<= a -9.2e-43)
(+ x (/ (* (- z t) y) (- a t)))
(if (<= a -5.4e-227)
(* (- y x) (/ z (- a t)))
(if (<= a 3.7e-205)
(fma (/ (- (- z t)) t) (- y x) x)
(if (<= a 3.7e-28)
(+ x (/ (* (- y x) z) (- a t)))
(if (<= a 2.7e+139)
(* (- z t) (/ y (- a t)))
(fma (- z t) (/ (- y x) a) x)))))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if (a <= -9.2e-43) {
tmp = x + (((z - t) * y) / (a - t));
} else if (a <= -5.4e-227) {
tmp = (y - x) * (z / (a - t));
} else if (a <= 3.7e-205) {
tmp = fma((-(z - t) / t), (y - x), x);
} else if (a <= 3.7e-28) {
tmp = x + (((y - x) * z) / (a - t));
} else if (a <= 2.7e+139) {
tmp = (z - t) * (y / (a - t));
} else {
tmp = fma((z - t), ((y - x) / a), x);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if (a <= -9.2e-43) tmp = Float64(x + Float64(Float64(Float64(z - t) * y) / Float64(a - t))); elseif (a <= -5.4e-227) tmp = Float64(Float64(y - x) * Float64(z / Float64(a - t))); elseif (a <= 3.7e-205) tmp = fma(Float64(Float64(-Float64(z - t)) / t), Float64(y - x), x); elseif (a <= 3.7e-28) tmp = Float64(x + Float64(Float64(Float64(y - x) * z) / Float64(a - t))); elseif (a <= 2.7e+139) tmp = Float64(Float64(z - t) * Float64(y / Float64(a - t))); else tmp = fma(Float64(z - t), Float64(Float64(y - x) / a), x); end return tmp end
code[x_, y_, z_, t_, a_] := If[LessEqual[a, -9.2e-43], N[(x + N[(N[(N[(z - t), $MachinePrecision] * y), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[a, -5.4e-227], N[(N[(y - x), $MachinePrecision] * N[(z / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[a, 3.7e-205], N[(N[((-N[(z - t), $MachinePrecision]) / t), $MachinePrecision] * N[(y - x), $MachinePrecision] + x), $MachinePrecision], If[LessEqual[a, 3.7e-28], N[(x + N[(N[(N[(y - x), $MachinePrecision] * z), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[a, 2.7e+139], N[(N[(z - t), $MachinePrecision] * N[(y / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(z - t), $MachinePrecision] * N[(N[(y - x), $MachinePrecision] / a), $MachinePrecision] + x), $MachinePrecision]]]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;a \leq -9.2 \cdot 10^{-43}:\\
\;\;\;\;x + \frac{\left(z - t\right) \cdot y}{a - t}\\
\mathbf{elif}\;a \leq -5.4 \cdot 10^{-227}:\\
\;\;\;\;\left(y - x\right) \cdot \frac{z}{a - t}\\
\mathbf{elif}\;a \leq 3.7 \cdot 10^{-205}:\\
\;\;\;\;\mathsf{fma}\left(\frac{-\left(z - t\right)}{t}, y - x, x\right)\\
\mathbf{elif}\;a \leq 3.7 \cdot 10^{-28}:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot z}{a - t}\\
\mathbf{elif}\;a \leq 2.7 \cdot 10^{+139}:\\
\;\;\;\;\left(z - t\right) \cdot \frac{y}{a - t}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(z - t, \frac{y - x}{a}, x\right)\\
\end{array}
\end{array}
if a < -9.1999999999999995e-43Initial program 71.6%
Taylor expanded in x around 0
*-commutativeN/A
lower-*.f64N/A
lower--.f6478.8
Applied rewrites78.8%
if -9.1999999999999995e-43 < a < -5.3999999999999999e-227Initial program 73.5%
Taylor expanded in z 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--.f6470.6
Applied rewrites70.6%
if -5.3999999999999999e-227 < a < 3.7000000000000001e-205Initial program 69.2%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6487.6
Applied rewrites87.6%
Taylor expanded in a around 0
associate-*r/N/A
lower-/.f64N/A
mul-1-negN/A
lower-neg.f64N/A
lower--.f6485.0
Applied rewrites85.0%
if 3.7000000000000001e-205 < a < 3.7000000000000002e-28Initial program 74.5%
Taylor expanded in z around inf
*-commutativeN/A
lower-*.f64N/A
lower--.f6467.2
Applied rewrites67.2%
if 3.7000000000000002e-28 < a < 2.6999999999999998e139Initial program 54.2%
Taylor expanded in x around 0
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6462.9
Applied rewrites62.9%
if 2.6999999999999998e139 < a Initial program 75.3%
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--.f6490.8
Applied rewrites90.8%
Final simplification76.2%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (fma (- x) (/ z a) x)))
(if (<= x -2.4e-163)
t_1
(if (<= x 2.8e-299)
(* y (/ z (- a t)))
(if (<= x 6.2e-212)
(fma 1.0 (- y x) x)
(if (<= x 5.8e+17) (fma (/ y a) z x) t_1))))))
double code(double x, double y, double z, double t, double a) {
double t_1 = fma(-x, (z / a), x);
double tmp;
if (x <= -2.4e-163) {
tmp = t_1;
} else if (x <= 2.8e-299) {
tmp = y * (z / (a - t));
} else if (x <= 6.2e-212) {
tmp = fma(1.0, (y - x), x);
} else if (x <= 5.8e+17) {
tmp = fma((y / a), z, x);
} else {
tmp = t_1;
}
return tmp;
}
function code(x, y, z, t, a) t_1 = fma(Float64(-x), Float64(z / a), x) tmp = 0.0 if (x <= -2.4e-163) tmp = t_1; elseif (x <= 2.8e-299) tmp = Float64(y * Float64(z / Float64(a - t))); elseif (x <= 6.2e-212) tmp = fma(1.0, Float64(y - x), x); elseif (x <= 5.8e+17) tmp = fma(Float64(y / a), z, x); else tmp = t_1; end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[((-x) * N[(z / a), $MachinePrecision] + x), $MachinePrecision]}, If[LessEqual[x, -2.4e-163], t$95$1, If[LessEqual[x, 2.8e-299], N[(y * N[(z / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[x, 6.2e-212], N[(1.0 * N[(y - x), $MachinePrecision] + x), $MachinePrecision], If[LessEqual[x, 5.8e+17], N[(N[(y / a), $MachinePrecision] * z + x), $MachinePrecision], t$95$1]]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \mathsf{fma}\left(-x, \frac{z}{a}, x\right)\\
\mathbf{if}\;x \leq -2.4 \cdot 10^{-163}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;x \leq 2.8 \cdot 10^{-299}:\\
\;\;\;\;y \cdot \frac{z}{a - t}\\
\mathbf{elif}\;x \leq 6.2 \cdot 10^{-212}:\\
\;\;\;\;\mathsf{fma}\left(1, y - x, x\right)\\
\mathbf{elif}\;x \leq 5.8 \cdot 10^{+17}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a}, z, x\right)\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if x < -2.4000000000000001e-163 or 5.8e17 < x Initial program 64.6%
Taylor expanded in t around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6455.2
Applied rewrites55.2%
Taylor expanded in y around 0
Applied rewrites53.0%
if -2.4000000000000001e-163 < x < 2.8000000000000001e-299Initial program 95.0%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6498.6
Applied rewrites98.6%
Taylor expanded in z around inf
div-subN/A
associate-/l*N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower--.f6446.9
Applied rewrites46.9%
Taylor expanded in x around 0
Applied rewrites47.0%
if 2.8000000000000001e-299 < x < 6.20000000000000011e-212Initial program 79.3%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6499.7
Applied rewrites99.7%
Taylor expanded in t around inf
Applied rewrites68.2%
if 6.20000000000000011e-212 < x < 5.8e17Initial program 69.9%
Taylor expanded in t around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6451.6
Applied rewrites51.6%
Taylor expanded in x around 0
Applied rewrites48.6%
Final simplification52.4%
(FPCore (x y z t a)
:precision binary64
(if (<= a -9.2e-43)
(+ x (/ (* (- z t) y) (- a t)))
(if (<= a 1.65e-9)
(* (- y x) (/ z (- a t)))
(if (<= a 2.7e+139)
(* (- z t) (/ y (- a t)))
(fma (- z t) (/ (- y x) a) x)))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if (a <= -9.2e-43) {
tmp = x + (((z - t) * y) / (a - t));
} else if (a <= 1.65e-9) {
tmp = (y - x) * (z / (a - t));
} else if (a <= 2.7e+139) {
tmp = (z - t) * (y / (a - t));
} else {
tmp = fma((z - t), ((y - x) / a), x);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if (a <= -9.2e-43) tmp = Float64(x + Float64(Float64(Float64(z - t) * y) / Float64(a - t))); elseif (a <= 1.65e-9) tmp = Float64(Float64(y - x) * Float64(z / Float64(a - t))); elseif (a <= 2.7e+139) tmp = Float64(Float64(z - t) * Float64(y / Float64(a - t))); else tmp = fma(Float64(z - t), Float64(Float64(y - x) / a), x); end return tmp end
code[x_, y_, z_, t_, a_] := If[LessEqual[a, -9.2e-43], N[(x + N[(N[(N[(z - t), $MachinePrecision] * y), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[a, 1.65e-9], N[(N[(y - x), $MachinePrecision] * N[(z / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[a, 2.7e+139], N[(N[(z - t), $MachinePrecision] * N[(y / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(z - t), $MachinePrecision] * N[(N[(y - x), $MachinePrecision] / a), $MachinePrecision] + x), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;a \leq -9.2 \cdot 10^{-43}:\\
\;\;\;\;x + \frac{\left(z - t\right) \cdot y}{a - t}\\
\mathbf{elif}\;a \leq 1.65 \cdot 10^{-9}:\\
\;\;\;\;\left(y - x\right) \cdot \frac{z}{a - t}\\
\mathbf{elif}\;a \leq 2.7 \cdot 10^{+139}:\\
\;\;\;\;\left(z - t\right) \cdot \frac{y}{a - t}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(z - t, \frac{y - x}{a}, x\right)\\
\end{array}
\end{array}
if a < -9.1999999999999995e-43Initial program 71.6%
Taylor expanded in x around 0
*-commutativeN/A
lower-*.f64N/A
lower--.f6478.8
Applied rewrites78.8%
if -9.1999999999999995e-43 < a < 1.65000000000000009e-9Initial program 70.3%
Taylor expanded in z 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--.f6464.8
Applied rewrites64.8%
if 1.65000000000000009e-9 < a < 2.6999999999999998e139Initial program 58.4%
Taylor expanded in x around 0
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6472.7
Applied rewrites72.7%
if 2.6999999999999998e139 < a Initial program 75.3%
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--.f6490.8
Applied rewrites90.8%
Final simplification73.0%
(FPCore (x y z t a)
:precision binary64
(if (<= a -6.6e+24)
(+ x (* (/ (- z t) a) (- y x)))
(if (<= a 1.65e-9)
(* (- y x) (/ z (- a t)))
(if (<= a 2.7e+139)
(* (- z t) (/ y (- a t)))
(fma (- z t) (/ (- y x) a) x)))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if (a <= -6.6e+24) {
tmp = x + (((z - t) / a) * (y - x));
} else if (a <= 1.65e-9) {
tmp = (y - x) * (z / (a - t));
} else if (a <= 2.7e+139) {
tmp = (z - t) * (y / (a - t));
} else {
tmp = fma((z - t), ((y - x) / a), x);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if (a <= -6.6e+24) tmp = Float64(x + Float64(Float64(Float64(z - t) / a) * Float64(y - x))); elseif (a <= 1.65e-9) tmp = Float64(Float64(y - x) * Float64(z / Float64(a - t))); elseif (a <= 2.7e+139) tmp = Float64(Float64(z - t) * Float64(y / Float64(a - t))); else tmp = fma(Float64(z - t), Float64(Float64(y - x) / a), x); end return tmp end
code[x_, y_, z_, t_, a_] := If[LessEqual[a, -6.6e+24], N[(x + N[(N[(N[(z - t), $MachinePrecision] / a), $MachinePrecision] * N[(y - x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[a, 1.65e-9], N[(N[(y - x), $MachinePrecision] * N[(z / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[a, 2.7e+139], N[(N[(z - t), $MachinePrecision] * N[(y / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(z - t), $MachinePrecision] * N[(N[(y - x), $MachinePrecision] / a), $MachinePrecision] + x), $MachinePrecision]]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;a \leq -6.6 \cdot 10^{+24}:\\
\;\;\;\;x + \frac{z - t}{a} \cdot \left(y - x\right)\\
\mathbf{elif}\;a \leq 1.65 \cdot 10^{-9}:\\
\;\;\;\;\left(y - x\right) \cdot \frac{z}{a - t}\\
\mathbf{elif}\;a \leq 2.7 \cdot 10^{+139}:\\
\;\;\;\;\left(z - t\right) \cdot \frac{y}{a - t}\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(z - t, \frac{y - x}{a}, x\right)\\
\end{array}
\end{array}
if a < -6.5999999999999998e24Initial program 69.4%
Taylor expanded in a around inf
associate-/l*N/A
*-commutativeN/A
lower-*.f64N/A
lower-/.f64N/A
lower--.f64N/A
lower--.f6477.5
Applied rewrites77.5%
if -6.5999999999999998e24 < a < 1.65000000000000009e-9Initial program 71.3%
Taylor expanded in z 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--.f6464.7
Applied rewrites64.7%
if 1.65000000000000009e-9 < a < 2.6999999999999998e139Initial program 58.4%
Taylor expanded in x around 0
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6472.7
Applied rewrites72.7%
if 2.6999999999999998e139 < a Initial program 75.3%
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--.f6490.8
Applied rewrites90.8%
Final simplification72.3%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (fma (- z t) (/ (- y x) a) x)))
(if (<= a -6.6e+24)
t_1
(if (<= a 1.65e-9)
(* (- y x) (/ z (- a t)))
(if (<= a 2.7e+139) (* (- z t) (/ y (- a t))) t_1)))))
double code(double x, double y, double z, double t, double a) {
double t_1 = fma((z - t), ((y - x) / a), x);
double tmp;
if (a <= -6.6e+24) {
tmp = t_1;
} else if (a <= 1.65e-9) {
tmp = (y - x) * (z / (a - t));
} else if (a <= 2.7e+139) {
tmp = (z - t) * (y / (a - t));
} else {
tmp = t_1;
}
return tmp;
}
function code(x, y, z, t, a) t_1 = fma(Float64(z - t), Float64(Float64(y - x) / a), x) tmp = 0.0 if (a <= -6.6e+24) tmp = t_1; elseif (a <= 1.65e-9) tmp = Float64(Float64(y - x) * Float64(z / Float64(a - t))); elseif (a <= 2.7e+139) tmp = Float64(Float64(z - t) * Float64(y / Float64(a - t))); else tmp = t_1; end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(z - t), $MachinePrecision] * N[(N[(y - x), $MachinePrecision] / a), $MachinePrecision] + x), $MachinePrecision]}, If[LessEqual[a, -6.6e+24], t$95$1, If[LessEqual[a, 1.65e-9], N[(N[(y - x), $MachinePrecision] * N[(z / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[a, 2.7e+139], N[(N[(z - t), $MachinePrecision] * N[(y / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \mathsf{fma}\left(z - t, \frac{y - x}{a}, x\right)\\
\mathbf{if}\;a \leq -6.6 \cdot 10^{+24}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;a \leq 1.65 \cdot 10^{-9}:\\
\;\;\;\;\left(y - x\right) \cdot \frac{z}{a - t}\\
\mathbf{elif}\;a \leq 2.7 \cdot 10^{+139}:\\
\;\;\;\;\left(z - t\right) \cdot \frac{y}{a - t}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if a < -6.5999999999999998e24 or 2.6999999999999998e139 < a Initial program 71.8%
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--.f6482.4
Applied rewrites82.4%
if -6.5999999999999998e24 < a < 1.65000000000000009e-9Initial program 71.3%
Taylor expanded in z 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--.f6464.7
Applied rewrites64.7%
if 1.65000000000000009e-9 < a < 2.6999999999999998e139Initial program 58.4%
Taylor expanded in x around 0
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6472.7
Applied rewrites72.7%
Final simplification72.1%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (fma (- z t) (/ y a) x)))
(if (<= a -3e+35)
t_1
(if (<= a 1.65e-9)
(* (- y x) (/ z (- a t)))
(if (<= a 3.2e+139) (* (- z t) (/ y (- a t))) t_1)))))
double code(double x, double y, double z, double t, double a) {
double t_1 = fma((z - t), (y / a), x);
double tmp;
if (a <= -3e+35) {
tmp = t_1;
} else if (a <= 1.65e-9) {
tmp = (y - x) * (z / (a - t));
} else if (a <= 3.2e+139) {
tmp = (z - t) * (y / (a - t));
} else {
tmp = t_1;
}
return tmp;
}
function code(x, y, z, t, a) t_1 = fma(Float64(z - t), Float64(y / a), x) tmp = 0.0 if (a <= -3e+35) tmp = t_1; elseif (a <= 1.65e-9) tmp = Float64(Float64(y - x) * Float64(z / Float64(a - t))); elseif (a <= 3.2e+139) tmp = Float64(Float64(z - t) * Float64(y / Float64(a - t))); else tmp = t_1; end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(N[(z - t), $MachinePrecision] * N[(y / a), $MachinePrecision] + x), $MachinePrecision]}, If[LessEqual[a, -3e+35], t$95$1, If[LessEqual[a, 1.65e-9], N[(N[(y - x), $MachinePrecision] * N[(z / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[a, 3.2e+139], N[(N[(z - t), $MachinePrecision] * N[(y / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \mathsf{fma}\left(z - t, \frac{y}{a}, x\right)\\
\mathbf{if}\;a \leq -3 \cdot 10^{+35}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;a \leq 1.65 \cdot 10^{-9}:\\
\;\;\;\;\left(y - x\right) \cdot \frac{z}{a - t}\\
\mathbf{elif}\;a \leq 3.2 \cdot 10^{+139}:\\
\;\;\;\;\left(z - t\right) \cdot \frac{y}{a - t}\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if a < -2.99999999999999991e35 or 3.2000000000000001e139 < a Initial program 71.8%
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--.f6482.4
Applied rewrites82.4%
Taylor expanded in x around 0
Applied rewrites79.1%
if -2.99999999999999991e35 < a < 1.65000000000000009e-9Initial program 71.3%
Taylor expanded in z 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--.f6464.7
Applied rewrites64.7%
if 1.65000000000000009e-9 < a < 3.2000000000000001e139Initial program 58.4%
Taylor expanded in x around 0
*-commutativeN/A
associate-/l*N/A
lower-*.f64N/A
lower--.f64N/A
lower-/.f64N/A
lower--.f6472.7
Applied rewrites72.7%
Final simplification70.9%
(FPCore (x y z t a)
:precision binary64
(if (<= a -2.4e-73)
(+ x (/ (* (- z t) y) (- a t)))
(if (<= a 1.1e+81)
(fma (/ (fma -1.0 y x) t) (- z a) y)
(fma (- z t) (/ (- y x) a) x))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if (a <= -2.4e-73) {
tmp = x + (((z - t) * y) / (a - t));
} else if (a <= 1.1e+81) {
tmp = fma((fma(-1.0, y, x) / t), (z - a), y);
} else {
tmp = fma((z - t), ((y - x) / a), x);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if (a <= -2.4e-73) tmp = Float64(x + Float64(Float64(Float64(z - t) * y) / Float64(a - t))); elseif (a <= 1.1e+81) tmp = fma(Float64(fma(-1.0, y, x) / t), Float64(z - a), y); else tmp = fma(Float64(z - t), Float64(Float64(y - x) / a), x); end return tmp end
code[x_, y_, z_, t_, a_] := If[LessEqual[a, -2.4e-73], N[(x + N[(N[(N[(z - t), $MachinePrecision] * y), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[a, 1.1e+81], N[(N[(N[(-1.0 * y + x), $MachinePrecision] / t), $MachinePrecision] * N[(z - a), $MachinePrecision] + y), $MachinePrecision], N[(N[(z - t), $MachinePrecision] * N[(N[(y - x), $MachinePrecision] / a), $MachinePrecision] + x), $MachinePrecision]]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;a \leq -2.4 \cdot 10^{-73}:\\
\;\;\;\;x + \frac{\left(z - t\right) \cdot y}{a - t}\\
\mathbf{elif}\;a \leq 1.1 \cdot 10^{+81}:\\
\;\;\;\;\mathsf{fma}\left(\frac{\mathsf{fma}\left(-1, y, x\right)}{t}, z - a, y\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(z - t, \frac{y - x}{a}, x\right)\\
\end{array}
\end{array}
if a < -2.40000000000000006e-73Initial program 72.2%
Taylor expanded in x around 0
*-commutativeN/A
lower-*.f64N/A
lower--.f6477.5
Applied rewrites77.5%
if -2.40000000000000006e-73 < a < 1.09999999999999993e81Initial program 69.3%
Taylor expanded in t around inf
associate--l+N/A
distribute-lft-out--N/A
div-subN/A
+-commutativeN/A
mul-1-negN/A
div-subN/A
associate-/l*N/A
associate-/l*N/A
distribute-rgt-out--N/A
distribute-lft-neg-inN/A
lower-fma.f64N/A
Applied rewrites75.0%
if 1.09999999999999993e81 < a Initial program 69.5%
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--.f6482.7
Applied rewrites82.7%
Final simplification77.2%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (fma (- x) (/ z a) x)))
(if (<= x -2.5e-173)
t_1
(if (<= x 6.2e-212)
(fma 1.0 (- y x) x)
(if (<= x 5.8e+17) (fma (/ y a) z x) t_1)))))
double code(double x, double y, double z, double t, double a) {
double t_1 = fma(-x, (z / a), x);
double tmp;
if (x <= -2.5e-173) {
tmp = t_1;
} else if (x <= 6.2e-212) {
tmp = fma(1.0, (y - x), x);
} else if (x <= 5.8e+17) {
tmp = fma((y / a), z, x);
} else {
tmp = t_1;
}
return tmp;
}
function code(x, y, z, t, a) t_1 = fma(Float64(-x), Float64(z / a), x) tmp = 0.0 if (x <= -2.5e-173) tmp = t_1; elseif (x <= 6.2e-212) tmp = fma(1.0, Float64(y - x), x); elseif (x <= 5.8e+17) tmp = fma(Float64(y / a), z, x); else tmp = t_1; end return tmp end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[((-x) * N[(z / a), $MachinePrecision] + x), $MachinePrecision]}, If[LessEqual[x, -2.5e-173], t$95$1, If[LessEqual[x, 6.2e-212], N[(1.0 * N[(y - x), $MachinePrecision] + x), $MachinePrecision], If[LessEqual[x, 5.8e+17], N[(N[(y / a), $MachinePrecision] * z + x), $MachinePrecision], t$95$1]]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := \mathsf{fma}\left(-x, \frac{z}{a}, x\right)\\
\mathbf{if}\;x \leq -2.5 \cdot 10^{-173}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;x \leq 6.2 \cdot 10^{-212}:\\
\;\;\;\;\mathsf{fma}\left(1, y - x, x\right)\\
\mathbf{elif}\;x \leq 5.8 \cdot 10^{+17}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a}, z, x\right)\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
if x < -2.5000000000000001e-173 or 5.8e17 < x Initial program 65.3%
Taylor expanded in t around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6455.4
Applied rewrites55.4%
Taylor expanded in y around 0
Applied rewrites52.6%
if -2.5000000000000001e-173 < x < 6.20000000000000011e-212Initial program 88.1%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6499.0
Applied rewrites99.0%
Taylor expanded in t around inf
Applied rewrites47.4%
if 6.20000000000000011e-212 < x < 5.8e17Initial program 69.9%
Taylor expanded in t around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6451.6
Applied rewrites51.6%
Taylor expanded in x around 0
Applied rewrites48.6%
Final simplification50.8%
(FPCore (x y z t a) :precision binary64 (if (or (<= a -3e+35) (not (<= a 1.05e+76))) (fma (- z t) (/ y a) x) (* (- y x) (/ z (- a t)))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((a <= -3e+35) || !(a <= 1.05e+76)) {
tmp = fma((z - t), (y / a), x);
} else {
tmp = (y - x) * (z / (a - t));
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if ((a <= -3e+35) || !(a <= 1.05e+76)) tmp = fma(Float64(z - t), Float64(y / a), x); else tmp = Float64(Float64(y - x) * Float64(z / Float64(a - t))); end return tmp end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[a, -3e+35], N[Not[LessEqual[a, 1.05e+76]], $MachinePrecision]], N[(N[(z - t), $MachinePrecision] * N[(y / a), $MachinePrecision] + x), $MachinePrecision], N[(N[(y - x), $MachinePrecision] * N[(z / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;a \leq -3 \cdot 10^{+35} \lor \neg \left(a \leq 1.05 \cdot 10^{+76}\right):\\
\;\;\;\;\mathsf{fma}\left(z - t, \frac{y}{a}, x\right)\\
\mathbf{else}:\\
\;\;\;\;\left(y - x\right) \cdot \frac{z}{a - t}\\
\end{array}
\end{array}
if a < -2.99999999999999991e35 or 1.05000000000000003e76 < a Initial program 70.0%
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--.f6479.0
Applied rewrites79.0%
Taylor expanded in x around 0
Applied rewrites75.1%
if -2.99999999999999991e35 < a < 1.05000000000000003e76Initial program 70.2%
Taylor expanded in z 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--.f6462.8
Applied rewrites62.8%
Final simplification68.0%
(FPCore (x y z t a) :precision binary64 (if (or (<= t -3.8e+120) (not (<= t 1.8e+160))) (fma 1.0 (- y x) x) (fma (/ z a) (- y x) x)))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((t <= -3.8e+120) || !(t <= 1.8e+160)) {
tmp = fma(1.0, (y - x), x);
} else {
tmp = fma((z / a), (y - x), x);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if ((t <= -3.8e+120) || !(t <= 1.8e+160)) tmp = fma(1.0, Float64(y - x), x); else tmp = fma(Float64(z / a), Float64(y - x), x); end return tmp end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[t, -3.8e+120], N[Not[LessEqual[t, 1.8e+160]], $MachinePrecision]], N[(1.0 * N[(y - x), $MachinePrecision] + x), $MachinePrecision], N[(N[(z / a), $MachinePrecision] * N[(y - x), $MachinePrecision] + x), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;t \leq -3.8 \cdot 10^{+120} \lor \neg \left(t \leq 1.8 \cdot 10^{+160}\right):\\
\;\;\;\;\mathsf{fma}\left(1, y - x, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{z}{a}, y - x, x\right)\\
\end{array}
\end{array}
if t < -3.7999999999999998e120 or 1.80000000000000011e160 < t Initial program 41.5%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6469.3
Applied rewrites69.3%
Taylor expanded in t around inf
Applied rewrites44.8%
if -3.7999999999999998e120 < t < 1.80000000000000011e160Initial program 80.5%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6492.0
Applied rewrites92.0%
Taylor expanded in t around 0
lower-/.f6467.8
Applied rewrites67.8%
Final simplification61.7%
(FPCore (x y z t a) :precision binary64 (if (or (<= t -3.8e+120) (not (<= t 1.8e+160))) (fma 1.0 (- y x) x) (fma (/ (- y x) a) z x)))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((t <= -3.8e+120) || !(t <= 1.8e+160)) {
tmp = fma(1.0, (y - x), x);
} else {
tmp = fma(((y - x) / a), z, x);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if ((t <= -3.8e+120) || !(t <= 1.8e+160)) tmp = fma(1.0, Float64(y - x), x); else tmp = fma(Float64(Float64(y - x) / a), z, x); end return tmp end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[t, -3.8e+120], N[Not[LessEqual[t, 1.8e+160]], $MachinePrecision]], N[(1.0 * N[(y - x), $MachinePrecision] + x), $MachinePrecision], N[(N[(N[(y - x), $MachinePrecision] / a), $MachinePrecision] * z + x), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;t \leq -3.8 \cdot 10^{+120} \lor \neg \left(t \leq 1.8 \cdot 10^{+160}\right):\\
\;\;\;\;\mathsf{fma}\left(1, y - x, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y - x}{a}, z, x\right)\\
\end{array}
\end{array}
if t < -3.7999999999999998e120 or 1.80000000000000011e160 < t Initial program 41.5%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6469.3
Applied rewrites69.3%
Taylor expanded in t around inf
Applied rewrites44.8%
if -3.7999999999999998e120 < t < 1.80000000000000011e160Initial program 80.5%
Taylor expanded in t around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6464.9
Applied rewrites64.9%
Final simplification59.5%
(FPCore (x y z t a) :precision binary64 (if (or (<= t -5.8e+121) (not (<= t 3.3e+155))) (fma 1.0 (- y x) x) (fma (- z t) (/ y a) x)))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((t <= -5.8e+121) || !(t <= 3.3e+155)) {
tmp = fma(1.0, (y - x), x);
} else {
tmp = fma((z - t), (y / a), x);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if ((t <= -5.8e+121) || !(t <= 3.3e+155)) tmp = fma(1.0, Float64(y - x), x); else tmp = fma(Float64(z - t), Float64(y / a), x); end return tmp end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[t, -5.8e+121], N[Not[LessEqual[t, 3.3e+155]], $MachinePrecision]], N[(1.0 * N[(y - x), $MachinePrecision] + x), $MachinePrecision], N[(N[(z - t), $MachinePrecision] * N[(y / a), $MachinePrecision] + x), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;t \leq -5.8 \cdot 10^{+121} \lor \neg \left(t \leq 3.3 \cdot 10^{+155}\right):\\
\;\;\;\;\mathsf{fma}\left(1, y - x, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(z - t, \frac{y}{a}, x\right)\\
\end{array}
\end{array}
if t < -5.7999999999999998e121 or 3.2999999999999999e155 < t Initial program 41.0%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6469.7
Applied rewrites69.7%
Taylor expanded in t around inf
Applied rewrites44.2%
if -5.7999999999999998e121 < t < 3.2999999999999999e155Initial program 80.9%
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--.f6468.9
Applied rewrites68.9%
Taylor expanded in x around 0
Applied rewrites54.8%
Final simplification51.9%
(FPCore (x y z t a) :precision binary64 (if (or (<= t -5.8e+121) (not (<= t 1.6e+83))) (fma 1.0 (- y x) x) (fma (/ y a) z x)))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((t <= -5.8e+121) || !(t <= 1.6e+83)) {
tmp = fma(1.0, (y - x), x);
} else {
tmp = fma((y / a), z, x);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if ((t <= -5.8e+121) || !(t <= 1.6e+83)) tmp = fma(1.0, Float64(y - x), x); else tmp = fma(Float64(y / a), z, x); end return tmp end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[t, -5.8e+121], N[Not[LessEqual[t, 1.6e+83]], $MachinePrecision]], N[(1.0 * N[(y - x), $MachinePrecision] + x), $MachinePrecision], N[(N[(y / a), $MachinePrecision] * z + x), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;t \leq -5.8 \cdot 10^{+121} \lor \neg \left(t \leq 1.6 \cdot 10^{+83}\right):\\
\;\;\;\;\mathsf{fma}\left(1, y - x, x\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{a}, z, x\right)\\
\end{array}
\end{array}
if t < -5.7999999999999998e121 or 1.5999999999999999e83 < t Initial program 46.6%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6474.7
Applied rewrites74.7%
Taylor expanded in t around inf
Applied rewrites41.9%
if -5.7999999999999998e121 < t < 1.5999999999999999e83Initial program 81.6%
Taylor expanded in t around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6467.6
Applied rewrites67.6%
Taylor expanded in x around 0
Applied rewrites52.5%
Final simplification49.0%
(FPCore (x y z t a) :precision binary64 (if (or (<= t -8.2e+40) (not (<= t 2.05e+98))) (fma 1.0 (- y x) x) (* (/ z a) y)))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((t <= -8.2e+40) || !(t <= 2.05e+98)) {
tmp = fma(1.0, (y - x), x);
} else {
tmp = (z / a) * y;
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if ((t <= -8.2e+40) || !(t <= 2.05e+98)) tmp = fma(1.0, Float64(y - x), x); else tmp = Float64(Float64(z / a) * y); end return tmp end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[t, -8.2e+40], N[Not[LessEqual[t, 2.05e+98]], $MachinePrecision]], N[(1.0 * N[(y - x), $MachinePrecision] + x), $MachinePrecision], N[(N[(z / a), $MachinePrecision] * y), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;t \leq -8.2 \cdot 10^{+40} \lor \neg \left(t \leq 2.05 \cdot 10^{+98}\right):\\
\;\;\;\;\mathsf{fma}\left(1, y - x, x\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{z}{a} \cdot y\\
\end{array}
\end{array}
if t < -8.2000000000000003e40 or 2.05e98 < t Initial program 50.7%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6475.6
Applied rewrites75.6%
Taylor expanded in t around inf
Applied rewrites38.5%
if -8.2000000000000003e40 < t < 2.05e98Initial program 81.6%
Taylor expanded in t around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6469.4
Applied rewrites69.4%
Taylor expanded in x around 0
Applied rewrites23.9%
Applied rewrites29.2%
Final simplification32.7%
(FPCore (x y z t a) :precision binary64 (if (or (<= t -6.2e+40) (not (<= t 6e+79))) (fma 1.0 (- y x) x) (* z (/ y a))))
double code(double x, double y, double z, double t, double a) {
double tmp;
if ((t <= -6.2e+40) || !(t <= 6e+79)) {
tmp = fma(1.0, (y - x), x);
} else {
tmp = z * (y / a);
}
return tmp;
}
function code(x, y, z, t, a) tmp = 0.0 if ((t <= -6.2e+40) || !(t <= 6e+79)) tmp = fma(1.0, Float64(y - x), x); else tmp = Float64(z * Float64(y / a)); end return tmp end
code[x_, y_, z_, t_, a_] := If[Or[LessEqual[t, -6.2e+40], N[Not[LessEqual[t, 6e+79]], $MachinePrecision]], N[(1.0 * N[(y - x), $MachinePrecision] + x), $MachinePrecision], N[(z * N[(y / a), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}
\\
\begin{array}{l}
\mathbf{if}\;t \leq -6.2 \cdot 10^{+40} \lor \neg \left(t \leq 6 \cdot 10^{+79}\right):\\
\;\;\;\;\mathsf{fma}\left(1, y - x, x\right)\\
\mathbf{else}:\\
\;\;\;\;z \cdot \frac{y}{a}\\
\end{array}
\end{array}
if t < -6.1999999999999995e40 or 5.99999999999999948e79 < t Initial program 51.3%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6476.8
Applied rewrites76.8%
Taylor expanded in t around inf
Applied rewrites38.6%
if -6.1999999999999995e40 < t < 5.99999999999999948e79Initial program 82.2%
Taylor expanded in t around 0
+-commutativeN/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f64N/A
lower--.f6470.2
Applied rewrites70.2%
Taylor expanded in x around 0
Applied rewrites23.9%
Applied rewrites25.6%
Final simplification30.7%
(FPCore (x y z t a) :precision binary64 (fma 1.0 (- y x) x))
double code(double x, double y, double z, double t, double a) {
return fma(1.0, (y - x), x);
}
function code(x, y, z, t, a) return fma(1.0, Float64(y - x), x) end
code[x_, y_, z_, t_, a_] := N[(1.0 * N[(y - x), $MachinePrecision] + x), $MachinePrecision]
\begin{array}{l}
\\
\mathsf{fma}\left(1, y - x, x\right)
\end{array}
Initial program 70.1%
lift-+.f64N/A
+-commutativeN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
*-commutativeN/A
lower-fma.f64N/A
lower-/.f6486.0
Applied rewrites86.0%
Taylor expanded in t around inf
Applied rewrites18.3%
(FPCore (x y z t a)
:precision binary64
(let* ((t_1 (+ x (* (/ (- y x) 1.0) (/ (- z t) (- a t))))))
(if (< a -1.6153062845442575e-142)
t_1
(if (< a 3.774403170083174e-182) (- y (* (/ z t) (- y x))) t_1))))
double code(double x, double y, double z, double t, double a) {
double t_1 = x + (((y - x) / 1.0) * ((z - t) / (a - t)));
double tmp;
if (a < -1.6153062845442575e-142) {
tmp = t_1;
} else if (a < 3.774403170083174e-182) {
tmp = y - ((z / t) * (y - 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 = x + (((y - x) / 1.0d0) * ((z - t) / (a - t)))
if (a < (-1.6153062845442575d-142)) then
tmp = t_1
else if (a < 3.774403170083174d-182) then
tmp = y - ((z / t) * (y - 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 = x + (((y - x) / 1.0) * ((z - t) / (a - t)));
double tmp;
if (a < -1.6153062845442575e-142) {
tmp = t_1;
} else if (a < 3.774403170083174e-182) {
tmp = y - ((z / t) * (y - x));
} else {
tmp = t_1;
}
return tmp;
}
def code(x, y, z, t, a): t_1 = x + (((y - x) / 1.0) * ((z - t) / (a - t))) tmp = 0 if a < -1.6153062845442575e-142: tmp = t_1 elif a < 3.774403170083174e-182: tmp = y - ((z / t) * (y - x)) else: tmp = t_1 return tmp
function code(x, y, z, t, a) t_1 = Float64(x + Float64(Float64(Float64(y - x) / 1.0) * Float64(Float64(z - t) / Float64(a - t)))) tmp = 0.0 if (a < -1.6153062845442575e-142) tmp = t_1; elseif (a < 3.774403170083174e-182) tmp = Float64(y - Float64(Float64(z / t) * Float64(y - x))); else tmp = t_1; end return tmp end
function tmp_2 = code(x, y, z, t, a) t_1 = x + (((y - x) / 1.0) * ((z - t) / (a - t))); tmp = 0.0; if (a < -1.6153062845442575e-142) tmp = t_1; elseif (a < 3.774403170083174e-182) tmp = y - ((z / t) * (y - x)); else tmp = t_1; end tmp_2 = tmp; end
code[x_, y_, z_, t_, a_] := Block[{t$95$1 = N[(x + N[(N[(N[(y - x), $MachinePrecision] / 1.0), $MachinePrecision] * N[(N[(z - t), $MachinePrecision] / N[(a - t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[Less[a, -1.6153062845442575e-142], t$95$1, If[Less[a, 3.774403170083174e-182], N[(y - N[(N[(z / t), $MachinePrecision] * N[(y - x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$1]]]
\begin{array}{l}
\\
\begin{array}{l}
t_1 := x + \frac{y - x}{1} \cdot \frac{z - t}{a - t}\\
\mathbf{if}\;a < -1.6153062845442575 \cdot 10^{-142}:\\
\;\;\;\;t\_1\\
\mathbf{elif}\;a < 3.774403170083174 \cdot 10^{-182}:\\
\;\;\;\;y - \frac{z}{t} \cdot \left(y - x\right)\\
\mathbf{else}:\\
\;\;\;\;t\_1\\
\end{array}
\end{array}
herbie shell --seed 2024320
(FPCore (x y z t a)
:name "Graphics.Rendering.Chart.Axis.Types:linMap from Chart-1.5.3"
:precision binary64
:alt
(! :herbie-platform default (if (< a -646122513817703/4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t)))) (if (< a 1887201585041587/50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) (- y (* (/ z t) (- y x))) (+ x (* (/ (- y x) 1) (/ (- z t) (- a t)))))))
(+ x (/ (* (- y x) (- z t)) (- a t))))