| Alternative 1 | |
|---|---|
| Accuracy | 97.5% |
| Cost | 1220 |
\[\begin{array}{l}
t_1 := \frac{x - y}{z - y} \cdot t\\
\mathbf{if}\;t_1 \leq 4 \cdot 10^{+305}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;\frac{x \cdot t}{z - y}\\
\end{array}
\]
(FPCore (x y z t) :precision binary64 (* (/ (- x y) (- z y)) t))
(FPCore (x y z t) :precision binary64 (let* ((t_1 (* (/ (- x y) (- z y)) t))) (if (<= t_1 1e+273) t_1 (/ 1.0 (/ (/ (- y z) t) (- y x))))))
double code(double x, double y, double z, double t) {
return ((x - y) / (z - y)) * t;
}
double code(double x, double y, double z, double t) {
double t_1 = ((x - y) / (z - y)) * t;
double tmp;
if (t_1 <= 1e+273) {
tmp = t_1;
} else {
tmp = 1.0 / (((y - z) / t) / (y - x));
}
return tmp;
}
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
code = ((x - y) / (z - y)) * t
end function
real(8) function code(x, y, z, t)
real(8), intent (in) :: x
real(8), intent (in) :: y
real(8), intent (in) :: z
real(8), intent (in) :: t
real(8) :: t_1
real(8) :: tmp
t_1 = ((x - y) / (z - y)) * t
if (t_1 <= 1d+273) then
tmp = t_1
else
tmp = 1.0d0 / (((y - z) / t) / (y - x))
end if
code = tmp
end function
public static double code(double x, double y, double z, double t) {
return ((x - y) / (z - y)) * t;
}
public static double code(double x, double y, double z, double t) {
double t_1 = ((x - y) / (z - y)) * t;
double tmp;
if (t_1 <= 1e+273) {
tmp = t_1;
} else {
tmp = 1.0 / (((y - z) / t) / (y - x));
}
return tmp;
}
def code(x, y, z, t): return ((x - y) / (z - y)) * t
def code(x, y, z, t): t_1 = ((x - y) / (z - y)) * t tmp = 0 if t_1 <= 1e+273: tmp = t_1 else: tmp = 1.0 / (((y - z) / t) / (y - x)) return tmp
function code(x, y, z, t) return Float64(Float64(Float64(x - y) / Float64(z - y)) * t) end
function code(x, y, z, t) t_1 = Float64(Float64(Float64(x - y) / Float64(z - y)) * t) tmp = 0.0 if (t_1 <= 1e+273) tmp = t_1; else tmp = Float64(1.0 / Float64(Float64(Float64(y - z) / t) / Float64(y - x))); end return tmp end
function tmp = code(x, y, z, t) tmp = ((x - y) / (z - y)) * t; end
function tmp_2 = code(x, y, z, t) t_1 = ((x - y) / (z - y)) * t; tmp = 0.0; if (t_1 <= 1e+273) tmp = t_1; else tmp = 1.0 / (((y - z) / t) / (y - x)); end tmp_2 = tmp; end
code[x_, y_, z_, t_] := N[(N[(N[(x - y), $MachinePrecision] / N[(z - y), $MachinePrecision]), $MachinePrecision] * t), $MachinePrecision]
code[x_, y_, z_, t_] := Block[{t$95$1 = N[(N[(N[(x - y), $MachinePrecision] / N[(z - y), $MachinePrecision]), $MachinePrecision] * t), $MachinePrecision]}, If[LessEqual[t$95$1, 1e+273], t$95$1, N[(1.0 / N[(N[(N[(y - z), $MachinePrecision] / t), $MachinePrecision] / N[(y - x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
\frac{x - y}{z - y} \cdot t
\begin{array}{l}
t_1 := \frac{x - y}{z - y} \cdot t\\
\mathbf{if}\;t_1 \leq 10^{+273}:\\
\;\;\;\;t_1\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{\frac{\frac{y - z}{t}}{y - x}}\\
\end{array}
Results
| Original | 97.0% |
|---|---|
| Target | 96.9% |
| Herbie | 97.4% |
if (*.f64 (/.f64 (-.f64 x y) (-.f64 z y)) t) < 9.99999999999999945e272Initial program 97.5%
if 9.99999999999999945e272 < (*.f64 (/.f64 (-.f64 x y) (-.f64 z y)) t) Initial program 76.9%
Simplified76.9%
[Start]76.9 | \[ \frac{x - y}{z - y} \cdot t
\] |
|---|---|
sub-neg [=>]76.9 | \[ \frac{\color{blue}{x + \left(-y\right)}}{z - y} \cdot t
\] |
+-commutative [=>]76.9 | \[ \frac{\color{blue}{\left(-y\right) + x}}{z - y} \cdot t
\] |
neg-sub0 [=>]76.9 | \[ \frac{\color{blue}{\left(0 - y\right)} + x}{z - y} \cdot t
\] |
associate-+l- [=>]76.9 | \[ \frac{\color{blue}{0 - \left(y - x\right)}}{z - y} \cdot t
\] |
sub0-neg [=>]76.9 | \[ \frac{\color{blue}{-\left(y - x\right)}}{z - y} \cdot t
\] |
neg-mul-1 [=>]76.9 | \[ \frac{\color{blue}{-1 \cdot \left(y - x\right)}}{z - y} \cdot t
\] |
sub-neg [=>]76.9 | \[ \frac{-1 \cdot \left(y - x\right)}{\color{blue}{z + \left(-y\right)}} \cdot t
\] |
+-commutative [=>]76.9 | \[ \frac{-1 \cdot \left(y - x\right)}{\color{blue}{\left(-y\right) + z}} \cdot t
\] |
neg-sub0 [=>]76.9 | \[ \frac{-1 \cdot \left(y - x\right)}{\color{blue}{\left(0 - y\right)} + z} \cdot t
\] |
associate-+l- [=>]76.9 | \[ \frac{-1 \cdot \left(y - x\right)}{\color{blue}{0 - \left(y - z\right)}} \cdot t
\] |
sub0-neg [=>]76.9 | \[ \frac{-1 \cdot \left(y - x\right)}{\color{blue}{-\left(y - z\right)}} \cdot t
\] |
neg-mul-1 [=>]76.9 | \[ \frac{-1 \cdot \left(y - x\right)}{\color{blue}{-1 \cdot \left(y - z\right)}} \cdot t
\] |
times-frac [=>]76.9 | \[ \color{blue}{\left(\frac{-1}{-1} \cdot \frac{y - x}{y - z}\right)} \cdot t
\] |
metadata-eval [=>]76.9 | \[ \left(\color{blue}{1} \cdot \frac{y - x}{y - z}\right) \cdot t
\] |
*-lft-identity [=>]76.9 | \[ \color{blue}{\frac{y - x}{y - z}} \cdot t
\] |
Applied egg-rr91.0%
[Start]76.9 | \[ \frac{y - x}{y - z} \cdot t
\] |
|---|---|
associate-/r/ [<=]91.2 | \[ \color{blue}{\frac{y - x}{\frac{y - z}{t}}}
\] |
*-un-lft-identity [=>]91.2 | \[ \frac{\color{blue}{1 \cdot \left(y - x\right)}}{\frac{y - z}{t}}
\] |
associate-/l* [=>]91.0 | \[ \color{blue}{\frac{1}{\frac{\frac{y - z}{t}}{y - x}}}
\] |
Final simplification97.4%
| Alternative 1 | |
|---|---|
| Accuracy | 97.5% |
| Cost | 1220 |
| Alternative 2 | |
|---|---|
| Accuracy | 63.1% |
| Cost | 976 |
| Alternative 3 | |
|---|---|
| Accuracy | 68.7% |
| Cost | 976 |
| Alternative 4 | |
|---|---|
| Accuracy | 73.5% |
| Cost | 844 |
| Alternative 5 | |
|---|---|
| Accuracy | 73.2% |
| Cost | 844 |
| Alternative 6 | |
|---|---|
| Accuracy | 73.2% |
| Cost | 844 |
| Alternative 7 | |
|---|---|
| Accuracy | 73.1% |
| Cost | 844 |
| Alternative 8 | |
|---|---|
| Accuracy | 88.9% |
| Cost | 841 |
| Alternative 9 | |
|---|---|
| Accuracy | 74.1% |
| Cost | 713 |
| Alternative 10 | |
|---|---|
| Accuracy | 59.6% |
| Cost | 584 |
| Alternative 11 | |
|---|---|
| Accuracy | 37.3% |
| Cost | 64 |
herbie shell --seed 2023133
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cput from hsignal-0.2.7.1"
:precision binary64
:herbie-target
(/ t (/ (- z y) (- x y)))
(* (/ (- x y) (- z y)) t))