
Time bar (total: 2.6s)
| 1× | search |
| Probability | Valid | Unknown | Precondition | Infinite | Domain | Can't | Iter |
|---|---|---|---|---|---|---|---|
| 0% | 0% | 99.9% | 0.1% | 0% | 0% | 0% | 0 |
| 100% | 99.9% | 0% | 0.1% | 0% | 0% | 0% | 1 |
Compiled 9 to 8 computations (11.1% saved)
| 401.0ms | 8 256× | 0 | valid |
ival-mult!: 82.0ms (54.7% of total)ival-add!: 66.0ms (44% of total)adjust: 1.0ms (0.7% of total)Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 26 | 54 |
| 1 | 177 | 50 |
| 2 | 1185 | 50 |
| 1× | node-limit |
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 50.2% | (+.f64 (*.f64 d1 d2) (*.f64 d1 d3)) |
(abs d1)
(negabs d1)
(sort d2 d3)
Compiled 14 to 12 computations (14.3% saved)
| Inputs |
|---|
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3)) |
(*.f64 d1 d2) |
d1 |
d2 |
(*.f64 d1 d3) |
d3 |
| Outputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 (+.f64 d2 d3))) |
#s(approx (* d1 d2) (*.f64 d1 d2)) |
#s(approx d1 d1) |
#s(approx (* d1 d3) (*.f64 d1 d3)) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 #s(literal -1 binary64) (*.f64 d1 (fma.f64 #s(literal -1 binary64) d2 (*.f64 #s(literal -1 binary64) d3))))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (fma.f64 d1 d2 (*.f64 d1 d3))) |
#s(approx d2 d2) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d2 (+.f64 d1 (/.f64 (*.f64 d1 d3) d2)))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 #s(literal -1 binary64) (*.f64 d2 (fma.f64 #s(literal -1 binary64) d1 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 d1 d3) d2)))))) |
#s(approx d3 d3) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 #s(literal -1 binary64) (*.f64 d3 (fma.f64 #s(literal -1 binary64) d1 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 d1 d2) d3)))))) |
9 calls:
| Time | Variable | Point |
|---|---|---|
| 1.0ms | d1 | -inf |
| 1.0ms | d1 | inf |
| 1.0ms | d3 | 0 |
| 1.0ms | d1 | 0 |
| 1.0ms | d2 | -inf |
| Inputs |
|---|
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3)) |
(*.f64 d1 d2) |
d1 |
d2 |
(*.f64 d1 d3) |
d3 |
| Outputs |
|---|
(*.f64 (+.f64 d3 d2) d1) |
(*.f64 d1 (+.f64 d3 d2)) |
(*.f64 d1 (-.f64 d2 (neg.f64 d3))) |
(*.f64 d1 (-.f64 d3 (neg.f64 d2))) |
(*.f64 (/.f64 (*.f64 (+.f64 d3 d2) d1) d1) (/.f64 (*.f64 (-.f64 d2 d3) d1) (-.f64 d2 d3))) |
(*.f64 d1 d2) |
(*.f64 d2 d1) |
d1 |
(neg.f64 (neg.f64 d1)) |
d2 |
(*.f64 d1 d3) |
(*.f64 d3 d1) |
(neg.f64 (neg.f64 (*.f64 d1 d3))) |
d3 |
Compiled 247 to 77 computations (68.8% saved)
3 alts after pruning (3 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 18 | 3 | 21 |
| Fresh | 0 | 0 | 0 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 19 | 3 | 22 |
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 52.2% | (*.f64 (+.f64 d3 d2) d1) |
| ▶ | 51.8% | #s(approx (+ (* d1 d2) (* d1 d3)) (fma.f64 d1 d2 (*.f64 d1 d3))) |
| ▶ | 46.2% | #s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
Compiled 36 to 25 computations (30.6% saved)
| Inputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
(*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3))) |
d3 |
(+.f64 d1 (/.f64 (*.f64 d1 d2) d3)) |
d1 |
(/.f64 (*.f64 d1 d2) d3) |
(*.f64 d1 d2) |
d2 |
#s(approx (+ (* d1 d2) (* d1 d3)) (fma.f64 d1 d2 (*.f64 d1 d3))) |
(fma.f64 d1 d2 (*.f64 d1 d3)) |
(*.f64 d1 d3) |
(*.f64 (+.f64 d3 d2) d1) |
(+.f64 d3 d2) |
| Outputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 (+.f64 d2 d3))) |
#s(approx (* d3 (+ d1 (/ (* d1 d2) d3))) (*.f64 d1 (*.f64 d3 (+.f64 #s(literal 1 binary64) (/.f64 d2 d3))))) |
#s(approx (+ d1 (/ (* d1 d2) d3)) (*.f64 d1 (+.f64 #s(literal 1 binary64) (/.f64 d2 d3)))) |
#s(approx d1 d1) |
#s(approx (/ (* d1 d2) d3) (/.f64 (*.f64 d1 d2) d3)) |
#s(approx (* d1 d2) (*.f64 d1 d2)) |
#s(approx (* d1 d3) (*.f64 d1 d3)) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 #s(literal -1 binary64) (*.f64 d1 (fma.f64 #s(literal -1 binary64) d2 (*.f64 #s(literal -1 binary64) d3))))) |
#s(approx (* d3 (+ d1 (/ (* d1 d2) d3))) (*.f64 #s(literal -1 binary64) (*.f64 d1 (*.f64 d3 (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 d2 d3)) #s(literal 1 binary64)))))) |
#s(approx (+ d1 (/ (* d1 d2) d3)) (*.f64 #s(literal -1 binary64) (*.f64 d1 (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 d2 d3)) #s(literal 1 binary64))))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (fma.f64 d1 d2 (*.f64 d1 d3))) |
#s(approx (+ d1 (/ (* d1 d2) d3)) (+.f64 d1 (/.f64 (*.f64 d1 d2) d3))) |
#s(approx d2 d2) |
#s(approx (+ d3 d2) d3) |
#s(approx (+ d3 d2) (+.f64 d2 d3)) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d2 (+.f64 d1 (/.f64 (*.f64 d1 d3) d2)))) |
#s(approx (+ d1 (/ (* d1 d2) d3)) (*.f64 d2 (+.f64 (/.f64 d1 d2) (/.f64 d1 d3)))) |
#s(approx (+ d3 d2) (*.f64 d2 (+.f64 #s(literal 1 binary64) (/.f64 d3 d2)))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 #s(literal -1 binary64) (*.f64 d2 (fma.f64 #s(literal -1 binary64) d1 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 d1 d3) d2)))))) |
#s(approx (+ d1 (/ (* d1 d2) d3)) (*.f64 #s(literal -1 binary64) (*.f64 d2 (fma.f64 #s(literal -1 binary64) (/.f64 d1 d2) (*.f64 #s(literal -1 binary64) (/.f64 d1 d3)))))) |
#s(approx (+ d3 d2) (*.f64 #s(literal -1 binary64) (*.f64 d2 (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 d3 d2)) #s(literal 1 binary64))))) |
#s(approx (+ d1 (/ (* d1 d2) d3)) (/.f64 (fma.f64 d1 d2 (*.f64 d1 d3)) d3)) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
#s(approx (+ d3 d2) (*.f64 d3 (+.f64 #s(literal 1 binary64) (/.f64 d2 d3)))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 #s(literal -1 binary64) (*.f64 d3 (fma.f64 #s(literal -1 binary64) d1 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 d1 d2) d3)))))) |
#s(approx (+ d3 d2) (*.f64 #s(literal -1 binary64) (*.f64 d3 (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 d2 d3)) #s(literal 1 binary64))))) |
9 calls:
| Time | Variable | Point |
|---|---|---|
| 3.0ms | d2 | inf |
| 2.0ms | d1 | -inf |
| 2.0ms | d3 | -inf |
| 2.0ms | d2 | -inf |
| 2.0ms | d1 | inf |
| Inputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
(*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3))) |
d3 |
(+.f64 d1 (/.f64 (*.f64 d1 d2) d3)) |
d1 |
(/.f64 (*.f64 d1 d2) d3) |
(*.f64 d1 d2) |
d2 |
#s(approx (+ (* d1 d2) (* d1 d3)) (fma.f64 d1 d2 (*.f64 d1 d3))) |
(fma.f64 d1 d2 (*.f64 d1 d3)) |
(*.f64 d1 d3) |
(*.f64 (+.f64 d3 d2) d1) |
(+.f64 d3 d2) |
| Outputs |
|---|
#s(approx (* (+ d3 d2) d1) (*.f64 d3 (fma.f64 (/.f64 d1 d3) d2 d1))) |
(*.f64 d3 (fma.f64 (/.f64 d1 d3) d2 d1)) |
(*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) d3) |
(*.f64 d1 (fma.f64 (/.f64 d2 d3) d3 d3)) |
(*.f64 (*.f64 d1 (-.f64 d1 (/.f64 (*.f64 (*.f64 d1 d2) d2) (*.f64 d3 d3)))) (/.f64 d3 (-.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
(*.f64 d1 (+.f64 d3 (/.f64 (*.f64 d3 d2) d3))) |
d3 |
(neg.f64 (neg.f64 d3)) |
(*.f64 (+.f64 (/.f64 d2 d3) #s(literal 1 binary64)) d1) |
(*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) (/.f64 (-.f64 d1 (/.f64 (*.f64 d1 d2) d3)) (-.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
(*.f64 (/.f64 (*.f64 d1 (-.f64 d1 (/.f64 (*.f64 (*.f64 d1 d2) d2) (*.f64 d3 d3)))) (*.f64 d1 (-.f64 d1 (/.f64 (*.f64 (*.f64 d1 d2) d2) (*.f64 d3 d3))))) (fma.f64 (/.f64 d1 d3) d2 d1)) |
(*.f64 (fma.f64 (-.f64 (/.f64 (*.f64 d1 d2) d3) d1) (/.f64 (*.f64 d1 d2) d3) (*.f64 d1 d1)) (/.f64 (fma.f64 (/.f64 d1 d3) d2 d1) (fma.f64 (-.f64 (/.f64 (*.f64 d1 d2) d3) d1) (/.f64 (*.f64 d1 d2) d3) (*.f64 d1 d1)))) |
(*.f64 (/.f64 (fma.f64 (*.f64 d1 d1) d1 (pow.f64 (/.f64 (*.f64 d1 d2) d3) #s(literal 3 binary64))) (-.f64 (*.f64 (*.f64 d1 d1) (*.f64 d1 d1)) (pow.f64 (*.f64 (-.f64 (/.f64 (*.f64 d1 d2) d3) d1) (/.f64 (*.f64 d1 d2) d3)) #s(literal 2 binary64)))) (-.f64 (*.f64 d1 d1) (*.f64 (-.f64 (/.f64 (*.f64 d1 d2) d3) d1) (/.f64 (*.f64 d1 d2) d3)))) |
d1 |
(neg.f64 (neg.f64 d1)) |
(*.f64 (/.f64 d1 d3) d2) |
(*.f64 (/.f64 d2 d3) d1) |
(*.f64 d1 (/.f64 d2 d3)) |
(*.f64 d2 (/.f64 d1 d3)) |
(*.f64 (neg.f64 d1) (/.f64 d2 (neg.f64 d3))) |
(*.f64 d1 d2) |
(*.f64 d2 d1) |
(*.f64 (neg.f64 d1) (neg.f64 d2)) |
(*.f64 (neg.f64 d2) (neg.f64 d1)) |
(*.f64 (neg.f64 (neg.f64 d2)) d1) |
d2 |
#s(approx (* (+ d3 d2) d1) (*.f64 (+.f64 d3 d2) d1)) |
(*.f64 (+.f64 d3 d2) d1) |
(*.f64 d1 (+.f64 d3 d2)) |
(*.f64 (*.f64 (+.f64 d3 d2) (-.f64 d3 d2)) (/.f64 d1 (-.f64 d3 d2))) |
(*.f64 d1 (-.f64 d3 (neg.f64 d2))) |
(*.f64 d1 (-.f64 d2 (neg.f64 d3))) |
(*.f64 d1 d3) |
(*.f64 d3 d1) |
(neg.f64 (neg.f64 (*.f64 d1 d3))) |
(*.f64 (+.f64 d3 d2) d1) |
(*.f64 d1 (+.f64 d3 d2)) |
(*.f64 (*.f64 (+.f64 d3 d2) (-.f64 d3 d2)) (/.f64 d1 (-.f64 d3 d2))) |
(*.f64 d1 (-.f64 d3 (neg.f64 d2))) |
(*.f64 d1 (-.f64 d2 (neg.f64 d3))) |
(*.f64 (+.f64 d3 d2) (/.f64 (-.f64 d3 d2) (-.f64 d3 d2))) |
(*.f64 (/.f64 (*.f64 (+.f64 d3 d2) (-.f64 d3 d2)) (-.f64 (*.f64 (*.f64 d3 d3) d3) (*.f64 (*.f64 d2 d2) d2))) (fma.f64 d2 (+.f64 d3 d2) (*.f64 d3 d3))) |
(*.f64 (/.f64 (*.f64 (+.f64 d3 d2) (-.f64 d3 d2)) (*.f64 (+.f64 d3 d2) (-.f64 d3 d2))) (+.f64 d3 d2)) |
(*.f64 (fma.f64 (-.f64 d2 d3) d2 (*.f64 d3 d3)) (/.f64 (+.f64 d3 d2) (fma.f64 (-.f64 d2 d3) d2 (*.f64 d3 d3)))) |
(*.f64 (/.f64 (fma.f64 (*.f64 d2 d2) d2 (*.f64 (*.f64 d3 d3) d3)) (fma.f64 (*.f64 (*.f64 (*.f64 d3 d3) d3) (*.f64 d3 d3)) d3 (pow.f64 (*.f64 (-.f64 d2 d3) d2) #s(literal 3 binary64)))) (fma.f64 (*.f64 (-.f64 d2 d3) d2) (-.f64 (*.f64 (-.f64 d2 d3) d2) (*.f64 d3 d3)) (*.f64 (*.f64 d3 d3) (*.f64 d3 d3)))) |
Compiled 1 365 to 309 computations (77.4% saved)
5 alts after pruning (2 fresh and 3 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 65 | 2 | 67 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 3 | 3 |
| Done | 0 | 0 | 0 |
| Total | 65 | 5 | 70 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 52.2% | (*.f64 (+.f64 d3 d2) d1) |
| ▶ | 31.9% | (*.f64 #s(approx (+ d3 d2) d3) d1) |
| ✓ | 51.8% | #s(approx (+ (* d1 d2) (* d1 d3)) (fma.f64 d1 d2 (*.f64 d1 d3))) |
| ▶ | 43.9% | #s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) d3)) |
| ✓ | 46.2% | #s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
Compiled 59 to 41 computations (30.5% saved)
| Inputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) d3)) |
(*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) d3) |
(fma.f64 (/.f64 d1 d3) d2 d1) |
(/.f64 d1 d3) |
d1 |
d3 |
d2 |
(*.f64 #s(approx (+ d3 d2) d3) d1) |
#s(approx (+ d3 d2) d3) |
| Outputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 (+.f64 d2 d3))) |
#s(approx (* (+ (* (/ d1 d3) d2) d1) d3) (*.f64 d1 (*.f64 d3 (+.f64 #s(literal 1 binary64) (/.f64 d2 d3))))) |
#s(approx (+ (* (/ d1 d3) d2) d1) (*.f64 d1 (+.f64 #s(literal 1 binary64) (/.f64 d2 d3)))) |
#s(approx (/ d1 d3) (/.f64 d1 d3)) |
#s(approx d1 d1) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 #s(literal -1 binary64) (*.f64 d1 (fma.f64 #s(literal -1 binary64) d2 (*.f64 #s(literal -1 binary64) d3))))) |
#s(approx (* (+ (* (/ d1 d3) d2) d1) d3) (*.f64 #s(literal -1 binary64) (*.f64 d1 (*.f64 d3 (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 d2 d3)) #s(literal 1 binary64)))))) |
#s(approx (+ (* (/ d1 d3) d2) d1) (*.f64 #s(literal -1 binary64) (*.f64 d1 (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 d2 d3)) #s(literal 1 binary64))))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 d3)) |
#s(approx (+ (* d1 d2) (* d1 d3)) (fma.f64 d1 d2 (*.f64 d1 d3))) |
#s(approx (+ (* (/ d1 d3) d2) d1) (+.f64 d1 (/.f64 (*.f64 d1 d2) d3))) |
#s(approx d2 d2) |
#s(approx (+ d3 d2) d3) |
#s(approx (+ d3 d2) (+.f64 d2 d3)) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 d2)) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d2 (+.f64 d1 (/.f64 (*.f64 d1 d3) d2)))) |
#s(approx (+ (* (/ d1 d3) d2) d1) (/.f64 (*.f64 d1 d2) d3)) |
#s(approx (+ (* (/ d1 d3) d2) d1) (*.f64 d2 (+.f64 (/.f64 d1 d2) (/.f64 d1 d3)))) |
#s(approx (+ d3 d2) (*.f64 d2 (+.f64 #s(literal 1 binary64) (/.f64 d3 d2)))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 #s(literal -1 binary64) (*.f64 d2 (fma.f64 #s(literal -1 binary64) d1 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 d1 d3) d2)))))) |
#s(approx (+ (* (/ d1 d3) d2) d1) (*.f64 #s(literal -1 binary64) (*.f64 d2 (fma.f64 #s(literal -1 binary64) (/.f64 d1 d2) (*.f64 #s(literal -1 binary64) (/.f64 d1 d3)))))) |
#s(approx (+ d3 d2) (*.f64 #s(literal -1 binary64) (*.f64 d2 (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 d3 d2)) #s(literal 1 binary64))))) |
#s(approx (+ (* (/ d1 d3) d2) d1) (/.f64 (fma.f64 d1 d2 (*.f64 d1 d3)) d3)) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
#s(approx (+ d3 d2) (*.f64 d3 (+.f64 #s(literal 1 binary64) (/.f64 d2 d3)))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 #s(literal -1 binary64) (*.f64 d3 (fma.f64 #s(literal -1 binary64) d1 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 d1 d2) d3)))))) |
#s(approx (+ d3 d2) (*.f64 #s(literal -1 binary64) (*.f64 d3 (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 d2 d3)) #s(literal 1 binary64))))) |
9 calls:
| Time | Variable | Point |
|---|---|---|
| 2.0ms | d1 | -inf |
| 1.0ms | d1 | inf |
| 1.0ms | d3 | -inf |
| 1.0ms | d1 | 0 |
| 1.0ms | d2 | -inf |
| Inputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) d3)) |
(*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) d3) |
(fma.f64 (/.f64 d1 d3) d2 d1) |
(/.f64 d1 d3) |
d1 |
d3 |
d2 |
(*.f64 #s(approx (+ d3 d2) d3) d1) |
#s(approx (+ d3 d2) d3) |
| Outputs |
|---|
#s(approx (* (+ d3 d2) d1) (*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) d3)) |
(*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) d3) |
(*.f64 d3 (fma.f64 (/.f64 d1 d3) d2 d1)) |
(*.f64 (*.f64 (-.f64 (/.f64 (*.f64 d2 d1) d3) d1) (fma.f64 (/.f64 d1 d3) d2 d1)) (/.f64 d3 (-.f64 (/.f64 (*.f64 d2 d1) d3) d1))) |
(*.f64 (/.f64 (*.f64 (*.f64 (-.f64 (/.f64 (*.f64 d2 d1) d3) d1) (fma.f64 (/.f64 d1 d3) d2 d1)) d3) (-.f64 (pow.f64 (/.f64 (*.f64 d2 d1) d3) #s(literal 3 binary64)) (*.f64 (*.f64 d1 d1) d1))) (fma.f64 d1 (fma.f64 (/.f64 d1 d3) d2 d1) (/.f64 (*.f64 (*.f64 d1 d1) (*.f64 d2 d2)) (*.f64 d3 d3)))) |
(*.f64 (/.f64 (*.f64 (*.f64 (-.f64 (/.f64 (*.f64 d2 d1) d3) d1) (fma.f64 (/.f64 d1 d3) d2 d1)) d3) (*.f64 (-.f64 (/.f64 (*.f64 d2 d1) d3) d1) (fma.f64 (/.f64 d1 d3) d2 d1))) (fma.f64 (/.f64 d1 d3) d2 d1)) |
(*.f64 (/.f64 (*.f64 (-.f64 (/.f64 (*.f64 d2 d1) d3) d1) (fma.f64 (/.f64 d1 d3) d2 d1)) (-.f64 (pow.f64 (/.f64 (*.f64 d2 d1) d3) #s(literal 3 binary64)) (*.f64 (*.f64 d1 d1) d1))) (fma.f64 d1 (fma.f64 (/.f64 d1 d3) d2 d1) (/.f64 (*.f64 (*.f64 d1 d1) (*.f64 d2 d2)) (*.f64 d3 d3)))) |
(*.f64 (/.f64 (*.f64 (-.f64 (/.f64 (*.f64 d2 d1) d3) d1) (fma.f64 (/.f64 d1 d3) d2 d1)) (*.f64 (-.f64 (/.f64 (*.f64 d2 d1) d3) d1) (fma.f64 (/.f64 d1 d3) d2 d1))) (fma.f64 (/.f64 d1 d3) d2 d1)) |
(*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) (/.f64 (-.f64 (/.f64 (*.f64 d2 d1) d3) d1) (-.f64 (/.f64 (*.f64 d2 d1) d3) d1))) |
(*.f64 (fma.f64 (/.f64 (*.f64 d2 d1) d3) (-.f64 (/.f64 (*.f64 d2 d1) d3) d1) (*.f64 d1 d1)) (/.f64 (fma.f64 (/.f64 d1 d3) d2 d1) (fma.f64 (/.f64 (*.f64 d2 d1) d3) (-.f64 (/.f64 (*.f64 d2 d1) d3) d1) (*.f64 d1 d1)))) |
(*.f64 (/.f64 (fma.f64 (*.f64 d1 d1) d1 (pow.f64 (/.f64 (*.f64 d2 d1) d3) #s(literal 3 binary64))) (-.f64 (pow.f64 (/.f64 (*.f64 d2 d1) d3) (+.f64 #s(literal 2 binary64) #s(literal 2 binary64))) (*.f64 (*.f64 d1 d1) (*.f64 (-.f64 d1 (/.f64 (*.f64 d2 d1) d3)) (-.f64 d1 (/.f64 (*.f64 d2 d1) d3)))))) (-.f64 (/.f64 (*.f64 (*.f64 d1 d1) (*.f64 d2 d2)) (*.f64 d3 d3)) (*.f64 (-.f64 d1 (/.f64 (*.f64 d2 d1) d3)) d1))) |
(/.f64 d1 d3) |
(/.f64 (neg.f64 d1) (neg.f64 d3)) |
(neg.f64 (neg.f64 (/.f64 d1 d3))) |
d1 |
(neg.f64 (neg.f64 d1)) |
d3 |
(neg.f64 (neg.f64 d3)) |
d2 |
(*.f64 #s(approx (+ d3 d2) d3) d1) |
#s(approx (+ d3 d2) d3) |
Compiled 1 015 to 206 computations (79.7% saved)
6 alts after pruning (1 fresh and 5 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 40 | 1 | 41 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 2 | 2 |
| Done | 0 | 3 | 3 |
| Total | 40 | 6 | 46 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 52.2% | (*.f64 (+.f64 d3 d2) d1) |
| ✓ | 31.9% | (*.f64 #s(approx (+ d3 d2) d3) d1) |
| ✓ | 51.8% | #s(approx (+ (* d1 d2) (* d1 d3)) (fma.f64 d1 d2 (*.f64 d1 d3))) |
| ✓ | 43.9% | #s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) d3)) |
| ✓ | 46.2% | #s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
| ▶ | 27.9% | #s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 d2)) |
Compiled 70 to 49 computations (30% saved)
| Inputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 d2)) |
(*.f64 d1 d2) |
d1 |
d2 |
| Outputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 (+.f64 d2 d3))) |
#s(approx (* d1 d2) (*.f64 d1 d2)) |
#s(approx d1 d1) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 #s(literal -1 binary64) (*.f64 d1 (fma.f64 #s(literal -1 binary64) d2 (*.f64 #s(literal -1 binary64) d3))))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 d3)) |
#s(approx (+ (* d1 d2) (* d1 d3)) (fma.f64 d1 d2 (*.f64 d1 d3))) |
#s(approx d2 d2) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d2 (+.f64 d1 (/.f64 (*.f64 d1 d3) d2)))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 #s(literal -1 binary64) (*.f64 d2 (fma.f64 #s(literal -1 binary64) d1 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 d1 d3) d2)))))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 #s(literal -1 binary64) (*.f64 d3 (fma.f64 #s(literal -1 binary64) d1 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 d1 d2) d3)))))) |
9 calls:
| Time | Variable | Point |
|---|---|---|
| 1.0ms | d1 | -inf |
| 1.0ms | d1 | inf |
| 0.0ms | d2 | -inf |
| 0.0ms | d2 | inf |
| 0.0ms | d1 | 0 |
| Inputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 d2)) |
(*.f64 d1 d2) |
d1 |
d2 |
| Outputs |
|---|
#s(approx (* d1 (+ d2 d3)) (*.f64 d1 d2)) |
(*.f64 d1 d2) |
(*.f64 d2 d1) |
d1 |
(neg.f64 (neg.f64 d1)) |
d2 |
Compiled 177 to 50 computations (71.8% saved)
6 alts after pruning (0 fresh and 6 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 12 | 0 | 12 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 5 | 5 |
| Total | 12 | 6 | 18 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 52.2% | (*.f64 (+.f64 d3 d2) d1) |
| ✓ | 31.9% | (*.f64 #s(approx (+ d3 d2) d3) d1) |
| ✓ | 51.8% | #s(approx (+ (* d1 d2) (* d1 d3)) (fma.f64 d1 d2 (*.f64 d1 d3))) |
| ✓ | 43.9% | #s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) d3)) |
| ✓ | 46.2% | #s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
| ✓ | 27.9% | #s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 d2)) |
Compiled 70 to 49 computations (30% saved)
Total -0.0b remaining (-0%)
Threshold costs -0b (-0%)
| Inputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 d2)) |
| Outputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 d2)) |
| Inputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 d2)) |
(*.f64 #s(approx (+ d3 d2) d3) d1) |
| Outputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 d2)) |
(*.f64 #s(approx (+ d3 d2) d3) d1) |
| Inputs |
|---|
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d1 d2)) |
(*.f64 #s(approx (+ d3 d2) d3) d1) |
(*.f64 (+.f64 d3 d2) d1) |
#s(approx (+ (* d1 d2) (* d1 d3)) (fma.f64 d1 d2 (*.f64 d1 d3))) |
(+.f64 (*.f64 d1 d2) (*.f64 d1 d3)) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 (fma.f64 (/.f64 d1 d3) d2 d1) d3)) |
#s(approx (+ (* d1 d2) (* d1 d3)) (*.f64 d3 (+.f64 d1 (/.f64 (*.f64 d1 d2) d3)))) |
| Outputs |
|---|
(*.f64 (+.f64 d3 d2) d1) |
12 calls:
| 3.0ms | d2 |
| 3.0ms | d3 |
| 2.0ms | d1 |
| 2.0ms | (+.f64 (*.f64 d1 d2) (*.f64 d1 d3)) |
| 1.0ms | d1 |
| Accuracy | Segments | Branch |
|---|---|---|
| 27.9% | 1 | d1 |
| 27.9% | 1 | d2 |
| 27.9% | 1 | d3 |
| 27.9% | 1 | (+.f64 (*.f64 d1 d2) (*.f64 d1 d3)) |
| 51.2% | 2 | (+.f64 (*.f64 d1 d2) (*.f64 d1 d3)) |
| 44.0% | 2 | d2 |
| 45.7% | 2 | d3 |
| 33.7% | 2 | d1 |
| 52.2% | 1 | (+.f64 (*.f64 d1 d2) (*.f64 d1 d3)) |
| 52.2% | 1 | d1 |
| 52.2% | 1 | d2 |
| 52.2% | 1 | d3 |
Compiled 107 to 70 computations (34.6% saved)
| 1× | left-value |
| Time | Left | Right |
|---|---|---|
| 0.0ms | -8.255169357537012e-218 | -3.953776289700823e-225 |
Compiled 10 to 12 computations (-20% saved)
| 1× | done |
Compiled 44 to 18 computations (59.1% saved)
(sort d2 d3)
(negabs d1)
(abs d1)
Compiled 432 to 267 computations (38.2% saved)
Loading profile data...