Time bar (total: 23.4s)
| 1× | search |
| Probability | Valid | Unknown | Precondition | Infinite | Domain | Can't | Iter |
|---|---|---|---|---|---|---|---|
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 0 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 1 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 2 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 3 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 4 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 5 |
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 6 |
| 12.5% | 12.5% | 87.4% | 0.1% | 0% | 0% | 0% | 7 |
| 18.8% | 18.7% | 81.1% | 0.1% | 0% | 0% | 0% | 8 |
| 25.6% | 25% | 72.5% | 0.1% | 2.3% | 0% | 0% | 9 |
| 38.6% | 37.4% | 59.7% | 0.1% | 2.7% | 0% | 0% | 10 |
| 46.4% | 44.5% | 51.3% | 0.1% | 4.1% | 0% | 0% | 11 |
| 53.7% | 50.3% | 43.4% | 0.1% | 6.1% | 0% | 0% | 12 |
Compiled 13 to 9 computations (30.8% saved)
| 1.6s | 8254× | body | 256 | valid |
| 60.0ms | 620× | body | 256 | infinite |
| 0.0ms | 1× | body | 1024 | valid |
| 0.0ms | 1× | body | 512 | valid |
| 2× | egg-herbie |
| 34804× | rational.json-simplify-41 |
| 3770× | rational.json-simplify-1 |
| 1944× | rational.json-simplify-35 |
| 6× | rational.json-simplify-2 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 21 | 100 |
| 1 | 41 | 100 |
| 2 | 64 | 100 |
| 3 | 93 | 100 |
| 4 | 119 | 100 |
| 5 | 187 | 100 |
| 6 | 383 | 100 |
| 7 | 955 | 100 |
| 8 | 1199 | 100 |
| 9 | 1207 | 100 |
| 10 | 1215 | 100 |
| 11 | 1223 | 100 |
| 12 | 1231 | 100 |
| 13 | 1239 | 100 |
| 14 | 1247 | 100 |
| 15 | 1255 | 100 |
| 16 | 1263 | 100 |
| 17 | 1271 | 100 |
| 18 | 1279 | 100 |
| 19 | 1287 | 100 |
| 20 | 1295 | 100 |
| 21 | 1303 | 100 |
| 22 | 1311 | 100 |
| 23 | 1319 | 100 |
| 24 | 1327 | 100 |
| 25 | 1335 | 100 |
| 26 | 1343 | 100 |
| 27 | 1351 | 100 |
| 28 | 1359 | 100 |
| 29 | 1367 | 100 |
| 30 | 1375 | 100 |
| 31 | 1383 | 100 |
| 32 | 1391 | 100 |
| 33 | 1399 | 100 |
| 34 | 1407 | 100 |
| 35 | 1415 | 100 |
| 36 | 1423 | 100 |
| 37 | 1431 | 100 |
| 38 | 1439 | 100 |
| 39 | 1447 | 100 |
| 40 | 1455 | 100 |
| 41 | 1463 | 100 |
| 42 | 1471 | 100 |
| 43 | 4209 | 100 |
| 44 | 4217 | 100 |
| 45 | 4225 | 100 |
| 46 | 4233 | 100 |
| 47 | 4241 | 100 |
| 48 | 4249 | 100 |
| 49 | 4257 | 100 |
| 50 | 4265 | 100 |
| 51 | 4273 | 100 |
| 52 | 4281 | 100 |
| 53 | 4289 | 100 |
| 54 | 5609 | 100 |
| 55 | 5617 | 100 |
| 56 | 5625 | 100 |
| 57 | 5633 | 100 |
| 58 | 5641 | 100 |
| 59 | 5649 | 100 |
| 60 | 5657 | 100 |
| 61 | 5665 | 100 |
| 62 | 5673 | 100 |
| 63 | 5681 | 100 |
| 64 | 5689 | 100 |
| 65 | 5697 | 100 |
| 66 | 5705 | 100 |
| 67 | 5713 | 100 |
| 68 | 5721 | 100 |
| 69 | 5729 | 100 |
| 70 | 5737 | 100 |
| 71 | 5745 | 100 |
| 72 | 5753 | 100 |
| 73 | 5761 | 100 |
| 74 | 5769 | 100 |
| 75 | 5777 | 100 |
| 76 | 5785 | 100 |
| 77 | 5793 | 100 |
| 78 | 5801 | 100 |
| 79 | 5809 | 100 |
| 80 | 5817 | 100 |
| 81 | 5825 | 100 |
| 82 | 5833 | 100 |
| 83 | 5841 | 100 |
| 84 | 5849 | 100 |
| 85 | 5857 | 100 |
| 86 | 5865 | 100 |
| 87 | 5873 | 100 |
| 88 | 5881 | 100 |
| 89 | 5889 | 100 |
| 90 | 5897 | 100 |
| 91 | 5905 | 100 |
| 92 | 5913 | 100 |
| 93 | 5921 | 100 |
| 94 | 5929 | 100 |
| 95 | 5937 | 100 |
| 96 | 5945 | 100 |
| 97 | 5953 | 100 |
| 98 | 5961 | 100 |
| 99 | 5969 | 100 |
| 100 | 5977 | 100 |
| 101 | 5985 | 100 |
| 102 | 5993 | 100 |
| 103 | 6001 | 100 |
| 104 | 6009 | 100 |
| 105 | 6017 | 100 |
| 106 | 6025 | 100 |
| 107 | 6033 | 100 |
| 108 | 6041 | 100 |
| 109 | 6049 | 100 |
| 110 | 6057 | 100 |
| 111 | 6065 | 100 |
| 112 | 6073 | 100 |
| 113 | 6081 | 100 |
| 114 | 6089 | 100 |
| 115 | 6097 | 100 |
| 116 | 6105 | 100 |
| 117 | 6113 | 100 |
| 118 | 6121 | 100 |
| 119 | 6129 | 100 |
| 120 | 6137 | 100 |
| 121 | 6145 | 100 |
| 122 | 6153 | 100 |
| 123 | 6161 | 100 |
| 124 | 6169 | 100 |
| 125 | 6177 | 100 |
| 126 | 6185 | 100 |
| 127 | 6193 | 100 |
| 128 | 6201 | 100 |
| 129 | 6209 | 100 |
| 130 | 6217 | 100 |
| 131 | 6225 | 100 |
| 132 | 6233 | 100 |
| 133 | 6241 | 100 |
| 134 | 6249 | 100 |
| 135 | 6257 | 100 |
| 136 | 6265 | 100 |
| 137 | 6273 | 100 |
| 138 | 6281 | 100 |
| 139 | 6289 | 100 |
| 140 | 6297 | 100 |
| 141 | 6305 | 100 |
| 142 | 6313 | 100 |
| 143 | 6321 | 100 |
| 144 | 6329 | 100 |
| 145 | 6337 | 100 |
| 146 | 6345 | 100 |
| 147 | 6353 | 100 |
| 148 | 6361 | 100 |
| 149 | 6369 | 100 |
| 150 | 6377 | 100 |
| 151 | 6385 | 100 |
| 152 | 6393 | 100 |
| 153 | 6401 | 100 |
| 154 | 6409 | 100 |
| 155 | 6417 | 100 |
| 156 | 6425 | 100 |
| 157 | 6433 | 100 |
| 158 | 6441 | 100 |
| 159 | 6449 | 100 |
| 160 | 6457 | 100 |
| 161 | 6465 | 100 |
| 162 | 6473 | 100 |
| 163 | 6481 | 100 |
| 164 | 6489 | 100 |
| 165 | 6497 | 100 |
| 166 | 6505 | 100 |
| 167 | 6513 | 100 |
| 168 | 6521 | 100 |
| 169 | 6529 | 100 |
| 170 | 6537 | 100 |
| 171 | 6545 | 100 |
| 172 | 6553 | 100 |
| 173 | 6561 | 100 |
| 174 | 6569 | 100 |
| 175 | 6577 | 100 |
| 176 | 6585 | 100 |
| 177 | 6593 | 100 |
| 178 | 6601 | 100 |
| 179 | 6609 | 100 |
| 180 | 6617 | 100 |
| 181 | 6625 | 100 |
| 182 | 6633 | 100 |
| 183 | 6641 | 100 |
| 184 | 6649 | 100 |
| 185 | 6657 | 100 |
| 186 | 6665 | 100 |
| 187 | 6673 | 100 |
| 188 | 6681 | 100 |
| 189 | 6689 | 100 |
| 190 | 6697 | 100 |
| 191 | 6705 | 100 |
| 192 | 6713 | 100 |
| 193 | 6721 | 100 |
| 194 | 6729 | 100 |
| 195 | 6737 | 100 |
| 196 | 6745 | 100 |
| 197 | 6753 | 100 |
| 198 | 6761 | 100 |
| 199 | 6769 | 100 |
| 200 | 6777 | 100 |
| 201 | 6785 | 100 |
| 202 | 6793 | 100 |
| 203 | 6801 | 100 |
| 204 | 6809 | 100 |
| 205 | 6817 | 100 |
| 206 | 6825 | 100 |
| 207 | 6833 | 100 |
| 208 | 6841 | 100 |
| 209 | 6849 | 100 |
| 210 | 6857 | 100 |
| 211 | 6865 | 100 |
| 212 | 6873 | 100 |
| 213 | 6881 | 100 |
| 214 | 6889 | 100 |
| 215 | 6897 | 100 |
| 216 | 6905 | 100 |
| 217 | 6913 | 100 |
| 218 | 6921 | 100 |
| 219 | 6929 | 100 |
| 220 | 6937 | 100 |
| 221 | 6945 | 100 |
| 222 | 6953 | 100 |
| 223 | 6961 | 100 |
| 224 | 6969 | 100 |
| 225 | 6977 | 100 |
| 226 | 6985 | 100 |
| 227 | 6993 | 100 |
| 228 | 7001 | 100 |
| 229 | 7009 | 100 |
| 230 | 7017 | 100 |
| 231 | 7025 | 100 |
| 232 | 7033 | 100 |
| 233 | 7041 | 100 |
| 234 | 7049 | 100 |
| 235 | 7057 | 100 |
| 236 | 7065 | 100 |
| 237 | 7073 | 100 |
| 238 | 7081 | 100 |
| 239 | 7089 | 100 |
| 240 | 7097 | 100 |
| 241 | 7105 | 100 |
| 242 | 7113 | 100 |
| 243 | 7121 | 100 |
| 244 | 7129 | 100 |
| 245 | 7137 | 100 |
| 246 | 7145 | 100 |
| 247 | 7153 | 100 |
| 248 | 7161 | 100 |
| 249 | 7169 | 100 |
| 250 | 7177 | 100 |
| 251 | 7185 | 100 |
| 252 | 7193 | 100 |
| 253 | 7201 | 100 |
| 254 | 7209 | 100 |
| 255 | 7217 | 100 |
| 256 | 7225 | 100 |
| 257 | 7233 | 100 |
| 258 | 7241 | 100 |
| 259 | 7249 | 100 |
| 260 | 7257 | 100 |
| 261 | 7265 | 100 |
| 262 | 7273 | 100 |
| 263 | 7281 | 100 |
| 264 | 7289 | 100 |
| 265 | 7297 | 100 |
| 266 | 7305 | 100 |
| 267 | 7313 | 100 |
| 268 | 7321 | 100 |
| 269 | 7329 | 100 |
| 270 | 7337 | 100 |
| 271 | 7345 | 100 |
| 272 | 7353 | 100 |
| 273 | 7361 | 100 |
| 274 | 7369 | 100 |
| 275 | 7377 | 100 |
| 276 | 7385 | 100 |
| 277 | 7393 | 100 |
| 278 | 7401 | 100 |
| 279 | 7409 | 100 |
| 280 | 7417 | 100 |
| 281 | 7425 | 100 |
| 282 | 7433 | 100 |
| 283 | 7441 | 100 |
| 284 | 7449 | 100 |
| 285 | 7457 | 100 |
| 286 | 7465 | 100 |
| 287 | 7473 | 100 |
| 288 | 7481 | 100 |
| 289 | 7489 | 100 |
| 290 | 7497 | 100 |
| 291 | 7505 | 100 |
| 292 | 7513 | 100 |
| 293 | 7521 | 100 |
| 294 | 7529 | 100 |
| 295 | 7537 | 100 |
| 296 | 7545 | 100 |
| 297 | 7553 | 100 |
| 298 | 7561 | 100 |
| 299 | 7569 | 100 |
| 300 | 7577 | 100 |
| 301 | 7585 | 100 |
| 302 | 7593 | 100 |
| 303 | 7601 | 100 |
| 304 | 7609 | 100 |
| 305 | 7617 | 100 |
| 306 | 7625 | 100 |
| 307 | 7633 | 100 |
| 308 | 7641 | 100 |
| 309 | 7649 | 100 |
| 310 | 7657 | 100 |
| 311 | 7665 | 100 |
| 312 | 7673 | 100 |
| 313 | 7681 | 100 |
| 314 | 7689 | 100 |
| 315 | 7697 | 100 |
| 316 | 7705 | 100 |
| 317 | 7713 | 100 |
| 318 | 7721 | 100 |
| 319 | 7729 | 100 |
| 320 | 7737 | 100 |
| 321 | 7745 | 100 |
| 322 | 7753 | 100 |
| 323 | 7761 | 100 |
| 0 | 3 | 3 |
| 1× | saturated |
| 1× | node limit |
| Inputs |
|---|
0 |
1 |
2 |
| Outputs |
|---|
0 |
1 |
2 |
| Inputs |
|---|
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
(+.f64 (+.f64 (/.f64 y 2) (*.f64 x y)) z) |
(+.f64 (+.f64 (/.f64 z 2) (*.f64 y z)) x) |
(+.f64 (+.f64 (/.f64 x 2) (*.f64 z x)) y) |
| Outputs |
|---|
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
(+.f64 (+.f64 (/.f64 x 2) (*.f64 x y)) z) |
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
(+.f64 (*.f64 x y) (+.f64 (/.f64 x 2) z)) |
(+.f64 (+.f64 (/.f64 y 2) (*.f64 x y)) z) |
(+.f64 z (+.f64 (*.f64 x y) (/.f64 y 2))) |
(+.f64 (*.f64 x y) (+.f64 (/.f64 y 2) z)) |
(+.f64 (*.f64 x y) (+.f64 z (/.f64 y 2))) |
(+.f64 (+.f64 (/.f64 z 2) (*.f64 y z)) x) |
(+.f64 x (+.f64 (/.f64 z 2) (*.f64 y z))) |
(+.f64 (*.f64 y z) (+.f64 x (/.f64 z 2))) |
(+.f64 (+.f64 (/.f64 x 2) (*.f64 z x)) y) |
(+.f64 y (+.f64 (/.f64 x 2) (*.f64 x z))) |
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x z) y)) |
(+.f64 (/.f64 x 2) (+.f64 y (*.f64 x z))) |
Compiled 15 to 11 computations (26.7% saved)
| 1× | egg-herbie |
| 9732× | rational.json-simplify-41 |
| 5888× | rational.json-simplify-1 |
| 388× | rational.json-simplify-35 |
| 2× | rational.json-simplify-2 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 25 |
| 1 | 17 | 25 |
| 2 | 25 | 25 |
| 3 | 35 | 25 |
| 4 | 45 | 25 |
| 5 | 69 | 25 |
| 6 | 133 | 25 |
| 7 | 330 | 25 |
| 8 | 414 | 25 |
| 9 | 418 | 25 |
| 10 | 422 | 25 |
| 11 | 426 | 25 |
| 12 | 430 | 25 |
| 13 | 1320 | 25 |
| 14 | 1707 | 25 |
| 15 | 1711 | 25 |
| 16 | 1715 | 25 |
| 17 | 1719 | 25 |
| 18 | 1723 | 25 |
| 19 | 1727 | 25 |
| 20 | 1731 | 25 |
| 21 | 1735 | 25 |
| 22 | 1739 | 25 |
| 23 | 1743 | 25 |
| 24 | 1747 | 25 |
| 25 | 1751 | 25 |
| 26 | 1755 | 25 |
| 27 | 1759 | 25 |
| 28 | 1763 | 25 |
| 29 | 1767 | 25 |
| 30 | 1771 | 25 |
| 31 | 1775 | 25 |
| 32 | 1779 | 25 |
| 33 | 1783 | 25 |
| 34 | 1787 | 25 |
| 35 | 1791 | 25 |
| 36 | 1795 | 25 |
| 37 | 1799 | 25 |
| 38 | 1803 | 25 |
| 39 | 1807 | 25 |
| 40 | 1811 | 25 |
| 41 | 1815 | 25 |
| 42 | 1819 | 25 |
| 43 | 1823 | 25 |
| 44 | 1827 | 25 |
| 45 | 1831 | 25 |
| 46 | 1835 | 25 |
| 47 | 1839 | 25 |
| 48 | 1843 | 25 |
| 49 | 1847 | 25 |
| 50 | 1851 | 25 |
| 51 | 1855 | 25 |
| 52 | 1859 | 25 |
| 53 | 1863 | 25 |
| 54 | 1867 | 25 |
| 55 | 1871 | 25 |
| 56 | 1875 | 25 |
| 57 | 1879 | 25 |
| 58 | 1883 | 25 |
| 59 | 1887 | 25 |
| 60 | 1891 | 25 |
| 61 | 1895 | 25 |
| 62 | 1899 | 25 |
| 63 | 1903 | 25 |
| 64 | 1907 | 25 |
| 65 | 1911 | 25 |
| 66 | 1915 | 25 |
| 67 | 1919 | 25 |
| 68 | 1923 | 25 |
| 69 | 1927 | 25 |
| 70 | 1931 | 25 |
| 71 | 1935 | 25 |
| 72 | 1939 | 25 |
| 73 | 1943 | 25 |
| 74 | 1947 | 25 |
| 75 | 1951 | 25 |
| 76 | 1955 | 25 |
| 77 | 1959 | 25 |
| 78 | 1963 | 25 |
| 79 | 1967 | 25 |
| 80 | 1971 | 25 |
| 81 | 1975 | 25 |
| 82 | 1979 | 25 |
| 83 | 1983 | 25 |
| 84 | 1987 | 25 |
| 85 | 1991 | 25 |
| 86 | 1995 | 25 |
| 87 | 1999 | 25 |
| 88 | 2003 | 25 |
| 89 | 2007 | 25 |
| 90 | 2011 | 25 |
| 91 | 2015 | 25 |
| 92 | 2019 | 25 |
| 93 | 2023 | 25 |
| 94 | 2027 | 25 |
| 95 | 2031 | 25 |
| 96 | 2035 | 25 |
| 97 | 2039 | 25 |
| 98 | 2043 | 25 |
| 99 | 2047 | 25 |
| 100 | 2051 | 25 |
| 101 | 2055 | 25 |
| 102 | 2059 | 25 |
| 103 | 2063 | 25 |
| 104 | 2067 | 25 |
| 105 | 2071 | 25 |
| 106 | 2075 | 25 |
| 107 | 2079 | 25 |
| 108 | 2083 | 25 |
| 109 | 2087 | 25 |
| 110 | 2091 | 25 |
| 111 | 2095 | 25 |
| 112 | 2099 | 25 |
| 113 | 2103 | 25 |
| 114 | 2107 | 25 |
| 115 | 2111 | 25 |
| 116 | 2115 | 25 |
| 117 | 2119 | 25 |
| 118 | 2123 | 25 |
| 119 | 2127 | 25 |
| 120 | 2131 | 25 |
| 121 | 2135 | 25 |
| 122 | 2139 | 25 |
| 123 | 2143 | 25 |
| 124 | 2147 | 25 |
| 125 | 2151 | 25 |
| 126 | 2155 | 25 |
| 127 | 2159 | 25 |
| 128 | 2163 | 25 |
| 129 | 2167 | 25 |
| 130 | 2171 | 25 |
| 131 | 2175 | 25 |
| 132 | 2179 | 25 |
| 133 | 2183 | 25 |
| 134 | 2187 | 25 |
| 135 | 2191 | 25 |
| 136 | 2195 | 25 |
| 137 | 2199 | 25 |
| 138 | 2203 | 25 |
| 139 | 2207 | 25 |
| 140 | 2211 | 25 |
| 141 | 2215 | 25 |
| 142 | 2219 | 25 |
| 143 | 2223 | 25 |
| 144 | 2227 | 25 |
| 145 | 2231 | 25 |
| 146 | 2235 | 25 |
| 147 | 2239 | 25 |
| 148 | 2243 | 25 |
| 149 | 2247 | 25 |
| 150 | 2251 | 25 |
| 151 | 2255 | 25 |
| 152 | 2259 | 25 |
| 153 | 2263 | 25 |
| 154 | 2267 | 25 |
| 155 | 2271 | 25 |
| 156 | 2275 | 25 |
| 157 | 2279 | 25 |
| 158 | 2283 | 25 |
| 159 | 2287 | 25 |
| 160 | 2291 | 25 |
| 161 | 2295 | 25 |
| 162 | 2299 | 25 |
| 163 | 2303 | 25 |
| 164 | 7482 | 25 |
| 165 | 7486 | 25 |
| 166 | 7490 | 25 |
| 167 | 7494 | 25 |
| 168 | 7498 | 25 |
| 169 | 7502 | 25 |
| 170 | 7506 | 25 |
| 171 | 7510 | 25 |
| 172 | 7514 | 25 |
| 173 | 7518 | 25 |
| 174 | 7522 | 25 |
| 175 | 7526 | 25 |
| 176 | 7530 | 25 |
| 177 | 7534 | 25 |
| 178 | 7538 | 25 |
| 179 | 7542 | 25 |
| 180 | 7546 | 25 |
| 181 | 7550 | 25 |
| 182 | 7554 | 25 |
| 183 | 7558 | 25 |
| 184 | 7562 | 25 |
| 185 | 7566 | 25 |
| 186 | 7570 | 25 |
| 187 | 7574 | 25 |
| 188 | 7578 | 25 |
| 189 | 7582 | 25 |
| 190 | 7586 | 25 |
| 191 | 7590 | 25 |
| 192 | 7594 | 25 |
| 193 | 7598 | 25 |
| 194 | 7602 | 25 |
| 1× | node limit |
| Inputs |
|---|
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
| Outputs |
|---|
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
(+.f64 (+.f64 (/.f64 x 2) (*.f64 x y)) z) |
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
(+.f64 (*.f64 x y) (+.f64 (/.f64 x 2) z)) |
Compiled 39 to 21 computations (46.2% saved)
1 alts after pruning (1 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 3 | 1 | 4 |
| Fresh | 1 | 0 | 1 |
| Picked | 0 | 0 | 0 |
| Done | 0 | 0 | 0 |
| Total | 4 | 1 | 5 |
| Status | Error | Program |
|---|---|---|
| ▶ | 0.0b | (+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
Compiled 12 to 8 computations (33.3% saved)
Found 2 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
| ✓ | 0.0b | (+.f64 (*.f64 x y) z) |
Compiled 27 to 11 computations (59.3% saved)
18 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | z | @ | inf | (+.f64 (*.f64 x y) z) |
| 0.0ms | x | @ | inf | (+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
| 0.0ms | y | @ | 0 | (+.f64 (*.f64 x y) z) |
| 0.0ms | x | @ | inf | (+.f64 (*.f64 x y) z) |
| 0.0ms | x | @ | 0 | (+.f64 (*.f64 x y) z) |
| 1× | batch-egg-rewrite |
| 1754× | bool.json-1 |
| 1754× | bool.json-2 |
| 1714× | rational.json-1 |
| 1068× | bool.json-3 |
| 1028× | rational.json-2 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 38 |
| 1 | 104 | 38 |
| 2 | 294 | 32 |
| 3 | 627 | 32 |
| 4 | 1364 | 32 |
| 5 | 3261 | 32 |
| 6 | 6750 | 32 |
| 1× | node limit |
| Inputs |
|---|
(+.f64 (*.f64 x y) z) |
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x y) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 x y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 x y) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 x y) z) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 x y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 x y) z) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 x y) z) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 x y) z) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 x y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 x y) z) (+.f64 (*.f64 x y) z))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 x y) z) (+.f64 (*.f64 x y) z)))))) |
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 z (*.f64 x (+.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 x (*.f64 (+.f64 (*.f64 x y) z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 (+.f64 (*.f64 x y) z) 2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 z (*.f64 x (+.f64 y 1/2)))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 z (*.f64 x (+.f64 y 1/2))) (+.f64 z (*.f64 x (+.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 z (*.f64 x (+.f64 y 1/2))) (+.f64 z (*.f64 x (+.f64 y 1/2)))))))) |
| 1× | egg-herbie |
| 7634× | rational.json-simplify-41 |
| 2832× | rational.json-simplify-35 |
| 1942× | rational.json-simplify-2 |
| 1934× | rational.json-simplify-51 |
| 1792× | rational.json-simplify-49 |
Useful iterations: 4 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 85 | 1602 |
| 1 | 162 | 1586 |
| 2 | 418 | 1586 |
| 3 | 948 | 1570 |
| 4 | 1815 | 1554 |
| 5 | 2321 | 1554 |
| 6 | 2415 | 1554 |
| 7 | 2495 | 1554 |
| 8 | 2560 | 1554 |
| 9 | 2616 | 1554 |
| 10 | 3831 | 1554 |
| 11 | 3898 | 1554 |
| 12 | 3955 | 1554 |
| 13 | 4008 | 1554 |
| 14 | 4056 | 1554 |
| 15 | 4104 | 1554 |
| 16 | 4752 | 1554 |
| 17 | 4804 | 1554 |
| 18 | 4874 | 1554 |
| 19 | 4944 | 1554 |
| 20 | 5002 | 1554 |
| 21 | 5067 | 1554 |
| 22 | 5122 | 1554 |
| 23 | 5177 | 1554 |
| 24 | 5226 | 1554 |
| 25 | 5275 | 1554 |
| 26 | 5275 | 1554 |
| 27 | 5324 | 1554 |
| 28 | 5373 | 1554 |
| 29 | 5422 | 1554 |
| 30 | 5471 | 1554 |
| 31 | 5520 | 1554 |
| 32 | 5569 | 1554 |
| 33 | 5618 | 1554 |
| 34 | 6799 | 1554 |
| 1× | node limit |
| Inputs |
|---|
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
z |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) |
(+.f64 (*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) z) |
(+.f64 (*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) z) |
(+.f64 (*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) z) |
(+.f64 (*.f64 1/2 x) z) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
z |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
z |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(-.f64 (+.f64 (*.f64 x y) z) 0) |
(*.f64 (+.f64 (*.f64 x y) z) 1) |
(*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 1/2)) |
(*.f64 1 (+.f64 (*.f64 x y) z)) |
(*.f64 4 (/.f64 (+.f64 (*.f64 x y) z) 4)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 1/2) |
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x y) z) 2)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 1/4) |
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x y) z) 4)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 1/2) 2) |
(*.f64 (/.f64 (+.f64 (*.f64 x y) z) 4) 4) |
(/.f64 (+.f64 (*.f64 x y) z) 1) |
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 2) |
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 4) |
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4)) 8) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4))) 16) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4)))) 32) |
(-.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 0) |
(*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1/2)) |
(*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1) |
(*.f64 1 (+.f64 z (*.f64 x (+.f64 y 1/2)))) |
(*.f64 4 (/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)) |
(*.f64 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))) 1/2) |
(*.f64 1/2 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2))))) |
(*.f64 1/2 (+.f64 x (*.f64 (+.f64 (*.f64 x y) z) 2))) |
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 1/4) |
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)) |
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1/2) 2) |
(*.f64 (/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 4) |
(*.f64 (+.f64 x (*.f64 (+.f64 (*.f64 x y) z) 2)) 1/2) |
(/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1) |
(/.f64 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))) 2) |
(/.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 4) |
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)) 8) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))) 16) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)))) 32) |
| Outputs |
|---|
z |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
(+.f64 (*.f64 y x) z) |
(+.f64 z (*.f64 y x)) |
z |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 x (+.f64 y 1/2)) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) |
(*.f64 -1 (*.f64 x (-.f64 (*.f64 y -1) 1/2))) |
(*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2))) |
(*.f64 (-.f64 (neg.f64 y) 1/2) (neg.f64 x)) |
(*.f64 (-.f64 -1/2 y) (neg.f64 x)) |
(*.f64 x (-.f64 y -1/2)) |
(+.f64 (*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) z) |
(+.f64 z (*.f64 -1 (*.f64 x (-.f64 (*.f64 y -1) 1/2)))) |
(+.f64 z (*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2)))) |
(+.f64 z (*.f64 (-.f64 (neg.f64 y) 1/2) (neg.f64 x))) |
(+.f64 z (*.f64 (-.f64 -1/2 y) (neg.f64 x))) |
(+.f64 z (*.f64 x (-.f64 y -1/2))) |
(+.f64 (*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) z) |
(+.f64 z (*.f64 -1 (*.f64 x (-.f64 (*.f64 y -1) 1/2)))) |
(+.f64 z (*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2)))) |
(+.f64 z (*.f64 (-.f64 (neg.f64 y) 1/2) (neg.f64 x))) |
(+.f64 z (*.f64 (-.f64 -1/2 y) (neg.f64 x))) |
(+.f64 z (*.f64 x (-.f64 y -1/2))) |
(+.f64 (*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) z) |
(+.f64 z (*.f64 -1 (*.f64 x (-.f64 (*.f64 y -1) 1/2)))) |
(+.f64 z (*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2)))) |
(+.f64 z (*.f64 (-.f64 (neg.f64 y) 1/2) (neg.f64 x))) |
(+.f64 z (*.f64 (-.f64 -1/2 y) (neg.f64 x))) |
(+.f64 z (*.f64 x (-.f64 y -1/2))) |
(+.f64 (*.f64 1/2 x) z) |
(+.f64 z (*.f64 x 1/2)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 x (+.f64 y 1/2)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
z |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
z |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(-.f64 (+.f64 (*.f64 x y) z) 0) |
(+.f64 z (*.f64 y x)) |
(*.f64 (+.f64 (*.f64 x y) z) 1) |
(+.f64 z (*.f64 y x)) |
(*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 1/2)) |
(+.f64 z (*.f64 y x)) |
(*.f64 1 (+.f64 (*.f64 x y) z)) |
(+.f64 z (*.f64 y x)) |
(*.f64 4 (/.f64 (+.f64 (*.f64 x y) z) 4)) |
(+.f64 z (*.f64 y x)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 1/2) |
(+.f64 z (*.f64 y x)) |
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x y) z) 2)) |
(+.f64 z (*.f64 y x)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 1/4) |
(+.f64 z (*.f64 y x)) |
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x y) z) 4)) |
(+.f64 z (*.f64 y x)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 1/2) 2) |
(+.f64 z (*.f64 y x)) |
(*.f64 (/.f64 (+.f64 (*.f64 x y) z) 4) 4) |
(+.f64 z (*.f64 y x)) |
(/.f64 (+.f64 (*.f64 x y) z) 1) |
(+.f64 z (*.f64 y x)) |
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 2) |
(+.f64 z (*.f64 y x)) |
(/.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 4) |
(+.f64 z (*.f64 y x)) |
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4)) 8) |
(+.f64 z (*.f64 y x)) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4))) 16) |
(+.f64 z (*.f64 y x)) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 4)))) 32) |
(+.f64 z (*.f64 y x)) |
(-.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 0) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1/2)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 1 (+.f64 z (*.f64 x (+.f64 y 1/2)))) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 4 (/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))) 1/2) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 1/2 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2))))) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 1/2 (+.f64 x (*.f64 (+.f64 (*.f64 x y) z) 2))) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 1/4) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1/2) 2) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 (/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 4) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(*.f64 (+.f64 x (*.f64 (+.f64 (*.f64 x y) z) 2)) 1/2) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(/.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 1) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(/.f64 (*.f64 2 (+.f64 z (*.f64 x (+.f64 y 1/2)))) 2) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(/.f64 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4) 4) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)) 8) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))) 16) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 x (+.f64 y 1/2))) 4)))) 32) |
(+.f64 z (*.f64 x (+.f64 y 1/2))) |
Compiled 641 to 395 computations (38.4% saved)
5 alts after pruning (4 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 56 | 4 | 60 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 56 | 5 | 61 |
| Status | Error | Program |
|---|---|---|
| ✓ | 0.0b | (+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
| ▶ | 30.4b | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| ▶ | 15.9b | (+.f64 (/.f64 x 2) z) |
| ▶ | 0.0b | (+.f64 z (*.f64 (+.f64 1/2 y) x)) |
| ▶ | 30.4b | (*.f64 (+.f64 1/2 y) x) |
Compiled 48 to 34 computations (29.2% saved)
Found 1 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (*.f64 (+.f64 1/2 y) x) |
Compiled 14 to 9 computations (35.7% saved)
6 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | y | @ | inf | (*.f64 (+.f64 1/2 y) x) |
| 0.0ms | x | @ | -inf | (*.f64 (+.f64 1/2 y) x) |
| 0.0ms | x | @ | inf | (*.f64 (+.f64 1/2 y) x) |
| 0.0ms | x | @ | 0 | (*.f64 (+.f64 1/2 y) x) |
| 0.0ms | y | @ | 0 | (*.f64 (+.f64 1/2 y) x) |
| 1× | batch-egg-rewrite |
| 1598× | bool.json-1 |
| 1598× | bool.json-2 |
| 1560× | rational.json-1 |
| 1560× | rational.json-2 |
| 1560× | rational.json-3 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 13 |
| 1 | 70 | 13 |
| 2 | 193 | 13 |
| 3 | 401 | 13 |
| 4 | 819 | 13 |
| 5 | 1764 | 13 |
| 6 | 3837 | 13 |
| 7 | 6382 | 13 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (+.f64 1/2 y) x) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1/2 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 1/2 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 1/2 y) (*.f64 1/2 x)) (*.f64 (+.f64 1/2 y) (*.f64 1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 1/2 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1/2 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1/2 y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1/2 y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x 8) (+.f64 1/2 y)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (+.f64 1/2 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (+.f64 1/2 y) x) (*.f64 (+.f64 1/2 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (+.f64 1/2 y) x) (*.f64 (+.f64 1/2 y) x)))))) |
| 1× | egg-herbie |
| 5270× | rational.json-simplify-35 |
| 2808× | rational.json-simplify-2 |
| 1794× | rational.json-simplify-53 |
| 1034× | rational.json-simplify-1 |
| 726× | rational.json-simplify-41 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 39 | 401 |
| 1 | 91 | 281 |
| 2 | 183 | 281 |
| 3 | 418 | 281 |
| 4 | 1324 | 281 |
| 5 | 2739 | 281 |
| 6 | 3757 | 281 |
| 7 | 3881 | 281 |
| 8 | 3967 | 281 |
| 9 | 4049 | 281 |
| 10 | 4131 | 281 |
| 11 | 4213 | 281 |
| 12 | 4709 | 281 |
| 13 | 4933 | 281 |
| 14 | 5073 | 281 |
| 15 | 5155 | 281 |
| 16 | 5237 | 281 |
| 17 | 5237 | 281 |
| 18 | 5237 | 281 |
| 19 | 5319 | 281 |
| 20 | 5545 | 281 |
| 21 | 5825 | 281 |
| 22 | 5960 | 281 |
| 23 | 6067 | 281 |
| 24 | 6153 | 281 |
| 25 | 6235 | 281 |
| 26 | 6317 | 281 |
| 27 | 6399 | 281 |
| 28 | 6481 | 281 |
| 29 | 6563 | 281 |
| 30 | 6645 | 281 |
| 31 | 7019 | 281 |
| 32 | 7101 | 281 |
| 33 | 7101 | 281 |
| 34 | 7101 | 281 |
| 35 | 7183 | 281 |
| 36 | 7265 | 281 |
| 37 | 7347 | 281 |
| 38 | 7429 | 281 |
| 39 | 7511 | 281 |
| 40 | 7593 | 281 |
| 41 | 7675 | 281 |
| 42 | 7757 | 281 |
| 43 | 7839 | 281 |
| 44 | 7921 | 281 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 1/2 x) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 (+.f64 1/2 y) x) 0) |
(+.f64 0 (*.f64 (+.f64 1/2 y) x)) |
(+.f64 (*.f64 (+.f64 1/2 y) (*.f64 1/2 x)) (*.f64 (+.f64 1/2 y) (*.f64 1/2 x))) |
(-.f64 (*.f64 (+.f64 1/2 y) x) 0) |
(/.f64 (*.f64 (+.f64 1/2 y) x) 1) |
(/.f64 (*.f64 (+.f64 1/2 y) (+.f64 x x)) 2) |
(/.f64 (*.f64 (+.f64 1/2 y) (*.f64 x 4)) 4) |
(/.f64 (*.f64 (*.f64 x 8) (+.f64 1/2 y)) 8) |
(/.f64 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y))) 16) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y)))) 32) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y))))) 64) |
| Outputs |
|---|
(*.f64 1/2 x) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 y x) |
(*.f64 x y) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 y x) |
(*.f64 x y) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 (+.f64 1/2 y) x) 0) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 0 (*.f64 (+.f64 1/2 y) x)) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 (+.f64 1/2 y) (*.f64 1/2 x)) (*.f64 (+.f64 1/2 y) (*.f64 1/2 x))) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(-.f64 (*.f64 (+.f64 1/2 y) x) 0) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 (+.f64 1/2 y) x) 1) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 (+.f64 1/2 y) (+.f64 x x)) 2) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 (+.f64 1/2 y) (*.f64 x 4)) 4) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 (*.f64 x 8) (+.f64 1/2 y)) 8) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y))) 16) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y)))) 32) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y)))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x 8) (+.f64 1/2 y))))) 64) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
Found 2 expressions with local error:
| New | Error | Program |
|---|---|---|
| 0.0b | (*.f64 (+.f64 1/2 y) x) | |
| ✓ | 0.0b | (+.f64 z (*.f64 (+.f64 1/2 y) x)) |
Compiled 22 to 13 computations (40.9% saved)
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | z | @ | 0 | (+.f64 z (*.f64 (+.f64 1/2 y) x)) |
| 0.0ms | x | @ | inf | (+.f64 z (*.f64 (+.f64 1/2 y) x)) |
| 0.0ms | y | @ | -inf | (+.f64 z (*.f64 (+.f64 1/2 y) x)) |
| 0.0ms | z | @ | -inf | (+.f64 z (*.f64 (+.f64 1/2 y) x)) |
| 0.0ms | z | @ | inf | (+.f64 z (*.f64 (+.f64 1/2 y) x)) |
| 1× | batch-egg-rewrite |
| 1954× | bool.json-1 |
| 1954× | bool.json-2 |
| 1320× | rational.json-simplify-35 |
| 1210× | rational.json-1 |
| 1210× | rational.json-2 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 9 | 19 |
| 1 | 89 | 19 |
| 2 | 232 | 19 |
| 3 | 478 | 19 |
| 4 | 1002 | 19 |
| 5 | 2211 | 19 |
| 6 | 4637 | 19 |
| 7 | 7565 | 19 |
| 1× | node limit |
| Inputs |
|---|
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (+.f64 1/2 y) (+.f64 x x)) (+.f64 z z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 z z) (*.f64 (+.f64 1/2 y) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 z (*.f64 (+.f64 1/2 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 1/2 (+.f64 z (*.f64 (+.f64 1/2 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 1/2 (*.f64 (+.f64 1/2 y) x)) (/.f64 z 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (/.f64 z 2) (*.f64 1/2 (*.f64 (+.f64 1/2 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 z (*.f64 (+.f64 1/2 y) x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 z (*.f64 (+.f64 1/2 y) x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 z (*.f64 (+.f64 1/2 y) x)) (+.f64 z (*.f64 (+.f64 1/2 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 z (*.f64 (+.f64 1/2 y) x)) (+.f64 z (*.f64 (+.f64 1/2 y) x))))))) |
| 1× | egg-herbie |
| 5918× | rational.json-simplify-51 |
| 1948× | rational.json-simplify-35 |
| 1762× | rational.json-simplify-1 |
| 1724× | rational.json-simplify-2 |
| 1220× | rational.json-simplify-41 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 62 | 868 |
| 1 | 122 | 868 |
| 2 | 301 | 694 |
| 3 | 712 | 694 |
| 4 | 1170 | 694 |
| 5 | 2860 | 694 |
| 6 | 3223 | 694 |
| 7 | 3261 | 694 |
| 8 | 3292 | 694 |
| 9 | 3323 | 694 |
| 10 | 3353 | 694 |
| 11 | 4067 | 694 |
| 12 | 4118 | 694 |
| 13 | 4157 | 694 |
| 14 | 4187 | 694 |
| 15 | 4215 | 694 |
| 16 | 4243 | 694 |
| 17 | 4271 | 694 |
| 18 | 4299 | 694 |
| 19 | 5125 | 694 |
| 20 | 5493 | 694 |
| 21 | 5527 | 694 |
| 22 | 5559 | 694 |
| 23 | 5590 | 694 |
| 24 | 5621 | 694 |
| 25 | 5652 | 694 |
| 26 | 5683 | 694 |
| 27 | 5714 | 694 |
| 28 | 5745 | 694 |
| 29 | 5776 | 694 |
| 30 | 5807 | 694 |
| 31 | 5838 | 694 |
| 32 | 5869 | 694 |
| 33 | 5900 | 694 |
| 34 | 5931 | 694 |
| 35 | 5962 | 694 |
| 36 | 5993 | 694 |
| 37 | 6024 | 694 |
| 38 | 6024 | 694 |
| 39 | 6024 | 694 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (+.f64 1/2 y) x) |
z |
z |
(+.f64 (*.f64 1/2 x) z) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
z |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 (+.f64 1/2 y) x) |
(-.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 0) |
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2)) |
(*.f64 1/2 (+.f64 (*.f64 (+.f64 1/2 y) (+.f64 x x)) (+.f64 z z))) |
(*.f64 1/2 (+.f64 (+.f64 z z) (*.f64 (+.f64 1/2 y) (+.f64 x x)))) |
(*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 1) |
(*.f64 1 (+.f64 z (*.f64 (+.f64 1/2 y) x))) |
(*.f64 2 (*.f64 1/2 (+.f64 z (*.f64 (+.f64 1/2 y) x)))) |
(*.f64 2 (+.f64 (*.f64 1/2 (*.f64 (+.f64 1/2 y) x)) (/.f64 z 2))) |
(*.f64 2 (+.f64 (/.f64 z 2) (*.f64 1/2 (*.f64 (+.f64 1/2 y) x)))) |
(*.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2) 1/2) |
(*.f64 4 (/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4)) |
(*.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 1/4) |
(*.f64 (*.f64 1/2 (+.f64 z (*.f64 (+.f64 1/2 y) x))) 2) |
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4)) |
(*.f64 (/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 4) |
(/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 1) |
(/.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2) 2) |
(/.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 4) |
(/.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8) 8) |
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8)) 16) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8))) 32) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8)))) 64) |
| Outputs |
|---|
(*.f64 (+.f64 1/2 y) x) |
z |
z |
(+.f64 (*.f64 1/2 x) z) |
(+.f64 z (*.f64 1/2 x)) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 y x) z)) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
z |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 (+.f64 1/2 y) x) |
(-.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 0) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2)) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 1/2 (+.f64 (*.f64 (+.f64 1/2 y) (+.f64 x x)) (+.f64 z z))) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 1/2 (+.f64 (+.f64 z z) (*.f64 (+.f64 1/2 y) (+.f64 x x)))) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 1) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 1 (+.f64 z (*.f64 (+.f64 1/2 y) x))) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 2 (*.f64 1/2 (+.f64 z (*.f64 (+.f64 1/2 y) x)))) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 2 (+.f64 (*.f64 1/2 (*.f64 (+.f64 1/2 y) x)) (/.f64 z 2))) |
(*.f64 2 (+.f64 (/.f64 z 2) (*.f64 1/2 (*.f64 (+.f64 1/2 y) x)))) |
(*.f64 2 (+.f64 (*.f64 1/2 (*.f64 (+.f64 1/2 y) x)) (/.f64 z 2))) |
(*.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2) 1/2) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 4 (/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4)) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 1/4) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 (*.f64 1/2 (+.f64 z (*.f64 (+.f64 1/2 y) x))) 2) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4)) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(*.f64 (/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 4) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(/.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 1) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(/.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 2) 2) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(/.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 4) 4) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(/.f64 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8) 8) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8)) 16) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8))) 32) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 (+.f64 1/2 y) x)) 8)))) 64) |
(+.f64 (*.f64 1/2 x) (+.f64 z (*.f64 y x))) |
(+.f64 z (+.f64 (*.f64 y x) (*.f64 1/2 x))) |
(+.f64 (*.f64 (+.f64 1/2 y) x) z) |
Compiled 14 to 9 computations (35.7% saved)
Found 1 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (+.f64 (/.f64 x 2) (*.f64 y x)) |
Compiled 19 to 10 computations (47.4% saved)
6 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | x | @ | inf | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| 0.0ms | x | @ | 0 | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| 0.0ms | x | @ | -inf | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| 0.0ms | y | @ | -inf | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| 0.0ms | y | @ | inf | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| 1× | batch-egg-rewrite |
| 1406× | bool.json-1 |
| 1406× | bool.json-2 |
| 1348× | rational.json-1 |
| 1348× | rational.json-2 |
| 1348× | rational.json-4 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 19 |
| 1 | 83 | 19 |
| 2 | 239 | 13 |
| 3 | 500 | 13 |
| 4 | 1029 | 13 |
| 5 | 2284 | 13 |
| 6 | 5023 | 13 |
| 1× | node limit |
| Inputs |
|---|
(+.f64 (/.f64 x 2) (*.f64 y x)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 y 1/2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 y 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 x 1/2) (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 x 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 x 1/4) (*.f64 x (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 1 (+.f64 y y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 y 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 1/2 (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (+.f64 1/4 (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 x (+.f64 y 1/2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (*.f64 x 1/4) (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 2 (+.f64 y 1/2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (*.f64 1/4 (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 y 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 (+.f64 y y) 1/8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (/.f64 x 8) (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 8) (*.f64 1/8 (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 x (+.f64 y 1/2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (+.f64 (*.f64 x (*.f64 y 4)) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (*.f64 x 4) (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y 1/2) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 y 1/2)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x 1/2) (+.f64 y 1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/4) (+.f64 (*.f64 y 4) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 y 1/2)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/4 (+.f64 y 1/2)) (*.f64 x 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (+.f64 y 1/2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (+.f64 y y)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1/4 (*.f64 y 1/2)) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 y 1/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 y 1/2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 x (+.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 x (+.f64 y 1/2)) (*.f64 x (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 x (+.f64 y 1/2)) (*.f64 x (+.f64 y 1/2))))))) |
| 1× | egg-herbie |
| 2920× | rational.json-simplify-2 |
| 1992× | rational.json-simplify-35 |
| 1788× | rational.json-simplify-1 |
| 1076× | rational.json-simplify-51 |
| 990× | rational.json-simplify-43 |
Useful iterations: 4 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 108 | 1032 |
| 1 | 223 | 1004 |
| 2 | 521 | 1004 |
| 3 | 1945 | 970 |
| 4 | 3918 | 954 |
| 5 | 4835 | 954 |
| 6 | 5410 | 954 |
| 7 | 5596 | 954 |
| 8 | 5810 | 954 |
| 9 | 5944 | 954 |
| 10 | 6754 | 954 |
| 11 | 7252 | 954 |
| 12 | 7475 | 954 |
| 13 | 7588 | 954 |
| 14 | 7753 | 954 |
| 15 | 7900 | 954 |
| 16 | 7921 | 954 |
| 17 | 7921 | 954 |
| 18 | 7921 | 954 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (+.f64 1/2 y) x) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) |
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) |
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) |
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) |
(*.f64 1/2 x) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(-.f64 (*.f64 x (+.f64 y 1/2)) 0) |
(*.f64 x (+.f64 y 1/2)) |
(*.f64 2 (*.f64 (*.f64 x 1/2) (+.f64 y 1/2))) |
(*.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 x 1/4))) |
(*.f64 2 (+.f64 (*.f64 x 1/4) (*.f64 x (*.f64 y 1/2)))) |
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y 1/2))) |
(*.f64 (*.f64 x 1/2) (+.f64 1 (+.f64 y y))) |
(*.f64 (*.f64 x (+.f64 y 1/2)) 1) |
(*.f64 1 (*.f64 x (+.f64 y 1/2))) |
(*.f64 (+.f64 x x) (*.f64 1/2 (+.f64 y 1/2))) |
(*.f64 (+.f64 x x) (+.f64 1/4 (*.f64 y 1/2))) |
(*.f64 4 (/.f64 (*.f64 x (+.f64 y 1/2)) 4)) |
(*.f64 4 (*.f64 (*.f64 x 1/4) (+.f64 y 1/2))) |
(*.f64 (*.f64 x (*.f64 2 (+.f64 y 1/2))) 1/2) |
(*.f64 (*.f64 x 4) (*.f64 1/4 (+.f64 y 1/2))) |
(*.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 y 1/4))) |
(*.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 (+.f64 y y) 1/8))) |
(*.f64 8 (*.f64 (/.f64 x 8) (+.f64 y 1/2))) |
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y 1/2)))) |
(*.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 4) 1/4) |
(*.f64 (*.f64 x 8) (*.f64 1/8 (+.f64 y 1/2))) |
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 y 1/2)) 4)) |
(*.f64 1/4 (+.f64 (*.f64 x (*.f64 y 4)) (+.f64 x x))) |
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4)))) |
(*.f64 1/4 (*.f64 (*.f64 x 4) (+.f64 y 1/2))) |
(*.f64 (+.f64 y 1/2) x) |
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (+.f64 y 1/2))) |
(*.f64 (*.f64 2 (+.f64 y 1/2)) (*.f64 x 1/2)) |
(*.f64 (*.f64 (*.f64 x 1/2) (+.f64 y 1/2)) 2) |
(*.f64 (*.f64 x 1/4) (+.f64 (*.f64 y 4) 2)) |
(*.f64 (*.f64 1/2 (+.f64 y 1/2)) (+.f64 x x)) |
(*.f64 (*.f64 1/4 (+.f64 y 1/2)) (*.f64 x 4)) |
(*.f64 (/.f64 (*.f64 x (+.f64 y 1/2)) 4) 4) |
(*.f64 (+.f64 1 (+.f64 y y)) (*.f64 x 1/2)) |
(*.f64 (+.f64 1/4 (*.f64 y 1/2)) (+.f64 x x)) |
(/.f64 (*.f64 x (+.f64 y 1/2)) 1) |
(/.f64 (*.f64 x (*.f64 2 (+.f64 y 1/2))) 2) |
(/.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 4) 4) |
(/.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 8) 8) |
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)) 16) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))) 32) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)))) 64) |
| Outputs |
|---|
(*.f64 (+.f64 1/2 y) x) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) |
(*.f64 x (*.f64 (-.f64 (*.f64 y -1) 1/2) -1)) |
(*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2))) |
(*.f64 x (neg.f64 (-.f64 -1/2 y))) |
(*.f64 x (-.f64 y -1/2)) |
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) |
(*.f64 x (*.f64 (-.f64 (*.f64 y -1) 1/2) -1)) |
(*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2))) |
(*.f64 x (neg.f64 (-.f64 -1/2 y))) |
(*.f64 x (-.f64 y -1/2)) |
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) |
(*.f64 x (*.f64 (-.f64 (*.f64 y -1) 1/2) -1)) |
(*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2))) |
(*.f64 x (neg.f64 (-.f64 -1/2 y))) |
(*.f64 x (-.f64 y -1/2)) |
(*.f64 -1 (*.f64 x (-.f64 (*.f64 -1 y) 1/2))) |
(*.f64 x (*.f64 (-.f64 (*.f64 y -1) 1/2) -1)) |
(*.f64 x (neg.f64 (-.f64 (neg.f64 y) 1/2))) |
(*.f64 x (neg.f64 (-.f64 -1/2 y))) |
(*.f64 x (-.f64 y -1/2)) |
(*.f64 1/2 x) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 y x) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 x) (*.f64 y x)) |
(*.f64 x (+.f64 1/2 y)) |
(-.f64 (*.f64 x (+.f64 y 1/2)) 0) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 x (+.f64 y 1/2)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 2 (*.f64 (*.f64 x 1/2) (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 2 (+.f64 (*.f64 x (*.f64 y 1/2)) (*.f64 x 1/4))) |
(*.f64 2 (+.f64 (*.f64 y (*.f64 1/2 x)) (*.f64 x 1/4))) |
(*.f64 2 (*.f64 x (+.f64 (*.f64 1/2 y) 1/4))) |
(*.f64 x (*.f64 (+.f64 (*.f64 1/2 y) 1/4) 2)) |
(*.f64 x (*.f64 2 (+.f64 (*.f64 1/2 y) 1/4))) |
(*.f64 2 (+.f64 (*.f64 x 1/4) (*.f64 x (*.f64 y 1/2)))) |
(*.f64 2 (+.f64 (*.f64 y (*.f64 1/2 x)) (*.f64 x 1/4))) |
(*.f64 2 (*.f64 x (+.f64 (*.f64 1/2 y) 1/4))) |
(*.f64 x (*.f64 (+.f64 (*.f64 1/2 y) 1/4) 2)) |
(*.f64 x (*.f64 2 (+.f64 (*.f64 1/2 y) 1/4))) |
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x 1/2) (+.f64 1 (+.f64 y y))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x (+.f64 y 1/2)) 1) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 1 (*.f64 x (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 x x) (*.f64 1/2 (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 x x) (+.f64 1/4 (*.f64 y 1/2))) |
(*.f64 (+.f64 x x) (+.f64 (*.f64 1/2 y) 1/4)) |
(*.f64 4 (/.f64 (*.f64 x (+.f64 y 1/2)) 4)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 4 (*.f64 (*.f64 x 1/4) (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x (*.f64 2 (+.f64 y 1/2))) 1/2) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x 4) (*.f64 1/4 (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 y 1/4))) |
(*.f64 x (*.f64 4 (+.f64 1/8 (*.f64 y 1/4)))) |
(*.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 (+.f64 y y) 1/8))) |
(*.f64 x (*.f64 4 (+.f64 1/8 (*.f64 (+.f64 y y) 1/8)))) |
(*.f64 8 (*.f64 (/.f64 x 8) (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 y 1/2)))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 4) 1/4) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x 8) (*.f64 1/8 (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 1/4 (*.f64 (*.f64 x (+.f64 y 1/2)) 4)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 1/4 (+.f64 (*.f64 x (*.f64 y 4)) (+.f64 x x))) |
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4)))) |
(*.f64 1/4 (+.f64 x (+.f64 x (*.f64 y (*.f64 x 4))))) |
(*.f64 (*.f64 x 1/4) (+.f64 2 (*.f64 y 4))) |
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4)))) |
(*.f64 1/4 (+.f64 x (+.f64 x (*.f64 y (*.f64 x 4))))) |
(*.f64 (*.f64 x 1/4) (+.f64 2 (*.f64 y 4))) |
(*.f64 1/4 (*.f64 (*.f64 x 4) (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 y 1/2) x) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 1/16 (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 2 (+.f64 y 1/2)) (*.f64 x 1/2)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 (*.f64 x 1/2) (+.f64 y 1/2)) 2) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x 1/4) (+.f64 (*.f64 y 4) 2)) |
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4)))) |
(*.f64 1/4 (+.f64 x (+.f64 x (*.f64 y (*.f64 x 4))))) |
(*.f64 (*.f64 x 1/4) (+.f64 2 (*.f64 y 4))) |
(*.f64 (*.f64 1/2 (+.f64 y 1/2)) (+.f64 x x)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 1/4 (+.f64 y 1/2)) (*.f64 x 4)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (/.f64 (*.f64 x (+.f64 y 1/2)) 4) 4) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1 (+.f64 y y)) (*.f64 x 1/2)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/4 (*.f64 y 1/2)) (+.f64 x x)) |
(*.f64 (+.f64 x x) (+.f64 (*.f64 1/2 y) 1/4)) |
(/.f64 (*.f64 x (+.f64 y 1/2)) 1) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 x (*.f64 2 (+.f64 y 1/2))) 2) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 4) 4) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 8) 8) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)) 16) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))) 32) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)))) 64) |
(*.f64 x (+.f64 1/2 y)) |
Compiled 1192 to 829 computations (30.5% saved)
9 alts after pruning (4 fresh and 5 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 122 | 4 | 126 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 4 | 4 |
| Total | 122 | 9 | 131 |
| Status | Error | Program |
|---|---|---|
| ✓ | 0.0b | (+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
| ✓ | 30.4b | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| ✓ | 15.9b | (+.f64 (/.f64 x 2) z) |
| ✓ | 0.0b | (+.f64 z (*.f64 (+.f64 1/2 y) x)) |
| ▶ | 17.8b | (+.f64 z (*.f64 y x)) |
| ✓ | 30.4b | (*.f64 (+.f64 1/2 y) x) |
| ▶ | 47.7b | (*.f64 y x) |
| ▶ | 45.3b | (*.f64 1/2 x) |
| 33.3b | z |
Compiled 72 to 51 computations (29.2% saved)
Compiled 8 to 6 computations (25% saved)
Compiled 8 to 4 computations (50% saved)
Found 1 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (+.f64 z (*.f64 y x)) |
Compiled 14 to 5 computations (64.3% saved)
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | x | @ | inf | (+.f64 z (*.f64 y x)) |
| 0.0ms | z | @ | 0 | (+.f64 z (*.f64 y x)) |
| 0.0ms | z | @ | inf | (+.f64 z (*.f64 y x)) |
| 0.0ms | y | @ | inf | (+.f64 z (*.f64 y x)) |
| 0.0ms | x | @ | -inf | (+.f64 z (*.f64 y x)) |
| 1× | batch-egg-rewrite |
| 1618× | bool.json-1 |
| 1618× | bool.json-2 |
| 1586× | rational.json-1 |
| 1586× | rational.json-2 |
| 1586× | rational.json-3 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 13 |
| 1 | 70 | 13 |
| 2 | 196 | 13 |
| 3 | 417 | 13 |
| 4 | 861 | 13 |
| 5 | 1885 | 13 |
| 6 | 3899 | 13 |
| 7 | 6381 | 13 |
| 1× | node limit |
| Inputs |
|---|
(+.f64 z (*.f64 y x)) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 z (*.f64 y x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 z (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 z 1/2) (*.f64 y (*.f64 x 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 z (*.f64 y x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 z (*.f64 y x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 z z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 z (*.f64 y x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 z (*.f64 y x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 z (*.f64 y x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 z (*.f64 y x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (*.f64 y x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 z (*.f64 y x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 z (*.f64 y x)) (+.f64 z (*.f64 y x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 z (*.f64 y x)) (+.f64 z (*.f64 y x))))))) |
| 1× | egg-herbie |
| 5914× | rational.json-simplify-51 |
| 1978× | rational.json-simplify-35 |
| 1696× | rational.json-simplify-2 |
| 1278× | rational.json-simplify-1 |
| 1128× | rational.json-simplify-49 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 54 | 650 |
| 1 | 111 | 650 |
| 2 | 281 | 650 |
| 3 | 690 | 650 |
| 4 | 1105 | 650 |
| 5 | 2508 | 650 |
| 6 | 3350 | 650 |
| 7 | 3408 | 650 |
| 8 | 3438 | 650 |
| 9 | 3464 | 650 |
| 10 | 3490 | 650 |
| 11 | 3516 | 650 |
| 12 | 3565 | 650 |
| 13 | 3591 | 650 |
| 14 | 3617 | 650 |
| 15 | 3643 | 650 |
| 16 | 3669 | 650 |
| 17 | 3695 | 650 |
| 18 | 3721 | 650 |
| 19 | 4550 | 650 |
| 20 | 4922 | 650 |
| 21 | 4954 | 650 |
| 22 | 4984 | 650 |
| 23 | 5013 | 650 |
| 24 | 5042 | 650 |
| 25 | 5071 | 650 |
| 26 | 5100 | 650 |
| 27 | 5129 | 650 |
| 28 | 5158 | 650 |
| 29 | 5187 | 650 |
| 30 | 5216 | 650 |
| 31 | 5245 | 650 |
| 32 | 5274 | 650 |
| 33 | 5303 | 650 |
| 34 | 5332 | 650 |
| 35 | 5361 | 650 |
| 36 | 5390 | 650 |
| 37 | 5419 | 650 |
| 38 | 5448 | 650 |
| 39 | 5477 | 650 |
| 40 | 5477 | 650 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(-.f64 (+.f64 z (*.f64 y x)) 0) |
(*.f64 (+.f64 z (*.f64 y x)) 1) |
(*.f64 1 (+.f64 z (*.f64 y x))) |
(*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 1/2)) |
(*.f64 2 (+.f64 (*.f64 z 1/2) (*.f64 y (*.f64 x 1/2)))) |
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 1/2) |
(*.f64 4 (/.f64 (+.f64 z (*.f64 y x)) 4)) |
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 1/4) |
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 y x)) 2)) |
(*.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 z z))) |
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 1/2) 2) |
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 y x)) 4)) |
(*.f64 (/.f64 (+.f64 z (*.f64 y x)) 4) 4) |
(/.f64 (+.f64 z (*.f64 y x)) 1) |
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 2) |
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 4) |
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 8) 8) |
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)) 16) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) 32) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)))) 64) |
| Outputs |
|---|
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
z |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(*.f64 y x) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(+.f64 (*.f64 y x) z) |
(-.f64 (+.f64 z (*.f64 y x)) 0) |
(+.f64 (*.f64 y x) z) |
(*.f64 (+.f64 z (*.f64 y x)) 1) |
(+.f64 (*.f64 y x) z) |
(*.f64 1 (+.f64 z (*.f64 y x))) |
(+.f64 (*.f64 y x) z) |
(*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 1/2)) |
(+.f64 (*.f64 y x) z) |
(*.f64 2 (+.f64 (*.f64 z 1/2) (*.f64 y (*.f64 x 1/2)))) |
(+.f64 (*.f64 y x) z) |
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 1/2) |
(+.f64 (*.f64 y x) z) |
(*.f64 4 (/.f64 (+.f64 z (*.f64 y x)) 4)) |
(+.f64 (*.f64 y x) z) |
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 1/4) |
(+.f64 (*.f64 y x) z) |
(*.f64 1/2 (*.f64 (+.f64 z (*.f64 y x)) 2)) |
(+.f64 (*.f64 y x) z) |
(*.f64 1/2 (+.f64 (*.f64 y (+.f64 x x)) (+.f64 z z))) |
(+.f64 (*.f64 y x) z) |
(*.f64 (*.f64 (+.f64 z (*.f64 y x)) 1/2) 2) |
(+.f64 (*.f64 y x) z) |
(*.f64 1/4 (*.f64 (+.f64 z (*.f64 y x)) 4)) |
(+.f64 (*.f64 y x) z) |
(*.f64 (/.f64 (+.f64 z (*.f64 y x)) 4) 4) |
(+.f64 (*.f64 y x) z) |
(/.f64 (+.f64 z (*.f64 y x)) 1) |
(+.f64 (*.f64 y x) z) |
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 2) 2) |
(+.f64 (*.f64 y x) z) |
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 4) 4) |
(+.f64 (*.f64 y x) z) |
(/.f64 (*.f64 (+.f64 z (*.f64 y x)) 8) 8) |
(+.f64 (*.f64 y x) z) |
(/.f64 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)) 16) |
(+.f64 (*.f64 y x) z) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) 32) |
(+.f64 (*.f64 y x) z) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 z (*.f64 y x)) 8)))) 64) |
(+.f64 (*.f64 y x) z) |
Compiled 210 to 101 computations (51.9% saved)
9 alts after pruning (1 fresh and 8 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 23 | 0 | 23 |
| Fresh | 0 | 1 | 1 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 7 | 7 |
| Total | 23 | 9 | 32 |
| Status | Error | Program |
|---|---|---|
| ✓ | 0.0b | (+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
| ✓ | 30.4b | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| ✓ | 15.9b | (+.f64 (/.f64 x 2) z) |
| ✓ | 0.0b | (+.f64 z (*.f64 (+.f64 1/2 y) x)) |
| ✓ | 17.8b | (+.f64 z (*.f64 y x)) |
| ✓ | 30.4b | (*.f64 (+.f64 1/2 y) x) |
| ✓ | 47.7b | (*.f64 y x) |
| ✓ | 45.3b | (*.f64 1/2 x) |
| 33.3b | z |
Compiled 72 to 51 computations (29.2% saved)
Compiled 3 to 3 computations (0% saved)
9 alts after pruning (1 fresh and 8 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 0 | 0 | 0 |
| Fresh | 0 | 1 | 1 |
| Picked | 0 | 0 | 0 |
| Done | 0 | 8 | 8 |
| Total | 0 | 9 | 9 |
| Status | Error | Program |
|---|---|---|
| ✓ | 0.0b | (+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
| ✓ | 30.4b | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| ✓ | 15.9b | (+.f64 (/.f64 x 2) z) |
| ✓ | 0.0b | (+.f64 z (*.f64 (+.f64 1/2 y) x)) |
| ✓ | 17.8b | (+.f64 z (*.f64 y x)) |
| ✓ | 30.4b | (*.f64 (+.f64 1/2 y) x) |
| ✓ | 47.7b | (*.f64 y x) |
| ✓ | 45.3b | (*.f64 1/2 x) |
| 33.3b | z |
Compiled 72 to 51 computations (29.2% saved)
| Inputs |
|---|
z |
(*.f64 1/2 x) |
(*.f64 y x) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 z (*.f64 y x)) |
(+.f64 (/.f64 x 2) z) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 (/.f64 x 2) (*.f64 y x)) |
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
| Outputs |
|---|
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
5 calls:
| 7.0ms | (+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
| 6.0ms | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| 6.0ms | y |
| 6.0ms | z |
| 6.0ms | x |
| Error | Segments | Branch |
|---|---|---|
| 0.0b | 1 | x |
| 0.0b | 1 | y |
| 0.0b | 1 | z |
| 0.0b | 1 | (+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
| 0.0b | 1 | (+.f64 (/.f64 x 2) (*.f64 y x)) |
Compiled 91 to 53 computations (41.8% saved)
| Inputs |
|---|
z |
(*.f64 1/2 x) |
(*.f64 y x) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 z (*.f64 y x)) |
(+.f64 (/.f64 x 2) z) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 (/.f64 x 2) (*.f64 y x)) |
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
| Outputs |
|---|
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
5 calls:
| 9.0ms | y |
| 7.0ms | (+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
| 6.0ms | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| 6.0ms | z |
| 6.0ms | x |
| Error | Segments | Branch |
|---|---|---|
| 0.0b | 1 | x |
| 0.0b | 1 | y |
| 0.0b | 1 | z |
| 0.0b | 1 | (+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
| 0.0b | 1 | (+.f64 (/.f64 x 2) (*.f64 y x)) |
Compiled 82 to 48 computations (41.5% saved)
| Inputs |
|---|
z |
(*.f64 1/2 x) |
(*.f64 y x) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 z (*.f64 y x)) |
(+.f64 (/.f64 x 2) z) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(+.f64 (/.f64 x 2) (*.f64 y x)) |
| Outputs |
|---|
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
4 calls:
| 6.0ms | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| 6.0ms | y |
| 5.0ms | z |
| 5.0ms | x |
| Error | Segments | Branch |
|---|---|---|
| 0.0b | 1 | x |
| 0.0b | 1 | y |
| 0.0b | 1 | z |
| 0.0b | 1 | (+.f64 (/.f64 x 2) (*.f64 y x)) |
Compiled 61 to 36 computations (41% saved)
| Inputs |
|---|
z |
(*.f64 1/2 x) |
(*.f64 y x) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 z (*.f64 y x)) |
(+.f64 (/.f64 x 2) z) |
| Outputs |
|---|
(+.f64 z (*.f64 y x)) |
(+.f64 (/.f64 x 2) z) |
(+.f64 z (*.f64 y x)) |
3 calls:
| 18.0ms | z |
| 14.0ms | y |
| 14.0ms | x |
| Error | Segments | Branch |
|---|---|---|
| 9.1b | 3 | x |
| 0.5b | 3 | y |
| 6.1b | 4 | z |
Compiled 37 to 22 computations (40.5% saved)
| 2× | binary-search |
| Time | Left | Right |
|---|---|---|
| 15.0ms | 9.487324653161126e-15 | 3.539394106857276e-6 |
| 14.0ms | -1092865.246552231 | -441.172219646008 |
| 26.0ms | 272× | body | 256 | valid |
Compiled 324 to 234 computations (27.8% saved)
| Inputs |
|---|
z |
(*.f64 1/2 x) |
(*.f64 y x) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 z (*.f64 y x)) |
| Outputs |
|---|
(+.f64 z (*.f64 y x)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 z (*.f64 y x)) |
3 calls:
| 20.0ms | y |
| 13.0ms | z |
| 13.0ms | x |
| Error | Segments | Branch |
|---|---|---|
| 9.5b | 3 | x |
| 13.0b | 5 | y |
| 7.1b | 3 | z |
Compiled 32 to 19 computations (40.6% saved)
| 2× | binary-search |
| Time | Left | Right |
|---|---|---|
| 18.0ms | 9.57931844028648e-66 | 3.6854750541450026e-53 |
| 16.0ms | -2.242523945937996e-114 | -1.6345957694677014e-120 |
| 30.0ms | 304× | body | 256 | valid |
Compiled 360 to 260 computations (27.8% saved)
| Inputs |
|---|
z |
(*.f64 1/2 x) |
(*.f64 y x) |
(*.f64 (+.f64 1/2 y) x) |
| Outputs |
|---|
z |
(*.f64 (+.f64 1/2 y) x) |
z |
3 calls:
| 34.0ms | y |
| 21.0ms | x |
| 14.0ms | z |
| Error | Segments | Branch |
|---|---|---|
| 17.5b | 5 | x |
| 22.3b | 9 | y |
| 13.0b | 3 | z |
Compiled 27 to 18 computations (33.3% saved)
| 2× | binary-search |
| Time | Left | Right |
|---|---|---|
| 14.0ms | 4.2152188518785656e-42 | 7.189669589066486e-39 |
| 8.0ms | -2.6326155856127437e-13 | -6.749407500867904e-14 |
| 20.0ms | 208× | body | 256 | valid |
Compiled 200 to 156 computations (22% saved)
| Inputs |
|---|
z |
(*.f64 1/2 x) |
(*.f64 y x) |
| Outputs |
|---|
z |
(*.f64 1/2 x) |
(*.f64 y x) |
(*.f64 1/2 x) |
(*.f64 y x) |
(*.f64 1/2 x) |
z |
3 calls:
| 25.0ms | y |
| 22.0ms | z |
| 19.0ms | x |
| Error | Segments | Branch |
|---|---|---|
| 22.7b | 6 | x |
| 23.5b | 7 | y |
| 20.5b | 7 | z |
Compiled 22 to 15 computations (31.8% saved)
| 6× | binary-search |
| Time | Left | Right |
|---|---|---|
| 16.0ms | 9.57931844028648e-66 | 3.6854750541450026e-53 |
| 21.0ms | 1.3214887881925273e-103 | 1.3206492797711113e-98 |
| 11.0ms | 2.051864622150385e-150 | 6.297852781218872e-149 |
| 15.0ms | -4.534921399528442e-195 | -1.3955345191677208e-196 |
| 15.0ms | -6.935909836574777e-154 | -1.0196957754558557e-162 |
| 15.0ms | -2.1635491642437608e-26 | -9.327369271500091e-31 |
| 78.0ms | 800× | body | 256 | valid |
Compiled 682 to 545 computations (20.1% saved)
Total -39.4b remaining (-172.8%)
Threshold costs -39.4b (-172.8%)
| Inputs |
|---|
z |
(*.f64 1/2 x) |
| Outputs |
|---|
z |
(*.f64 1/2 x) |
z |
3 calls:
| 13.0ms | y |
| 11.0ms | z |
| 10.0ms | x |
| Error | Segments | Branch |
|---|---|---|
| 25.0b | 3 | x |
| 28.6b | 5 | y |
| 22.8b | 3 | z |
Compiled 19 to 14 computations (26.3% saved)
| 2× | binary-search |
| Time | Left | Right |
|---|---|---|
| 19.0ms | 9.57931844028648e-66 | 3.6854750541450026e-53 |
| 13.0ms | -2.1635491642437608e-26 | -9.327369271500091e-31 |
| 29.0ms | 288× | body | 256 | valid |
Compiled 234 to 193 computations (17.5% saved)
| 1× | egg-herbie |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 65 | 335 |
| 1× | fuel |
| 1× | saturated |
| Inputs |
|---|
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(if (<=.f64 y -450) (+.f64 z (*.f64 y x)) (if (<=.f64 y 8264141345021879/2361183241434822606848) (+.f64 (/.f64 x 2) z) (+.f64 z (*.f64 y x)))) |
(if (<=.f64 z -8695092160762875/88725430211866075506509253892578678509965986412026130405455346579667881849780019937279180995332466499116518750764914298527173050368) (+.f64 z (*.f64 y x)) (if (<=.f64 z 2037940770576765/231584178474632390847141970017375815706539969331281128078915168015826259279872) (*.f64 (+.f64 1/2 y) x) (+.f64 z (*.f64 y x)))) |
(if (<=.f64 z -4951760157141521/19807040628566084398385987584) z (if (<=.f64 z 5363734393030611/766247770432944429179173513575154591809369561091801088) (*.f64 (+.f64 1/2 y) x) z)) |
(if (<=.f64 z -348449143727041/174224571863520493293247799005065324265472) z (if (<=.f64 z -8151758837614529/60383398797144661635864873295812302254670739526663046854019300803929986598274381633378027602842540280663494000492221518396329354078796682120982948022923136698390325231616) (*.f64 1/2 x) (if (<=.f64 z -3419088336006443/5260135901548373507240989882880128665550339802823173859498280903068732154297080822113666536277588451226982968856178217713019432250183803863127814770651880849955223671128444598191663757884322717271293251735781376) (*.f64 y x) (if (<=.f64 z 5758609657015291/230344386280611654799899571593522271174128492457058131614758685317726084130380178960334883128519211886075950624436269830308263222041308144077235977260296389382897664) (*.f64 1/2 x) (if (<=.f64 z 8150226177711805/40347654345107946713373737062547060536401653012956617387979052445947619094013143666088208645002153616185987062074179584) (*.f64 y x) (if (<=.f64 z 970558080017423/431359146674410236714672241392314090778194310760649159697657763987456) (*.f64 1/2 x) z)))))) |
(if (<=.f64 z -321130730858841/178405961588244985132285746181186892047843328) z (if (<=.f64 z 5521397077432451/3450873173395281893717377931138512726225554486085193277581262111899648) (*.f64 1/2 x) z)) |
z |
| Outputs |
|---|
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
(+.f64 z (*.f64 (+.f64 1/2 y) x)) |
(if (<=.f64 y -450) (+.f64 z (*.f64 y x)) (if (<=.f64 y 8264141345021879/2361183241434822606848) (+.f64 (/.f64 x 2) z) (+.f64 z (*.f64 y x)))) |
(if (<=.f64 z -8695092160762875/88725430211866075506509253892578678509965986412026130405455346579667881849780019937279180995332466499116518750764914298527173050368) (+.f64 z (*.f64 y x)) (if (<=.f64 z 2037940770576765/231584178474632390847141970017375815706539969331281128078915168015826259279872) (*.f64 (+.f64 1/2 y) x) (+.f64 z (*.f64 y x)))) |
(if (<=.f64 z -4951760157141521/19807040628566084398385987584) z (if (<=.f64 z 5363734393030611/766247770432944429179173513575154591809369561091801088) (*.f64 (+.f64 1/2 y) x) z)) |
(if (<=.f64 z -348449143727041/174224571863520493293247799005065324265472) z (if (<=.f64 z -8151758837614529/60383398797144661635864873295812302254670739526663046854019300803929986598274381633378027602842540280663494000492221518396329354078796682120982948022923136698390325231616) (*.f64 1/2 x) (if (<=.f64 z -3419088336006443/5260135901548373507240989882880128665550339802823173859498280903068732154297080822113666536277588451226982968856178217713019432250183803863127814770651880849955223671128444598191663757884322717271293251735781376) (*.f64 y x) (if (<=.f64 z 5758609657015291/230344386280611654799899571593522271174128492457058131614758685317726084130380178960334883128519211886075950624436269830308263222041308144077235977260296389382897664) (*.f64 1/2 x) (if (<=.f64 z 8150226177711805/40347654345107946713373737062547060536401653012956617387979052445947619094013143666088208645002153616185987062074179584) (*.f64 y x) (if (<=.f64 z 970558080017423/431359146674410236714672241392314090778194310760649159697657763987456) (*.f64 1/2 x) z)))))) |
(if (<=.f64 z -321130730858841/178405961588244985132285746181186892047843328) z (if (<=.f64 z 5521397077432451/3450873173395281893717377931138512726225554486085193277581262111899648) (*.f64 1/2 x) z)) |
z |
Compiled 168 to 105 computations (37.5% saved)
| 1× | egg-herbie |
| 9732× | rational.json-simplify-41 |
| 5888× | rational.json-simplify-1 |
| 388× | rational.json-simplify-35 |
| 2× | rational.json-simplify-2 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 10 | 25 |
| 1 | 17 | 25 |
| 2 | 25 | 25 |
| 3 | 35 | 25 |
| 4 | 45 | 25 |
| 5 | 69 | 25 |
| 6 | 133 | 25 |
| 7 | 330 | 25 |
| 8 | 414 | 25 |
| 9 | 418 | 25 |
| 10 | 422 | 25 |
| 11 | 426 | 25 |
| 12 | 430 | 25 |
| 13 | 1320 | 25 |
| 14 | 1707 | 25 |
| 15 | 1711 | 25 |
| 16 | 1715 | 25 |
| 17 | 1719 | 25 |
| 18 | 1723 | 25 |
| 19 | 1727 | 25 |
| 20 | 1731 | 25 |
| 21 | 1735 | 25 |
| 22 | 1739 | 25 |
| 23 | 1743 | 25 |
| 24 | 1747 | 25 |
| 25 | 1751 | 25 |
| 26 | 1755 | 25 |
| 27 | 1759 | 25 |
| 28 | 1763 | 25 |
| 29 | 1767 | 25 |
| 30 | 1771 | 25 |
| 31 | 1775 | 25 |
| 32 | 1779 | 25 |
| 33 | 1783 | 25 |
| 34 | 1787 | 25 |
| 35 | 1791 | 25 |
| 36 | 1795 | 25 |
| 37 | 1799 | 25 |
| 38 | 1803 | 25 |
| 39 | 1807 | 25 |
| 40 | 1811 | 25 |
| 41 | 1815 | 25 |
| 42 | 1819 | 25 |
| 43 | 1823 | 25 |
| 44 | 1827 | 25 |
| 45 | 1831 | 25 |
| 46 | 1835 | 25 |
| 47 | 1839 | 25 |
| 48 | 1843 | 25 |
| 49 | 1847 | 25 |
| 50 | 1851 | 25 |
| 51 | 1855 | 25 |
| 52 | 1859 | 25 |
| 53 | 1863 | 25 |
| 54 | 1867 | 25 |
| 55 | 1871 | 25 |
| 56 | 1875 | 25 |
| 57 | 1879 | 25 |
| 58 | 1883 | 25 |
| 59 | 1887 | 25 |
| 60 | 1891 | 25 |
| 61 | 1895 | 25 |
| 62 | 1899 | 25 |
| 63 | 1903 | 25 |
| 64 | 1907 | 25 |
| 65 | 1911 | 25 |
| 66 | 1915 | 25 |
| 67 | 1919 | 25 |
| 68 | 1923 | 25 |
| 69 | 1927 | 25 |
| 70 | 1931 | 25 |
| 71 | 1935 | 25 |
| 72 | 1939 | 25 |
| 73 | 1943 | 25 |
| 74 | 1947 | 25 |
| 75 | 1951 | 25 |
| 76 | 1955 | 25 |
| 77 | 1959 | 25 |
| 78 | 1963 | 25 |
| 79 | 1967 | 25 |
| 80 | 1971 | 25 |
| 81 | 1975 | 25 |
| 82 | 1979 | 25 |
| 83 | 1983 | 25 |
| 84 | 1987 | 25 |
| 85 | 1991 | 25 |
| 86 | 1995 | 25 |
| 87 | 1999 | 25 |
| 88 | 2003 | 25 |
| 89 | 2007 | 25 |
| 90 | 2011 | 25 |
| 91 | 2015 | 25 |
| 92 | 2019 | 25 |
| 93 | 2023 | 25 |
| 94 | 2027 | 25 |
| 95 | 2031 | 25 |
| 96 | 2035 | 25 |
| 97 | 2039 | 25 |
| 98 | 2043 | 25 |
| 99 | 2047 | 25 |
| 100 | 2051 | 25 |
| 101 | 2055 | 25 |
| 102 | 2059 | 25 |
| 103 | 2063 | 25 |
| 104 | 2067 | 25 |
| 105 | 2071 | 25 |
| 106 | 2075 | 25 |
| 107 | 2079 | 25 |
| 108 | 2083 | 25 |
| 109 | 2087 | 25 |
| 110 | 2091 | 25 |
| 111 | 2095 | 25 |
| 112 | 2099 | 25 |
| 113 | 2103 | 25 |
| 114 | 2107 | 25 |
| 115 | 2111 | 25 |
| 116 | 2115 | 25 |
| 117 | 2119 | 25 |
| 118 | 2123 | 25 |
| 119 | 2127 | 25 |
| 120 | 2131 | 25 |
| 121 | 2135 | 25 |
| 122 | 2139 | 25 |
| 123 | 2143 | 25 |
| 124 | 2147 | 25 |
| 125 | 2151 | 25 |
| 126 | 2155 | 25 |
| 127 | 2159 | 25 |
| 128 | 2163 | 25 |
| 129 | 2167 | 25 |
| 130 | 2171 | 25 |
| 131 | 2175 | 25 |
| 132 | 2179 | 25 |
| 133 | 2183 | 25 |
| 134 | 2187 | 25 |
| 135 | 2191 | 25 |
| 136 | 2195 | 25 |
| 137 | 2199 | 25 |
| 138 | 2203 | 25 |
| 139 | 2207 | 25 |
| 140 | 2211 | 25 |
| 141 | 2215 | 25 |
| 142 | 2219 | 25 |
| 143 | 2223 | 25 |
| 144 | 2227 | 25 |
| 145 | 2231 | 25 |
| 146 | 2235 | 25 |
| 147 | 2239 | 25 |
| 148 | 2243 | 25 |
| 149 | 2247 | 25 |
| 150 | 2251 | 25 |
| 151 | 2255 | 25 |
| 152 | 2259 | 25 |
| 153 | 2263 | 25 |
| 154 | 2267 | 25 |
| 155 | 2271 | 25 |
| 156 | 2275 | 25 |
| 157 | 2279 | 25 |
| 158 | 2283 | 25 |
| 159 | 2287 | 25 |
| 160 | 2291 | 25 |
| 161 | 2295 | 25 |
| 162 | 2299 | 25 |
| 163 | 2303 | 25 |
| 164 | 7482 | 25 |
| 165 | 7486 | 25 |
| 166 | 7490 | 25 |
| 167 | 7494 | 25 |
| 168 | 7498 | 25 |
| 169 | 7502 | 25 |
| 170 | 7506 | 25 |
| 171 | 7510 | 25 |
| 172 | 7514 | 25 |
| 173 | 7518 | 25 |
| 174 | 7522 | 25 |
| 175 | 7526 | 25 |
| 176 | 7530 | 25 |
| 177 | 7534 | 25 |
| 178 | 7538 | 25 |
| 179 | 7542 | 25 |
| 180 | 7546 | 25 |
| 181 | 7550 | 25 |
| 182 | 7554 | 25 |
| 183 | 7558 | 25 |
| 184 | 7562 | 25 |
| 185 | 7566 | 25 |
| 186 | 7570 | 25 |
| 187 | 7574 | 25 |
| 188 | 7578 | 25 |
| 189 | 7582 | 25 |
| 190 | 7586 | 25 |
| 191 | 7590 | 25 |
| 192 | 7594 | 25 |
| 193 | 7598 | 25 |
| 194 | 7602 | 25 |
| 1× | node limit |
Compiled 39 to 21 computations (46.2% saved)
Compiled 144 to 77 computations (46.5% saved)
Loading profile data...