Time bar (total: 18.3s)
| 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.8s | 8254× | body | 256 | valid |
| 91.0ms | 566× | body | 256 | infinite |
| 0.0ms | 2× | body | 1024 | 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 |
|---|---|---|
| ▶ | 0b | (+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
Compiled 12 to 8 computations (33.3% saved)
Found 1 expressions with local error:
| New | Error | Program |
|---|---|---|
| ✓ | 0.0b | (+.f64 (*.f64 x y) z) |
Compiled 27 to 11 computations (59.3% saved)
9 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 0.0ms | z | @ | inf | (+.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) |
| 0.0ms | y | @ | inf | (+.f64 (*.f64 x y) z) |
| 1× | batch-egg-rewrite |
| 1524× | rational.json-simplify-35 |
| 1424× | rational.json-simplify-1 |
| 1386× | exponential.json-3 |
| 1386× | rational.json-1 |
| 1386× | rational.json-2 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 13 |
| 1 | 46 | 13 |
| 2 | 102 | 13 |
| 3 | 214 | 13 |
| 4 | 397 | 13 |
| 5 | 896 | 13 |
| 6 | 2314 | 13 |
| 7 | 4169 | 13 |
| 8 | 5353 | 13 |
| 9 | 6864 | 13 |
| 10 | 7675 | 13 |
| 11 | 7675 | 13 |
| 1× | node limit |
| Inputs |
|---|
(+.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 1 (+.f64 (*.f64 x y) z))))) (#(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 (*.f64 (+.f64 (*.f64 x y) z) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 (*.f64 x y) z) 1/4))))) (#(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 (*.f64 (+.f64 (*.f64 x y) z) 8) 1/8)))) (#(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) 1/2) 2)))) (#(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/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 (*.f64 x y) z) 8))))) (#(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 (+.f64 (*.f64 x y) z) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (*.f64 x y) z) 1))))) |
| 1× | egg-herbie |
| 5682× | rational.json-simplify-51 |
| 3554× | rational.json-simplify-35 |
| 1356× | rational.json-simplify-49 |
| 1150× | rational.json-simplify-2 |
| 1126× | rational.json-simplify-1 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 55 | 689 |
| 1 | 124 | 689 |
| 2 | 427 | 689 |
| 3 | 1176 | 689 |
| 4 | 1887 | 689 |
| 5 | 2785 | 689 |
| 6 | 3273 | 689 |
| 7 | 3347 | 689 |
| 8 | 3395 | 689 |
| 9 | 3427 | 689 |
| 10 | 3459 | 689 |
| 11 | 3491 | 689 |
| 12 | 3523 | 689 |
| 13 | 3555 | 689 |
| 14 | 3587 | 689 |
| 15 | 3619 | 689 |
| 16 | 3651 | 689 |
| 17 | 3683 | 689 |
| 18 | 3715 | 689 |
| 19 | 4626 | 689 |
| 20 | 4885 | 689 |
| 21 | 4978 | 689 |
| 22 | 5067 | 689 |
| 23 | 5154 | 689 |
| 24 | 5240 | 689 |
| 25 | 5453 | 689 |
| 26 | 5453 | 689 |
| 27 | 5539 | 689 |
| 28 | 5625 | 689 |
| 29 | 5711 | 689 |
| 30 | 5797 | 689 |
| 31 | 5883 | 689 |
| 32 | 5969 | 689 |
| 33 | 6055 | 689 |
| 34 | 6141 | 689 |
| 35 | 6227 | 689 |
| 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) |
(-.f64 (+.f64 (*.f64 x y) z) 0) |
(*.f64 (+.f64 (*.f64 x y) z) 1) |
(*.f64 1 (+.f64 (*.f64 x y) z)) |
(*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 1/2)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 1/2) |
(*.f64 4 (*.f64 (+.f64 (*.f64 x y) z) 1/4)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 1/4) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 8) 1/8) |
(*.f64 1/2 (*.f64 (+.f64 (*.f64 x y) z) 2)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 1/2) 2) |
(*.f64 1/4 (*.f64 (+.f64 (*.f64 x y) z) 4)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 1/4) 4) |
(*.f64 1/8 (*.f64 (+.f64 (*.f64 x y) z) 8)) |
(/.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 (+.f64 (*.f64 x y) z) 8) 8) |
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)) 16) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8))) 32) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)))) 64) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8))))) 128) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)))))) 256) |
(pow.f64 (+.f64 (*.f64 x y) z) 1) |
| 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)) |
(-.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 1 (+.f64 (*.f64 x y) z)) |
(+.f64 z (*.f64 y x)) |
(*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 1/2)) |
(+.f64 z (*.f64 y x)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 2) 1/2) |
(+.f64 z (*.f64 y x)) |
(*.f64 4 (*.f64 (+.f64 (*.f64 x y) z) 1/4)) |
(+.f64 z (*.f64 y x)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 4) 1/4) |
(+.f64 z (*.f64 y x)) |
(*.f64 (*.f64 (+.f64 (*.f64 x y) z) 8) 1/8) |
(+.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) 1/2) 2) |
(+.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/4) 4) |
(+.f64 z (*.f64 y x)) |
(*.f64 1/8 (*.f64 (+.f64 (*.f64 x y) z) 8)) |
(+.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 (+.f64 (*.f64 x y) z) 8) 8) |
(+.f64 z (*.f64 y x)) |
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)) 16) |
(+.f64 z (*.f64 y x)) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8))) 32) |
(+.f64 z (*.f64 y x)) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)))) 64) |
(+.f64 z (*.f64 y x)) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8))))) 128) |
(+.f64 z (*.f64 y x)) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 x y) z) 8)))))) 256) |
(+.f64 z (*.f64 y x)) |
(pow.f64 (+.f64 (*.f64 x y) z) 1) |
(+.f64 z (*.f64 y x)) |
Compiled 352 to 201 computations (42.9% saved)
3 alts after pruning (2 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 25 | 2 | 27 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 25 | 3 | 28 |
| Status | Error | Program |
|---|---|---|
| ✓ | 0b | (+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
| ▶ | 24.6b | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| ▶ | 18.0b | (+.f64 (/.f64 x 2) z) |
Compiled 30 to 21 computations (30% saved)
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 | @ | 0 | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| 0.0ms | y | @ | inf | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| 1× | batch-egg-rewrite |
| 1444× | rational.json-1 |
| 1444× | rational.json-2 |
| 1444× | rational.json-3 |
| 1442× | exponential.json-3 |
| 1442× | rational.json-4 |
Useful iterations: 2 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 8 | 19 |
| 1 | 56 | 19 |
| 2 | 130 | 13 |
| 3 | 263 | 13 |
| 4 | 495 | 13 |
| 5 | 1146 | 13 |
| 6 | 2979 | 13 |
| 7 | 5653 | 13 |
| 8 | 6978 | 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 x (*.f64 1/2 (+.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 y (+.f64 y 1)))))) (#(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 x (*.f64 1/4 (+.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 x (+.f64 y y))) 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 8 (*.f64 (+.f64 y 1/2) (*.f64 x 1/8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 x (*.f64 x (+.f64 y y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x 4) (+.f64 y 1/2)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 8) (*.f64 (+.f64 y 1/2) 1/8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 16 (*.f64 (/.f64 x 16) (+.f64 y 1/2)))))) (#(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 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y 1/2) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 x 8)) (*.f64 (+.f64 y 1/2) 1/16))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (+.f64 y 1)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 1/2 (+.f64 y 1/2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/4) (*.f64 2 (+.f64 y (+.f64 y 1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/4) (+.f64 2 (*.f64 y 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/4) (*.f64 4 (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 y 1/2) (*.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (*.f64 x 8) (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (*.f64 2 (*.f64 x 8))) (*.f64 1/32 (+.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 y (+.f64 y 1))) (*.f64 x 1/4))))) (#(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 x (*.f64 1/4 (+.f64 y 1/2))) 4)))) (#(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 (+.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 (+.f64 y 1/2) (*.f64 x 1/8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 2 (*.f64 y 4)) (*.f64 x 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1/8 (*.f64 y 1/4)) (*.f64 x 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y 1/2) 1/8) (*.f64 x 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y 1/2) 1/16) (*.f64 2 (*.f64 x 8)))))) (#(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 x (+.f64 y y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x 4) (+.f64 y 1/2)) 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 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 y 1/2)) 1))))) |
| 1× | egg-herbie |
| 2160× | rational.json-simplify-2 |
| 1628× | rational.json-simplify-35 |
| 1620× | rational.json-simplify-1 |
| 1596× | rational.json-simplify-53 |
| 1202× | exponential.json-simplify-26 |
Useful iterations: 4 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 124 | 1079 |
| 1 | 266 | 1063 |
| 2 | 634 | 1063 |
| 3 | 1476 | 1047 |
| 4 | 3228 | 1031 |
| 5 | 5149 | 1031 |
| 6 | 5323 | 1031 |
| 7 | 5465 | 1031 |
| 8 | 5602 | 1031 |
| 9 | 5712 | 1031 |
| 10 | 5808 | 1031 |
| 11 | 7639 | 1031 |
| 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 x (*.f64 1/2 (+.f64 y 1/2)))) |
(*.f64 (*.f64 x 1/2) (+.f64 y (+.f64 y 1))) |
(*.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 x (*.f64 1/4 (+.f64 y 1/2)))) |
(*.f64 (+.f64 x (*.f64 x (+.f64 y y))) 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 8 (*.f64 (+.f64 y 1/2) (*.f64 x 1/8))) |
(*.f64 1/2 (+.f64 x (*.f64 x (+.f64 y y)))) |
(*.f64 (*.f64 (*.f64 x 4) (+.f64 y 1/2)) 1/4) |
(*.f64 (*.f64 x 8) (*.f64 (+.f64 y 1/2) 1/8)) |
(*.f64 16 (*.f64 (/.f64 x 16) (+.f64 y 1/2))) |
(*.f64 1/4 (*.f64 (*.f64 x 4) (+.f64 y 1/2))) |
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4)))) |
(*.f64 (+.f64 y 1/2) x) |
(*.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 8) 1/8) |
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 (+.f64 y 1/2) 1/16)) |
(*.f64 (+.f64 y (+.f64 y 1)) (*.f64 x 1/2)) |
(*.f64 (*.f64 x (*.f64 1/2 (+.f64 y 1/2))) 2) |
(*.f64 (*.f64 x 1/4) (*.f64 2 (+.f64 y (+.f64 y 1)))) |
(*.f64 (*.f64 x 1/4) (+.f64 2 (*.f64 y 4))) |
(*.f64 (*.f64 x 1/4) (*.f64 4 (+.f64 y 1/2))) |
(*.f64 1/8 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)) |
(*.f64 1/8 (*.f64 (+.f64 y 1/2) (*.f64 x 8))) |
(*.f64 1/8 (*.f64 (*.f64 x 8) (+.f64 y 1/2))) |
(*.f64 (*.f64 2 (*.f64 2 (*.f64 x 8))) (*.f64 1/32 (+.f64 y 1/2))) |
(*.f64 (*.f64 2 (+.f64 y (+.f64 y 1))) (*.f64 x 1/4)) |
(*.f64 (*.f64 1/4 (+.f64 y 1/2)) (*.f64 x 4)) |
(*.f64 (*.f64 x (*.f64 1/4 (+.f64 y 1/2))) 4) |
(*.f64 (*.f64 1/2 (+.f64 y 1/2)) (+.f64 x x)) |
(*.f64 (+.f64 1 (+.f64 y y)) (*.f64 x 1/2)) |
(*.f64 (+.f64 1/4 (*.f64 y 1/2)) (+.f64 x x)) |
(*.f64 (*.f64 (+.f64 y 1/2) (*.f64 x 1/8)) 8) |
(*.f64 (+.f64 2 (*.f64 y 4)) (*.f64 x 1/4)) |
(*.f64 (+.f64 1/8 (*.f64 y 1/4)) (*.f64 x 4)) |
(*.f64 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4))) 1/4) |
(*.f64 (*.f64 (+.f64 y 1/2) 1/8) (*.f64 x 8)) |
(*.f64 (*.f64 (+.f64 y 1/2) 1/16) (*.f64 2 (*.f64 x 8))) |
(/.f64 (*.f64 x (+.f64 y 1/2)) 1) |
(/.f64 (+.f64 x (*.f64 x (+.f64 y y))) 2) |
(/.f64 (*.f64 (*.f64 x 4) (+.f64 y 1/2)) 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 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)))) 64) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))))) 128) |
(pow.f64 (*.f64 x (+.f64 y 1/2)) 1) |
| 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 (-.f64 -1/2 y) (neg.f64 x)) |
(*.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 (-.f64 -1/2 y) (neg.f64 x)) |
(*.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 (-.f64 -1/2 y) (neg.f64 x)) |
(*.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 (-.f64 -1/2 y) (neg.f64 x)) |
(*.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 x (*.f64 1/2 (+.f64 y 1/2)))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x 1/2) (+.f64 y (+.f64 y 1))) |
(*.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 1/4 (*.f64 1/2 y))) |
(*.f64 4 (*.f64 x (*.f64 1/4 (+.f64 y 1/2)))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 x (*.f64 x (+.f64 y y))) 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 4 (*.f64 x (+.f64 1/8 (*.f64 y 1/4)))) |
(*.f64 x (*.f64 4 (+.f64 1/8 (*.f64 y 1/4)))) |
(*.f64 8 (*.f64 (+.f64 y 1/2) (*.f64 x 1/8))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 1/2 (+.f64 x (*.f64 x (+.f64 y y)))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 (*.f64 x 4) (+.f64 y 1/2)) 1/4) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x 8) (*.f64 (+.f64 y 1/2) 1/8)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 16 (*.f64 (/.f64 x 16) (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 1/4 (*.f64 (*.f64 x 4) (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4)))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 y 1/2) x) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 (*.f64 x (+.f64 y 1/2)) 8) 1/8) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 2 (*.f64 x 8)) (*.f64 (+.f64 y 1/2) 1/16)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 y (+.f64 y 1)) (*.f64 x 1/2)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x (*.f64 1/2 (+.f64 y 1/2))) 2) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x 1/4) (*.f64 2 (+.f64 y (+.f64 y 1)))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x 1/4) (+.f64 2 (*.f64 y 4))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 x 1/4) (*.f64 4 (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 1/8 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 1/8 (*.f64 (+.f64 y 1/2) (*.f64 x 8))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 1/8 (*.f64 (*.f64 x 8) (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 2 (*.f64 2 (*.f64 x 8))) (*.f64 1/32 (+.f64 y 1/2))) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 2 (+.f64 y (+.f64 y 1))) (*.f64 x 1/4)) |
(*.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 x (*.f64 1/4 (+.f64 y 1/2))) 4) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 1/2 (+.f64 y 1/2)) (+.f64 x x)) |
(*.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 1/4 (*.f64 1/2 y))) |
(*.f64 (*.f64 (+.f64 y 1/2) (*.f64 x 1/8)) 8) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 2 (*.f64 y 4)) (*.f64 x 1/4)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/8 (*.f64 y 1/4)) (*.f64 x 4)) |
(*.f64 (*.f64 x 4) (+.f64 1/8 (*.f64 y 1/4))) |
(*.f64 4 (*.f64 x (+.f64 1/8 (*.f64 y 1/4)))) |
(*.f64 x (*.f64 4 (+.f64 1/8 (*.f64 y 1/4)))) |
(*.f64 (+.f64 (+.f64 x x) (*.f64 x (*.f64 y 4))) 1/4) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 (+.f64 y 1/2) 1/8) (*.f64 x 8)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (*.f64 (+.f64 y 1/2) 1/16) (*.f64 2 (*.f64 x 8))) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 x (+.f64 y 1/2)) 1) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (+.f64 x (*.f64 x (+.f64 y y))) 2) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 (*.f64 x 4) (+.f64 y 1/2)) 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 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8)))) 64) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 y 1/2)) 8))))) 128) |
(*.f64 x (+.f64 1/2 y)) |
(pow.f64 (*.f64 x (+.f64 y 1/2)) 1) |
(*.f64 x (+.f64 1/2 y)) |
Compiled 584 to 416 computations (28.8% saved)
6 alts after pruning (3 fresh and 3 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 63 | 3 | 66 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 2 | 2 |
| Total | 63 | 6 | 69 |
| Status | Error | Program |
|---|---|---|
| ✓ | 0b | (+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
| ✓ | 24.6b | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| ✓ | 18.0b | (+.f64 (/.f64 x 2) z) |
| ▶ | 24.6b | (*.f64 (+.f64 y 1/2) x) |
| ▶ | 45.4b | (*.f64 y x) |
| ▶ | 42.3b | (*.f64 1/2 x) |
Compiled 50 to 36 computations (28% 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 (+.f64 y 1/2) x) |
Compiled 14 to 9 computations (35.7% saved)
6 calls:
| Time | Variable | Point | Expression | |
|---|---|---|---|---|
| 1.0ms | x | @ | inf | (*.f64 (+.f64 y 1/2) x) |
| 0.0ms | x | @ | -inf | (*.f64 (+.f64 y 1/2) x) |
| 0.0ms | y | @ | inf | (*.f64 (+.f64 y 1/2) x) |
| 0.0ms | x | @ | 0 | (*.f64 (+.f64 y 1/2) x) |
| 0.0ms | y | @ | 0 | (*.f64 (+.f64 y 1/2) x) |
| 1× | batch-egg-rewrite |
| 2438× | rational.json-simplify-35 |
| 1530× | rational.json-simplify-1 |
| 1250× | exponential.json-3 |
| 1250× | rational.json-1 |
| 1250× | rational.json-2 |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 7 | 13 |
| 1 | 46 | 13 |
| 2 | 99 | 13 |
| 3 | 201 | 13 |
| 4 | 367 | 13 |
| 5 | 808 | 13 |
| 6 | 2045 | 13 |
| 7 | 3650 | 13 |
| 8 | 4783 | 13 |
| 9 | 6200 | 13 |
| 10 | 6939 | 13 |
| 11 | 6939 | 13 |
| 12 | 6939 | 13 |
| 1× | node limit |
| Inputs |
|---|
(*.f64 (+.f64 y 1/2) x) |
| Outputs |
|---|
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 y 1/2) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 y 1/2) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (*.f64 (+.f64 y 1/2) x)) (*.f64 1/2 (*.f64 (+.f64 y 1/2) x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 y 1/2) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y 1/2) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y 1/2) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y 1/2) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y 1/2) (*.f64 x 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8)))))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 y 1/2) x) 1))))) |
| 1× | egg-herbie |
| 3292× | rational.json-simplify-2 |
| 2438× | rational.json-simplify-35 |
| 1616× | rational.json-simplify-53 |
| 1260× | rational.json-simplify-1 |
| 970× | exponential.json-simplify-26 |
Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 51 | 705 |
| 1 | 128 | 489 |
| 2 | 246 | 489 |
| 3 | 557 | 489 |
| 4 | 2126 | 489 |
| 5 | 4357 | 489 |
| 6 | 5040 | 489 |
| 7 | 5190 | 489 |
| 8 | 5298 | 489 |
| 9 | 5404 | 489 |
| 10 | 5508 | 489 |
| 11 | 6451 | 489 |
| 12 | 6805 | 489 |
| 13 | 6805 | 489 |
| 14 | 6805 | 489 |
| 15 | 6909 | 489 |
| 16 | 7013 | 489 |
| 17 | 7117 | 489 |
| 18 | 7914 | 489 |
| 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 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 (+.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 (+.f64 y 1/2) x) 0) |
(+.f64 0 (*.f64 (+.f64 y 1/2) x)) |
(+.f64 (*.f64 1/2 (*.f64 (+.f64 y 1/2) x)) (*.f64 1/2 (*.f64 (+.f64 y 1/2) x))) |
(-.f64 (*.f64 (+.f64 y 1/2) x) 0) |
(/.f64 (*.f64 (+.f64 y 1/2) x) 1) |
(/.f64 (*.f64 (+.f64 y 1/2) (+.f64 x x)) 2) |
(/.f64 (*.f64 (+.f64 y 1/2) (*.f64 x 4)) 4) |
(/.f64 (*.f64 (+.f64 y 1/2) (*.f64 x 8)) 8) |
(/.f64 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8))) 16) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8)))) 32) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8))))) 64) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8)))))) 128) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8))))))) 256) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8)))))))) 512) |
(pow.f64 (*.f64 (+.f64 y 1/2) x) 1) |
| 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 1/2 y) x) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(*.f64 (+.f64 1/2 y) x) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 (+.f64 y 1/2) x) 0) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 0 (*.f64 (+.f64 y 1/2) x)) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(+.f64 (*.f64 1/2 (*.f64 (+.f64 y 1/2) x)) (*.f64 1/2 (*.f64 (+.f64 y 1/2) x))) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(-.f64 (*.f64 (+.f64 y 1/2) x) 0) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 (+.f64 y 1/2) x) 1) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 (+.f64 y 1/2) (+.f64 x x)) 2) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 (+.f64 y 1/2) (*.f64 x 4)) 4) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 (+.f64 y 1/2) (*.f64 x 8)) 8) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8))) 16) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8)))) 32) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8))))) 64) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8)))))) 128) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8))))))) 256) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y 1/2) (*.f64 x 8)))))))) 512) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
(pow.f64 (*.f64 (+.f64 y 1/2) x) 1) |
(+.f64 (*.f64 1/2 x) (*.f64 x y)) |
(*.f64 x (+.f64 1/2 y)) |
Compiled 225 to 173 computations (23.1% saved)
6 alts after pruning (0 fresh and 6 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 22 | 0 | 22 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 5 | 5 |
| Total | 22 | 6 | 28 |
| Status | Error | Program |
|---|---|---|
| ✓ | 0b | (+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z)) |
| ✓ | 24.6b | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| ✓ | 18.0b | (+.f64 (/.f64 x 2) z) |
| ✓ | 24.6b | (*.f64 (+.f64 y 1/2) x) |
| ✓ | 45.4b | (*.f64 y x) |
| ✓ | 42.3b | (*.f64 1/2 x) |
Compiled 50 to 36 computations (28% saved)
| Inputs |
|---|
(*.f64 1/2 x) |
(*.f64 y x) |
(*.f64 (+.f64 y 1/2) x) |
(+.f64 (/.f64 x 2) z) |
(+.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 (/.f64 x 2) (*.f64 y x)) z) |
5 calls:
| 7.0ms | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| 6.0ms | y |
| 5.0ms | (+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
| 5.0ms | x |
| 5.0ms | z |
| Error | Segments | Branch |
|---|---|---|
| 0b | 1 | x |
| 0b | 1 | y |
| 0b | 1 | z |
| 0b | 1 | (+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
| 0b | 1 | (+.f64 (/.f64 x 2) (*.f64 y x)) |
Compiled 78 to 48 computations (38.5% saved)
| Inputs |
|---|
(*.f64 1/2 x) |
(*.f64 y x) |
(*.f64 (+.f64 y 1/2) x) |
(+.f64 (/.f64 x 2) z) |
(+.f64 (/.f64 x 2) (*.f64 y x)) |
| Outputs |
|---|
(+.f64 (/.f64 x 2) (*.f64 y x)) |
(+.f64 (/.f64 x 2) z) |
(*.f64 (+.f64 y 1/2) x) |
4 calls:
| 19.0ms | (+.f64 (/.f64 x 2) (*.f64 y x)) |
| 18.0ms | x |
| 17.0ms | y |
| 13.0ms | z |
| Error | Segments | Branch |
|---|---|---|
| 11.1b | 3 | x |
| 9.6b | 3 | y |
| 9.3b | 3 | z |
| 7.5b | 3 | (+.f64 (/.f64 x 2) (*.f64 y x)) |
Compiled 48 to 31 computations (35.4% saved)
| 2× | left-value |
| Time | Left | Right |
|---|---|---|
| 0.0ms | 0.018327116675337464 | 0.12957436269076839 |
| 0.0ms | -4.203953516024421e+53 | -1.962377150746823e+49 |
Compiled 18 to 13 computations (27.8% saved)
| Inputs |
|---|
(*.f64 1/2 x) |
(*.f64 y x) |
(*.f64 (+.f64 y 1/2) x) |
(+.f64 (/.f64 x 2) z) |
| Outputs |
|---|
(+.f64 (/.f64 x 2) z) |
(*.f64 (+.f64 y 1/2) x) |
(+.f64 (/.f64 x 2) z) |
3 calls:
| 15.0ms | y |
| 15.0ms | x |
| 14.0ms | z |
| Error | Segments | Branch |
|---|---|---|
| 11.1b | 3 | x |
| 9.6b | 3 | y |
| 9.3b | 3 | z |
Compiled 31 to 21 computations (32.3% saved)
| 2× | binary-search |
| Time | Left | Right |
|---|---|---|
| 15.0ms | 3.1275488866852324e+60 | 2.03497943971059e+64 |
| 230.0ms | -7434848004.866526 | -1.0786686893861212e-5 |
| 242.0ms | 288× | body | 256 | valid |
Compiled 342 to 265 computations (22.5% saved)
| Inputs |
|---|
(*.f64 1/2 x) |
(*.f64 y x) |
(*.f64 (+.f64 y 1/2) x) |
| Outputs |
|---|
(*.f64 (+.f64 y 1/2) x) |
3 calls:
| 5.0ms | x |
| 3.0ms | z |
| 3.0ms | y |
| Error | Segments | Branch |
|---|---|---|
| 24.6b | 1 | x |
| 24.6b | 1 | y |
| 24.6b | 1 | z |
Compiled 26 to 18 computations (30.8% saved)
Total -36.1b remaining (-139.7%)
Threshold costs -36.1b (-139.7%)
| Inputs |
|---|
(*.f64 1/2 x) |
(*.f64 y x) |
| Outputs |
|---|
(*.f64 y x) |
(*.f64 1/2 x) |
(*.f64 y x) |
3 calls:
| 14.0ms | z |
| 12.0ms | x |
| 11.0ms | y |
| Error | Segments | Branch |
|---|---|---|
| 38.6b | 3 | x |
| 25.9b | 3 | y |
| 39.2b | 5 | z |
Compiled 21 to 15 computations (28.6% saved)
| 2× | binary-search |
| Time | Left | Right |
|---|---|---|
| 20.0ms | 8.4704683012555e-37 | 6.556297864104827e-14 |
| 10.0ms | -0.2357207742419431 | -0.020894584043479523 |
| 26.0ms | 272× | body | 256 | valid |
Compiled 256 to 200 computations (21.9% saved)
| 1× | egg-herbie |
Useful iterations: 0 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 36 | 240 |
| 1× | done |
| 1× | saturated |
| Inputs |
|---|
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
(if (<=.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) -399999999999999997288379469744651190584683376777625600) (+.f64 (/.f64 x 2) (*.f64 y x)) (if (<=.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) 5764607523034235/288230376151711744) (+.f64 (/.f64 x 2) z) (*.f64 (+.f64 y 1/2) x))) |
(if (<=.f64 z -5072854620270127/2305843009213693952) (+.f64 (/.f64 x 2) z) (if (<=.f64 z 7499999999999999977215437904545111766798829944974359643815936) (*.f64 (+.f64 y 1/2) x) (+.f64 (/.f64 x 2) z))) |
(*.f64 (+.f64 y 1/2) x) |
(if (<=.f64 y -8286623314361713/36028797018963968) (*.f64 y x) (if (<=.f64 y 2574915281713591/39614081257132168796771975168) (*.f64 1/2 x) (*.f64 y x))) |
(*.f64 1/2 x) |
| Outputs |
|---|
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z) |
(if (<=.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) -399999999999999997288379469744651190584683376777625600) (+.f64 (/.f64 x 2) (*.f64 y x)) (if (<=.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) 5764607523034235/288230376151711744) (+.f64 (/.f64 x 2) z) (*.f64 (+.f64 y 1/2) x))) |
(if (<=.f64 z -5072854620270127/2305843009213693952) (+.f64 (/.f64 x 2) z) (if (<=.f64 z 7499999999999999977215437904545111766798829944974359643815936) (*.f64 (+.f64 y 1/2) x) (+.f64 (/.f64 x 2) z))) |
(*.f64 (+.f64 y 1/2) x) |
(if (<=.f64 y -8286623314361713/36028797018963968) (*.f64 y x) (if (<=.f64 y 2574915281713591/39614081257132168796771975168) (*.f64 1/2 x) (*.f64 y x))) |
(*.f64 1/2 x) |
Compiled 112 to 74 computations (33.9% saved)
Compiled 97 to 57 computations (41.2% saved)
Loading profile data...