
Time bar (total: 3.6s)
| 1× | search |
| Probability | Valid | Unknown | Precondition | Infinite | Domain | Can't | Iter |
|---|---|---|---|---|---|---|---|
| 0% | 0% | 99.8% | 0.2% | 0% | 0% | 0% | 0 |
| 100% | 99.8% | 0% | 0.2% | 0% | 0% | 0% | 1 |
Compiled 11 to 10 computations (9.1% saved)
| 424.0ms | 8 256× | 0 | valid |
ival-mult!: 157.0ms (89.8% of total)ival-sub!: 17.0ms (9.7% of total)adjust: 1.0ms (0.6% of total)Useful iterations: 1 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 46 | 112 |
| 1 | 161 | 107 |
| 2 | 489 | 107 |
| 3 | 1165 | 107 |
| 4 | 1560 | 107 |
| 5 | 1600 | 107 |
| 6 | 1600 | 107 |
| 1× | saturated |
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 98.7% | (*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
(negabs y)
(negabs t)
(sort y t)
Compiled 18 to 16 computations (11.1% saved)
| Inputs |
|---|
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
(-.f64 (*.f64 x y) (*.f64 z y)) |
(*.f64 x y) |
x |
y |
(*.f64 z y) |
z |
t |
| Outputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)))) |
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y)))) |
#s(approx (- (* x y) (* z y)) (*.f64 #s(literal -1 binary64) (*.f64 y z))) |
#s(approx (- (* x y) (* z y)) (-.f64 (*.f64 x y) (*.f64 y z))) |
#s(approx (* x y) (*.f64 x y)) |
#s(approx x x) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))) |
#s(approx (- (* x y) (* z y)) (*.f64 x (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x))))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 y z)) x))))) |
#s(approx (- (* x y) (* z y)) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x))))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 y (-.f64 x z)))) |
#s(approx (- (* x y) (* z y)) (*.f64 y (-.f64 x z))) |
#s(approx y y) |
#s(approx (* z y) (*.f64 y z)) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) x) (*.f64 #s(literal -1 binary64) z)))))) |
#s(approx (- (* x y) (* z y)) (*.f64 #s(literal -1 binary64) (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) x) (*.f64 #s(literal -1 binary64) z))))) |
#s(approx (- (* x y) (* z y)) (fma.f64 #s(literal -1 binary64) (*.f64 y z) (*.f64 x y))) |
#s(approx z z) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 x y)) z)))) |
#s(approx (- (* x y) (* z y)) (*.f64 z (-.f64 (/.f64 (*.f64 x y) z) y))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 x y)) z) (*.f64 t y))))) |
#s(approx (- (* x y) (* z y)) (*.f64 #s(literal -1 binary64) (*.f64 z (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 x y) z)) (*.f64 #s(literal -1 binary64) y))))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (-.f64 (*.f64 x y) (*.f64 y z)))) |
#s(approx t t) |
12 calls:
| Time | Variable | Point |
|---|---|---|
| 2.0ms | x | inf |
| 2.0ms | y | inf |
| 2.0ms | y | -inf |
| 2.0ms | x | -inf |
| 1.0ms | x | 0 |
| Inputs |
|---|
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
(-.f64 (*.f64 x y) (*.f64 z y)) |
(*.f64 x y) |
x |
y |
(*.f64 z y) |
z |
t |
| Outputs |
|---|
(*.f64 (*.f64 y (-.f64 x z)) t) |
(*.f64 t (*.f64 y (-.f64 x z))) |
(*.f64 y (-.f64 x z)) |
(+.f64 (*.f64 x y) (neg.f64 (*.f64 z y))) |
(+.f64 (*.f64 x y) (*.f64 (neg.f64 z) y)) |
(-.f64 (*.f64 x y) (*.f64 z y)) |
(fma.f64 x y (neg.f64 (*.f64 z y))) |
(fma.f64 y x (neg.f64 (*.f64 z y))) |
(fma.f64 x y (*.f64 (neg.f64 z) y)) |
(fma.f64 y x (*.f64 (neg.f64 z) y)) |
(neg.f64 (-.f64 (*.f64 z y) (*.f64 x y))) |
(*.f64 x y) |
(*.f64 y x) |
x |
y |
(*.f64 z y) |
(*.f64 y z) |
z |
t |
Compiled 563 to 131 computations (76.7% saved)
7 alts after pruning (6 fresh and 1 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 31 | 6 | 37 |
| Fresh | 0 | 0 | 0 |
| Picked | 0 | 1 | 1 |
| Done | 0 | 0 | 0 |
| Total | 31 | 7 | 38 |
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 98.7% | (*.f64 (fma.f64 y x (*.f64 (neg.f64 z) y)) t) |
| ✓ | 98.7% | (*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
| ▶ | 98.7% | (*.f64 (*.f64 y (-.f64 x z)) t) |
| ▶ | 97.9% | #s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y)))) |
| 83.4% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 x y)) z)))) | |
| ▶ | 84.5% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))) |
| ▶ | 61.1% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
Compiled 211 to 154 computations (27% saved)
| Inputs |
|---|
(*.f64 (*.f64 y (-.f64 x z)) t) |
(*.f64 y (-.f64 x z)) |
y |
(-.f64 x z) |
x |
z |
t |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
(*.f64 t (*.f64 x y)) |
(*.f64 x y) |
(*.f64 (fma.f64 y x (*.f64 (neg.f64 z) y)) t) |
(fma.f64 y x (*.f64 (neg.f64 z) y)) |
(*.f64 (neg.f64 z) y) |
(neg.f64 z) |
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y)))) |
(fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))) |
#s(literal -1 binary64) |
(*.f64 t (*.f64 y z)) |
(*.f64 y z) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))) |
(*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))) |
(fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)) |
(/.f64 (*.f64 t (*.f64 y z)) x) |
(*.f64 t y) |
| Outputs |
|---|
#s(approx (* (* y (- x z)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)))) |
#s(approx (* (* y (- x z)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y)))) |
#s(approx (* y (- x z)) (*.f64 #s(literal -1 binary64) (*.f64 y z))) |
#s(approx (* y (- x z)) (fma.f64 #s(literal -1 binary64) (*.f64 y z) (*.f64 x y))) |
#s(approx (- x z) (*.f64 #s(literal -1 binary64) z)) |
#s(approx (- x z) (-.f64 x z)) |
#s(approx x x) |
#s(approx (* t (* x y)) (*.f64 t (*.f64 x y))) |
#s(approx (* x y) (*.f64 x y)) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))) x)) |
#s(approx (/ (* t (* y z)) x) (/.f64 (*.f64 t (*.f64 y z)) x)) |
#s(approx (* (* y (- x z)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))) |
#s(approx (* y (- x z)) (*.f64 x (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x))))) |
#s(approx (- x z) (*.f64 x (+.f64 #s(literal 1 binary64) (*.f64 #s(literal -1 binary64) (/.f64 z x))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))) |
#s(approx (* (* y (- x z)) t) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 y z)) x))))) |
#s(approx (* y (- x z)) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x))))) |
#s(approx (- x z) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (/.f64 z x) #s(literal 1 binary64))))) |
#s(approx (* (* y (- x z)) t) (*.f64 t (*.f64 y (-.f64 x z)))) |
#s(approx (* y (- x z)) (*.f64 y (-.f64 x z))) |
#s(approx y y) |
#s(approx (* (+ (* y x) (* (neg z) y)) t) (*.f64 t (*.f64 y (+.f64 x (*.f64 #s(literal -1 binary64) z))))) |
#s(approx (+ (* y x) (* (neg z) y)) (*.f64 y (+.f64 x (*.f64 #s(literal -1 binary64) z)))) |
#s(approx (+ (* -1 (* t (* y z))) (* t (* x y))) (*.f64 y (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)))) |
#s(approx (* t (* y z)) (*.f64 t (*.f64 y z))) |
#s(approx (* y z) (*.f64 y z)) |
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 x (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) x) (*.f64 #s(literal -1 binary64) z)))))) |
#s(approx (* (+ (* y x) (* (neg z) y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y (+.f64 z (*.f64 #s(literal -1 binary64) x)))))) |
#s(approx (+ (* y x) (* (neg z) y)) (*.f64 #s(literal -1 binary64) (*.f64 y (+.f64 z (*.f64 #s(literal -1 binary64) x))))) |
#s(approx (+ (* -1 (* t (* y z))) (* t (* x y))) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) (*.f64 t x) (*.f64 t z))))) |
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 #s(literal -1 binary64) (*.f64 x (*.f64 y (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x))))) |
#s(approx (- x z) (+.f64 x (*.f64 #s(literal -1 binary64) z))) |
#s(approx z z) |
#s(approx (* (* y (- x z)) t) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 x y)) z)))) |
#s(approx (* y (- x z)) (*.f64 z (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 x y) z)))) |
#s(approx (- x z) (*.f64 z (-.f64 (/.f64 x z) #s(literal 1 binary64)))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t y) x) (/.f64 (*.f64 t y) z)))) |
#s(approx (* (* y (- x z)) t) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 x y)) z) (*.f64 t y))))) |
#s(approx (* y (- x z)) (*.f64 #s(literal -1 binary64) (*.f64 z (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 x y) z)))))) |
#s(approx (- x z) (*.f64 #s(literal -1 binary64) (*.f64 z (+.f64 #s(literal 1 binary64) (*.f64 #s(literal -1 binary64) (/.f64 x z)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t y) z) (/.f64 (*.f64 t y) x))))) |
#s(approx t t) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (-.f64 (*.f64 x y) (*.f64 y z)))) |
#s(approx (* (+ (* y x) (* (neg z) y)) t) (*.f64 t (fma.f64 #s(literal -1 binary64) (*.f64 y z) (*.f64 x y)))) |
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 t (*.f64 x (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x))))) |
#s(approx (+ (* -1 (* t (* y z))) (* t (* x y))) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) (*.f64 x y) (*.f64 y z))))) |
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 x (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x))))) |
12 calls:
| Time | Variable | Point |
|---|---|---|
| 11.0ms | y | -inf |
| 10.0ms | y | 0 |
| 8.0ms | t | -inf |
| 7.0ms | z | -inf |
| 6.0ms | z | inf |
| Inputs |
|---|
(*.f64 (*.f64 y (-.f64 x z)) t) |
(*.f64 y (-.f64 x z)) |
y |
(-.f64 x z) |
x |
z |
t |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
(*.f64 t (*.f64 x y)) |
(*.f64 x y) |
(*.f64 (fma.f64 y x (*.f64 (neg.f64 z) y)) t) |
(fma.f64 y x (*.f64 (neg.f64 z) y)) |
(*.f64 (neg.f64 z) y) |
(neg.f64 z) |
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y)))) |
(fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))) |
#s(literal -1 binary64) |
(*.f64 t (*.f64 y z)) |
(*.f64 y z) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))) |
(*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))) |
(fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)) |
(/.f64 (*.f64 t (*.f64 y z)) x) |
(*.f64 t y) |
| Outputs |
|---|
(*.f64 (*.f64 y (-.f64 x z)) t) |
(*.f64 y (*.f64 (-.f64 x z) t)) |
(*.f64 t (*.f64 y (-.f64 x z))) |
(*.f64 y (-.f64 x z)) |
(*.f64 (-.f64 x z) y) |
(+.f64 (neg.f64 (*.f64 y z)) (*.f64 x y)) |
(+.f64 (*.f64 x y) (neg.f64 (*.f64 y z))) |
(-.f64 (*.f64 x y) (*.f64 y z)) |
(-.f64 (*.f64 x y) (*.f64 (neg.f64 (neg.f64 z)) y)) |
(-.f64 (*.f64 x y) (neg.f64 (neg.f64 (*.f64 y z)))) |
(fma.f64 (neg.f64 z) y (*.f64 x y)) |
(fma.f64 y (neg.f64 z) (*.f64 x y)) |
(fma.f64 y x (neg.f64 (*.f64 y z))) |
(fma.f64 x y (neg.f64 (*.f64 y z))) |
(neg.f64 (-.f64 (*.f64 y z) (*.f64 x y))) |
y |
(+.f64 x (neg.f64 z)) |
(-.f64 x z) |
(neg.f64 (-.f64 z x)) |
x |
z |
t |
#s(approx (* y (* (- x z) t)) (*.f64 t (*.f64 x y))) |
(*.f64 t (*.f64 x y)) |
(*.f64 (*.f64 t x) y) |
(*.f64 (*.f64 x y) t) |
(*.f64 x y) |
(*.f64 y x) |
(*.f64 (*.f64 y (-.f64 x z)) t) |
(*.f64 y (*.f64 (-.f64 x z) t)) |
(*.f64 t (*.f64 y (-.f64 x z))) |
(*.f64 y (-.f64 x z)) |
(*.f64 (-.f64 x z) y) |
(+.f64 (neg.f64 (*.f64 y z)) (*.f64 x y)) |
(+.f64 (*.f64 x y) (neg.f64 (*.f64 y z))) |
(-.f64 (*.f64 x y) (*.f64 y z)) |
(-.f64 (*.f64 x y) (*.f64 (neg.f64 (neg.f64 z)) y)) |
(-.f64 (*.f64 x y) (neg.f64 (neg.f64 (*.f64 y z)))) |
(fma.f64 (neg.f64 z) y (*.f64 x y)) |
(fma.f64 y (neg.f64 z) (*.f64 x y)) |
(fma.f64 y x (neg.f64 (*.f64 y z))) |
(fma.f64 x y (neg.f64 (*.f64 y z))) |
(neg.f64 (-.f64 (*.f64 y z) (*.f64 x y))) |
(*.f64 (neg.f64 z) y) |
(*.f64 y (neg.f64 z)) |
(neg.f64 (*.f64 y z)) |
(neg.f64 z) |
#s(approx (* y (* (- x z) t)) (fma.f64 t (*.f64 x y) (neg.f64 (*.f64 t (*.f64 y z))))) |
(+.f64 (neg.f64 (*.f64 t (*.f64 y z))) (*.f64 t (*.f64 x y))) |
(+.f64 (*.f64 t (*.f64 x y)) (neg.f64 (*.f64 t (*.f64 y z)))) |
(-.f64 (neg.f64 (*.f64 t (*.f64 y z))) (*.f64 (neg.f64 t) (*.f64 x y))) |
(-.f64 (neg.f64 (*.f64 t (*.f64 y z))) (neg.f64 (*.f64 t (*.f64 x y)))) |
(fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))) |
(fma.f64 (*.f64 t (*.f64 y z)) #s(literal -1 binary64) (*.f64 t (*.f64 x y))) |
(fma.f64 (*.f64 #s(literal -1 binary64) t) (*.f64 y z) (*.f64 t (*.f64 x y))) |
(fma.f64 t (*.f64 x y) (neg.f64 (*.f64 t (*.f64 y z)))) |
(fma.f64 (*.f64 t x) y (neg.f64 (*.f64 t (*.f64 y z)))) |
(fma.f64 (*.f64 x y) t (neg.f64 (*.f64 t (*.f64 y z)))) |
#s(literal -1 binary64) |
(*.f64 t (*.f64 y z)) |
(*.f64 (*.f64 y z) t) |
(*.f64 (*.f64 t y) z) |
(*.f64 y z) |
(*.f64 z y) |
#s(approx (* y (* (- x z) t)) (*.f64 (fma.f64 t y (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x))) x)) |
(*.f64 (fma.f64 t y (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x))) x) |
(*.f64 x (fma.f64 t y (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)))) |
(+.f64 (*.f64 (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)) x) (*.f64 (*.f64 t y) x)) |
(+.f64 (*.f64 x (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x))) (*.f64 x (*.f64 t y))) |
(fma.f64 (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)) x (*.f64 (*.f64 t y) x)) |
(fma.f64 x (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)) (*.f64 x (*.f64 t y))) |
(+.f64 (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)) (*.f64 t y)) |
(+.f64 (*.f64 t y) (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x))) |
(-.f64 (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)) (neg.f64 (*.f64 t y))) |
(-.f64 (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x)) (*.f64 (neg.f64 t) y)) |
(fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)) |
(fma.f64 (/.f64 (*.f64 t (*.f64 y z)) x) #s(literal -1 binary64) (*.f64 t y)) |
(fma.f64 t y (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x))) |
(fma.f64 y t (neg.f64 (/.f64 (*.f64 t (*.f64 y z)) x))) |
(*.f64 (*.f64 t (*.f64 y z)) (/.f64 #s(literal 1 binary64) x)) |
(*.f64 t (/.f64 (*.f64 y z) x)) |
(/.f64 (*.f64 t (*.f64 y z)) x) |
(/.f64 (neg.f64 (*.f64 t (*.f64 y z))) (neg.f64 x)) |
(*.f64 t y) |
(*.f64 y t) |
Compiled 2 794 to 478 computations (82.9% saved)
12 alts after pruning (8 fresh and 4 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 123 | 8 | 131 |
| Fresh | 1 | 0 | 1 |
| Picked | 2 | 3 | 5 |
| Done | 0 | 1 | 1 |
| Total | 126 | 12 | 138 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 98.7% | (*.f64 (fma.f64 y x (*.f64 (neg.f64 z) y)) t) |
| ✓ | 98.7% | (*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
| ✓ | 98.7% | (*.f64 (*.f64 y (-.f64 x z)) t) |
| ▶ | 85.5% | (*.f64 y (*.f64 (-.f64 x z) t)) |
| ▶ | 92.2% | #s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y)))) |
| 55.9% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 (*.f64 t x) y)) | |
| ▶ | 77.7% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))))) |
| 87.6% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x))))))) | |
| ▶ | 59.2% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)))) |
| ▶ | 44.0% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))))) |
| ✓ | 61.1% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
| 84.7% | #s(approx (* (- (* x y) (* z y)) t) #s(approx (+ (* -1 (* t (* y z))) (* t (* x y))) (*.f64 y (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))))) |
Compiled 472 to 322 computations (31.8% saved)
| Inputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y)))) |
(fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y))) |
#s(literal -1 binary64) |
(*.f64 (*.f64 t y) z) |
(*.f64 t y) |
t |
y |
z |
(*.f64 t (*.f64 x y)) |
(*.f64 x y) |
x |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)))) |
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)) |
(*.f64 y (*.f64 (-.f64 x z) t)) |
(*.f64 (-.f64 x z) t) |
(-.f64 x z) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))))) |
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))) |
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)) |
(/.f64 (*.f64 t (*.f64 y z)) x) |
(*.f64 t (*.f64 y z)) |
(*.f64 y z) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))))) |
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))) |
(*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))) |
(+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))) |
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)) |
(/.f64 (*.f64 t z) x) |
(*.f64 t z) |
| Outputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)))) |
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y)))) |
#s(approx (* t (* x y)) (*.f64 t (*.f64 x y))) |
#s(approx (* x y) (*.f64 x y)) |
#s(approx x x) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))) x)) |
#s(approx (* (- x z) t) (*.f64 #s(literal -1 binary64) (*.f64 t z))) |
#s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))) |
#s(approx (- x z) (*.f64 #s(literal -1 binary64) z)) |
#s(approx (- x z) (-.f64 x z)) |
#s(approx (/ (* t (* y z)) x) (/.f64 (*.f64 t (*.f64 y z)) x)) |
#s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))) |
#s(approx (+ t (* -1 (/ (* t z) x))) (/.f64 (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)) x)) |
#s(approx (/ (* t z) x) (/.f64 (*.f64 t z) x)) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))) |
#s(approx (* (- x z) t) (*.f64 t x)) |
#s(approx (* (- x z) t) (*.f64 x (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))) |
#s(approx (- x z) (*.f64 x (+.f64 #s(literal 1 binary64) (*.f64 #s(literal -1 binary64) (/.f64 z x))))) |
#s(approx (+ t (* -1 (/ (* t z) x))) t) |
#s(approx (+ t (* -1 (/ (* t z) x))) (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 y z)) x))))) |
#s(approx (* (- x z) t) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x))))) |
#s(approx (- x z) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (/.f64 z x) #s(literal 1 binary64))))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 y (-.f64 x z)))) |
#s(approx (+ (* -1 (* (* t y) z)) (* t (* x y))) (*.f64 y (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)))) |
#s(approx (* (* t y) z) (*.f64 t (*.f64 y z))) |
#s(approx y y) |
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 x (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))) |
#s(approx (* y z) (*.f64 y z)) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) x) (*.f64 #s(literal -1 binary64) z)))))) |
#s(approx (+ (* -1 (* (* t y) z)) (* t (* x y))) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) (*.f64 t x) (*.f64 t z))))) |
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 #s(literal -1 binary64) (*.f64 x (*.f64 y (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x))))) |
#s(approx z z) |
#s(approx (- x z) (+.f64 x (*.f64 #s(literal -1 binary64) z))) |
#s(approx (* t z) (*.f64 t z)) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 x y)) z)))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t y) x) (/.f64 (*.f64 t y) z)))) |
#s(approx (* (- x z) t) (*.f64 z (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t x) z)))) |
#s(approx (- x z) (*.f64 z (-.f64 (/.f64 x z) #s(literal 1 binary64)))) |
#s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 t x) (/.f64 t z)))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 x y)) z) (*.f64 t y))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t y) z) (/.f64 (*.f64 t y) x))))) |
#s(approx (* (- x z) t) (*.f64 #s(literal -1 binary64) (*.f64 z (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t x) z)))))) |
#s(approx (- x z) (*.f64 #s(literal -1 binary64) (*.f64 z (+.f64 #s(literal 1 binary64) (*.f64 #s(literal -1 binary64) (/.f64 x z)))))) |
#s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 t z) (/.f64 t x))))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (-.f64 (*.f64 x y) (*.f64 y z)))) |
#s(approx (+ (* -1 (* (* t y) z)) (* t (* x y))) (*.f64 t (fma.f64 #s(literal -1 binary64) (*.f64 y z) (*.f64 x y)))) |
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 t (*.f64 x (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x))))) |
#s(approx (* (- x z) t) (*.f64 t (-.f64 x z))) |
#s(approx (* y (+ t (* -1 (/ (* t z) x)))) (*.f64 t (*.f64 y (+.f64 #s(literal 1 binary64) (*.f64 #s(literal -1 binary64) (/.f64 z x)))))) |
#s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 t (+.f64 #s(literal 1 binary64) (*.f64 #s(literal -1 binary64) (/.f64 z x))))) |
#s(approx (+ (* -1 (* (* t y) z)) (* t (* x y))) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) (*.f64 x y) (*.f64 y z))))) |
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 x (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x))))) |
#s(approx (* y (+ t (* -1 (/ (* t z) x)))) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y (-.f64 (/.f64 z x) #s(literal 1 binary64)))))) |
#s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 #s(literal -1 binary64) (*.f64 t (-.f64 (/.f64 z x) #s(literal 1 binary64))))) |
12 calls:
| Time | Variable | Point |
|---|---|---|
| 52.0ms | z | -inf |
| 17.0ms | t | inf |
| 14.0ms | t | -inf |
| 8.0ms | y | inf |
| 7.0ms | t | 0 |
| Inputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y)))) |
(fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y))) |
#s(literal -1 binary64) |
(*.f64 (*.f64 t y) z) |
(*.f64 t y) |
t |
y |
z |
(*.f64 t (*.f64 x y)) |
(*.f64 x y) |
x |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)))) |
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)) |
(*.f64 y (*.f64 (-.f64 x z) t)) |
(*.f64 (-.f64 x z) t) |
(-.f64 x z) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))))) |
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))) |
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x)) |
(/.f64 (*.f64 t (*.f64 y z)) x) |
(*.f64 t (*.f64 y z)) |
(*.f64 y z) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))))) |
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))) |
(*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))) |
(+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))) |
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)) |
(/.f64 (*.f64 t z) x) |
(*.f64 t z) |
| Outputs |
|---|
#s(approx (* t (* y (- x z))) (fma.f64 t (*.f64 x y) (neg.f64 (*.f64 (*.f64 t y) z)))) |
(+.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (*.f64 t (*.f64 x y))) |
(+.f64 (*.f64 t (*.f64 x y)) (neg.f64 (*.f64 (*.f64 t y) z))) |
(-.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (neg.f64 (*.f64 t (*.f64 x y)))) |
(-.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (*.f64 (neg.f64 t) (*.f64 x y))) |
(fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y))) |
(fma.f64 (*.f64 (*.f64 t y) z) #s(literal -1 binary64) (*.f64 t (*.f64 x y))) |
(fma.f64 (*.f64 #s(literal -1 binary64) (*.f64 t y)) z (*.f64 t (*.f64 x y))) |
(fma.f64 t (*.f64 x y) (neg.f64 (*.f64 (*.f64 t y) z))) |
(fma.f64 (*.f64 t x) y (neg.f64 (*.f64 (*.f64 t y) z))) |
(fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z))) |
#s(literal -1 binary64) |
(*.f64 (*.f64 t y) z) |
(*.f64 t (*.f64 y z)) |
(*.f64 (*.f64 y z) t) |
(*.f64 z (*.f64 t y)) |
(*.f64 t y) |
(*.f64 y t) |
t |
y |
z |
(*.f64 t (*.f64 x y)) |
(*.f64 (*.f64 t x) y) |
(*.f64 (*.f64 x y) t) |
(*.f64 x y) |
(*.f64 y x) |
x |
#s(approx (* t (* y (- x z))) (*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (*.f64 t y)))) |
(*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (*.f64 t y))) |
#s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (*.f64 t y)) |
(*.f64 (*.f64 (-.f64 x z) t) y) |
(*.f64 (*.f64 y (-.f64 x z)) t) |
(*.f64 y (*.f64 (-.f64 x z) t)) |
(*.f64 t (*.f64 y (-.f64 x z))) |
(*.f64 (-.f64 x z) t) |
(*.f64 t (-.f64 x z)) |
(+.f64 x (neg.f64 z)) |
(-.f64 x z) |
(neg.f64 (-.f64 z x)) |
#s(approx (* t (* y (- x z))) (*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x))))) |
(*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x)))) |
#s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x))) |
(*.f64 (/.f64 (*.f64 (*.f64 t y) z) x) #s(literal -1 binary64)) |
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 (*.f64 t y) z) x)) |
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x) |
(neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x)) |
(*.f64 (*.f64 (*.f64 t y) z) (/.f64 #s(literal 1 binary64) x)) |
(*.f64 t (/.f64 (*.f64 y z) x)) |
(/.f64 (*.f64 (*.f64 t y) z) x) |
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (neg.f64 x)) |
(*.f64 (*.f64 t y) z) |
(*.f64 t (*.f64 y z)) |
(*.f64 (*.f64 y z) t) |
(*.f64 z (*.f64 t y)) |
(*.f64 y z) |
(*.f64 z y) |
#s(approx (* t (* y (- x z))) (*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (*.f64 y (+.f64 t (neg.f64 (/.f64 (*.f64 t z) x))))))) |
(*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (*.f64 y (+.f64 t (neg.f64 (/.f64 (*.f64 t z) x)))))) |
#s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (*.f64 y (+.f64 t (neg.f64 (/.f64 (*.f64 t z) x))))) |
(*.f64 y (+.f64 t (neg.f64 (/.f64 (*.f64 t z) x)))) |
(*.f64 (+.f64 t (neg.f64 (/.f64 (*.f64 t z) x))) y) |
(+.f64 (*.f64 t y) (*.f64 (neg.f64 (/.f64 (*.f64 t z) x)) y)) |
(+.f64 (*.f64 t y) (*.f64 y (neg.f64 (/.f64 (*.f64 t z) x)))) |
(fma.f64 t y (*.f64 (neg.f64 (/.f64 (*.f64 t z) x)) y)) |
(fma.f64 y t (*.f64 (neg.f64 (/.f64 (*.f64 t z) x)) y)) |
(fma.f64 t y (*.f64 y (neg.f64 (/.f64 (*.f64 t z) x)))) |
(fma.f64 y t (*.f64 y (neg.f64 (/.f64 (*.f64 t z) x)))) |
(+.f64 t (neg.f64 (/.f64 (*.f64 t z) x))) |
(+.f64 (neg.f64 (/.f64 (*.f64 t z) x)) t) |
(-.f64 t (*.f64 #s(literal 1 binary64) (/.f64 (*.f64 t z) x))) |
(-.f64 t (neg.f64 (neg.f64 (/.f64 (*.f64 t z) x)))) |
(fma.f64 (/.f64 (*.f64 t z) x) #s(literal -1 binary64) t) |
(fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x) t) |
(*.f64 (/.f64 (*.f64 t z) x) #s(literal -1 binary64)) |
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)) |
(/.f64 (*.f64 #s(literal -1 binary64) (*.f64 t z)) x) |
(neg.f64 (/.f64 (*.f64 t z) x)) |
(*.f64 (*.f64 t z) (/.f64 #s(literal 1 binary64) x)) |
(*.f64 t (/.f64 z x)) |
(/.f64 (*.f64 t z) x) |
(/.f64 (neg.f64 (*.f64 t z)) (neg.f64 x)) |
(*.f64 t z) |
(*.f64 z t) |
Compiled 3 889 to 597 computations (84.6% saved)
13 alts after pruning (7 fresh and 6 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 124 | 7 | 131 |
| Fresh | 3 | 0 | 3 |
| Picked | 3 | 2 | 5 |
| Done | 0 | 4 | 4 |
| Total | 130 | 13 | 143 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 98.7% | (*.f64 (fma.f64 y x (*.f64 (neg.f64 z) y)) t) |
| ✓ | 98.7% | (*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
| ✓ | 98.7% | (*.f64 (*.f64 y (-.f64 x z)) t) |
| ✓ | 85.5% | (*.f64 y (*.f64 (-.f64 x z) t)) |
| ▶ | 84.7% | (*.f64 y #s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)))) |
| ▶ | 55.9% | (*.f64 y #s(approx (* (- x z) t) (*.f64 t x))) |
| ▶ | 92.2% | #s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z)))) |
| 92.2% | #s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 #s(literal -1 binary64) (*.f64 t y)) z (*.f64 t (*.f64 x y)))) | |
| ▶ | 43.9% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)))) |
| 36.0% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y #s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))))) | |
| ✓ | 59.2% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)))) |
| ▶ | 43.9% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x)))))) |
| ✓ | 61.1% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
Compiled 444 to 306 computations (31.1% saved)
| Inputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z)))) |
(fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z))) |
(*.f64 x y) |
x |
y |
t |
(neg.f64 (*.f64 (*.f64 t y) z)) |
(*.f64 (*.f64 t y) z) |
(*.f64 t y) |
z |
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x))) |
#s(approx (* (- x z) t) (*.f64 t x)) |
(*.f64 t x) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)))) |
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)) |
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x) |
(*.f64 y #s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)))) |
#s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))) |
(fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)) |
#s(literal -1 binary64) |
(*.f64 t z) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x)))))) |
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x)))) |
(*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x))) |
(*.f64 t (/.f64 (*.f64 y z) x)) |
(/.f64 (*.f64 y z) x) |
(*.f64 y z) |
| Outputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)))) |
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y)))) |
#s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (-.f64 (*.f64 t (*.f64 x y)) (*.f64 t (*.f64 y z)))) |
#s(approx (* x y) (*.f64 x y)) |
#s(approx x x) |
#s(approx (* (- x z) t) (*.f64 #s(literal -1 binary64) (*.f64 t z))) |
#s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))) |
#s(approx (* t x) (*.f64 t x)) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y))) x)) |
#s(approx (* t (/ (* y z) x)) (/.f64 (*.f64 t (*.f64 y z)) x)) |
#s(approx (/ (* y z) x) (/.f64 (*.f64 y z) x)) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))) |
#s(approx (* (- x z) t) (*.f64 x (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 y z)) x))))) |
#s(approx (* (- x z) t) (*.f64 #s(literal -1 binary64) (*.f64 x (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x))))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 y (-.f64 x z)))) |
#s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 y (-.f64 (*.f64 t x) (*.f64 t z)))) |
#s(approx y y) |
#s(approx (* (* t y) z) (*.f64 t (*.f64 y z))) |
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 x (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))) |
#s(approx (* y z) (*.f64 y z)) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) x) (*.f64 #s(literal -1 binary64) z)))))) |
#s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 #s(literal -1 binary64) (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) (*.f64 t x)) (*.f64 #s(literal -1 binary64) (*.f64 t z)))))) |
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 #s(literal -1 binary64) (*.f64 x (*.f64 y (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t z) x))))) |
#s(approx z z) |
#s(approx (* t z) (*.f64 t z)) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 x y)) z)))) |
#s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 z (-.f64 (/.f64 (*.f64 t (*.f64 x y)) z) (*.f64 t y)))) |
#s(approx (* (- x z) t) (*.f64 z (fma.f64 #s(literal -1 binary64) t (/.f64 (*.f64 t x) z)))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t y) x) (/.f64 (*.f64 t y) z)))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 x y)) z) (*.f64 t y))))) |
#s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 #s(literal -1 binary64) (*.f64 z (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 x y)) z)) (*.f64 #s(literal -1 binary64) (*.f64 t y)))))) |
#s(approx (* (- x z) t) (*.f64 #s(literal -1 binary64) (*.f64 z (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t x) z)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t y) z) (/.f64 (*.f64 t y) x))))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (-.f64 (*.f64 x y) (*.f64 y z)))) |
#s(approx t t) |
#s(approx (* (- x z) t) (*.f64 t (-.f64 x z))) |
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 t (*.f64 x (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x))))) |
#s(approx (+ (* -1 (* t z)) (* t x)) (*.f64 t (+.f64 x (*.f64 #s(literal -1 binary64) z)))) |
#s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 #s(literal -1 binary64) (*.f64 t (-.f64 (*.f64 #s(literal -1 binary64) (*.f64 x y)) (*.f64 #s(literal -1 binary64) (*.f64 y z)))))) |
#s(approx (* x (+ (* -1 (/ (* t (* y z)) x)) (* t y))) (*.f64 #s(literal -1 binary64) (*.f64 t (*.f64 x (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x)))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) y (/.f64 (*.f64 y z) x))))) |
#s(approx (+ (* -1 (* t z)) (* t x)) (*.f64 #s(literal -1 binary64) (*.f64 t (+.f64 z (*.f64 #s(literal -1 binary64) x))))) |
12 calls:
| Time | Variable | Point |
|---|---|---|
| 7.0ms | z | -inf |
| 6.0ms | y | 0 |
| 4.0ms | t | -inf |
| 4.0ms | y | -inf |
| 3.0ms | t | inf |
| Inputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z)))) |
(fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z))) |
(*.f64 x y) |
x |
y |
t |
(neg.f64 (*.f64 (*.f64 t y) z)) |
(*.f64 (*.f64 t y) z) |
(*.f64 t y) |
z |
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x))) |
#s(approx (* (- x z) t) (*.f64 t x)) |
(*.f64 t x) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)))) |
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)) |
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x) |
(*.f64 y #s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)))) |
#s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))) |
(fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)) |
#s(literal -1 binary64) |
(*.f64 t z) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x)))))) |
(*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x))))) |
#s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x)))) |
(*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x))) |
(*.f64 t (/.f64 (*.f64 y z) x)) |
(/.f64 (*.f64 y z) x) |
(*.f64 y z) |
| Outputs |
|---|
#s(approx (* t (* y (- x z))) (-.f64 (*.f64 (*.f64 x y) t) (*.f64 (*.f64 t y) z))) |
(+.f64 (*.f64 (*.f64 x y) t) (neg.f64 (*.f64 (*.f64 t y) z))) |
(+.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (*.f64 (*.f64 x y) t)) |
(-.f64 (*.f64 (*.f64 x y) t) (*.f64 (*.f64 t y) z)) |
(-.f64 (*.f64 (*.f64 x y) t) (neg.f64 (neg.f64 (*.f64 (*.f64 t y) z)))) |
(fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z))) |
(fma.f64 (neg.f64 (*.f64 t y)) z (*.f64 (*.f64 x y) t)) |
(fma.f64 x (*.f64 t y) (neg.f64 (*.f64 (*.f64 t y) z))) |
(fma.f64 t (*.f64 x y) (neg.f64 (*.f64 (*.f64 t y) z))) |
(fma.f64 (*.f64 t y) (neg.f64 z) (*.f64 (*.f64 x y) t)) |
(*.f64 x y) |
(*.f64 y x) |
x |
y |
t |
(*.f64 (*.f64 t y) (neg.f64 z)) |
(*.f64 (neg.f64 (*.f64 t y)) z) |
(neg.f64 (*.f64 (*.f64 t y) z)) |
(*.f64 (*.f64 t y) z) |
(*.f64 (*.f64 y z) t) |
(*.f64 z (*.f64 t y)) |
(*.f64 t (*.f64 y z)) |
(*.f64 t y) |
(*.f64 y t) |
z |
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x))) |
#s(approx (* (- x z) t) (*.f64 t x)) |
(*.f64 t x) |
(*.f64 x t) |
#s(approx (* t (* y (- x z))) (*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x))))) |
(*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x)))) |
#s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x))) |
(*.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (/.f64 #s(literal 1 binary64) x)) |
(*.f64 (*.f64 #s(literal -1 binary64) t) (/.f64 (*.f64 y z) x)) |
(*.f64 (/.f64 (*.f64 (*.f64 t y) z) x) #s(literal -1 binary64)) |
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 (*.f64 t y) z) x)) |
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x) |
(/.f64 (*.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z)) x) |
(/.f64 (neg.f64 (neg.f64 (*.f64 (*.f64 t y) z))) (neg.f64 x)) |
(neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x)) |
(*.f64 y #s(approx (* (- x z) t) (fma.f64 t x (neg.f64 (*.f64 t z))))) |
#s(approx (* (- x z) t) (fma.f64 t x (neg.f64 (*.f64 t z)))) |
(+.f64 (neg.f64 (*.f64 t z)) (*.f64 t x)) |
(+.f64 (*.f64 t x) (neg.f64 (*.f64 t z))) |
(-.f64 (neg.f64 (*.f64 t z)) (neg.f64 (*.f64 t x))) |
(-.f64 (neg.f64 (*.f64 t z)) (*.f64 (neg.f64 t) x)) |
(fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)) |
(fma.f64 (*.f64 #s(literal -1 binary64) t) z (*.f64 t x)) |
(fma.f64 (*.f64 t z) #s(literal -1 binary64) (*.f64 t x)) |
(fma.f64 t x (neg.f64 (*.f64 t z))) |
(fma.f64 x t (neg.f64 (*.f64 t z))) |
#s(literal -1 binary64) |
(*.f64 t z) |
(*.f64 z t) |
#s(approx (* t (* y (- x z))) (*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x))))) |
(*.f64 x #s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x)))) |
#s(approx (+ (neg (/ (* (* t y) z) x)) (* t y)) (neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x))) |
(*.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (/.f64 #s(literal 1 binary64) x)) |
(*.f64 (*.f64 #s(literal -1 binary64) t) (/.f64 (*.f64 y z) x)) |
(*.f64 (/.f64 (*.f64 (*.f64 t y) z) x) #s(literal -1 binary64)) |
(*.f64 #s(literal -1 binary64) (/.f64 (*.f64 (*.f64 t y) z) x)) |
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x) |
(/.f64 (*.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z)) x) |
(/.f64 (neg.f64 (neg.f64 (*.f64 (*.f64 t y) z))) (neg.f64 x)) |
(neg.f64 (/.f64 (*.f64 (*.f64 t y) z) x)) |
(*.f64 t (/.f64 (*.f64 y z) x)) |
(*.f64 (/.f64 (*.f64 y z) x) t) |
(*.f64 (*.f64 (*.f64 t y) z) (/.f64 #s(literal 1 binary64) x)) |
(/.f64 (*.f64 (*.f64 t y) z) x) |
(/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) (neg.f64 x)) |
(*.f64 (*.f64 y z) (/.f64 #s(literal 1 binary64) x)) |
(*.f64 y (/.f64 z x)) |
(/.f64 (*.f64 y z) x) |
(/.f64 (neg.f64 (*.f64 y z)) (neg.f64 x)) |
(*.f64 y z) |
(*.f64 z y) |
Compiled 3 226 to 521 computations (83.8% saved)
13 alts after pruning (5 fresh and 8 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 113 | 4 | 117 |
| Fresh | 1 | 1 | 2 |
| Picked | 2 | 3 | 5 |
| Done | 1 | 5 | 6 |
| Total | 117 | 13 | 130 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 98.7% | (*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
| ✓ | 98.7% | (*.f64 (*.f64 y (-.f64 x z)) t) |
| ✓ | 85.5% | (*.f64 y (*.f64 (-.f64 x z) t)) |
| ✓ | 55.9% | (*.f64 y #s(approx (* (- x z) t) (*.f64 t x))) |
| 92.2% | #s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 t y) (neg.f64 z) (*.f64 (*.f64 x y) t))) | |
| 92.2% | #s(approx (* (- (* x y) (* z y)) t) (-.f64 (*.f64 (*.f64 x y) t) (*.f64 (*.f64 t y) z))) | |
| 44.0% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 y z) t)) x)))) | |
| ✓ | 43.9% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)))) |
| 36.0% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y #s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))))) | |
| ✓ | 59.2% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)))) |
| ✓ | 43.9% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x)))))) |
| ✓ | 61.1% | #s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
| 84.7% | #s(approx (* (- (* x y) (* z y)) t) #s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 y (-.f64 (*.f64 t x) (*.f64 t z))))) |
Compiled 300 to 203 computations (32.3% saved)
Total -6.5b remaining (-20%)
Threshold costs -6.5b (-20%)
| Inputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 (*.f64 t x) y)) |
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x))) |
| Outputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
| Inputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 (*.f64 t x) y)) |
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x))) |
(*.f64 y (*.f64 (-.f64 x z) t)) |
| Outputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
(*.f64 y (*.f64 (-.f64 x z) t)) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
| Inputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 (*.f64 t x) y)) |
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x))) |
(*.f64 y (*.f64 (-.f64 x z) t)) |
(*.f64 (*.f64 y (-.f64 x z)) t) |
#s(approx (* (- (* x y) (* z y)) t) #s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 y (-.f64 (*.f64 t x) (*.f64 t z))))) |
| Outputs |
|---|
(*.f64 (*.f64 y (-.f64 x z)) t) |
| Inputs |
|---|
#s(approx (* (- (* x y) (* z y)) t) (*.f64 t (*.f64 x y))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t y)))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 (*.f64 t x) y)) |
(*.f64 y #s(approx (* (- x z) t) (*.f64 t x))) |
(*.f64 y (*.f64 (-.f64 x z) t)) |
(*.f64 (*.f64 y (-.f64 x z)) t) |
#s(approx (* (- (* x y) (* z y)) t) #s(approx (+ (* (* x y) t) (neg (* (* t y) z))) (*.f64 y (-.f64 (*.f64 t x) (*.f64 t z))))) |
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
(*.f64 (fma.f64 y x (*.f64 (neg.f64 z) y)) t) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 t y) z)) x)))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (/.f64 (neg.f64 (*.f64 (*.f64 y z) t)) x)))) |
#s(approx (* (- (* x y) (* z y)) t) #s(approx (+ (* -1 (* t (* y z))) (* t (* x y))) (*.f64 y (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x))))) |
(*.f64 y #s(approx (* (- x z) t) (fma.f64 #s(literal -1 binary64) (*.f64 t z) (*.f64 t x)))) |
#s(approx (* (- (* x y) (* z y)) t) (-.f64 (*.f64 (*.f64 x y) t) (*.f64 (*.f64 t y) z))) |
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 t y) (neg.f64 z) (*.f64 (*.f64 x y) t))) |
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 x y) t (neg.f64 (*.f64 (*.f64 t y) z)))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (*.f64 t (/.f64 (*.f64 y z) x)))))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x))))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y #s(approx (+ t (* -1 (/ (* t z) x))) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))))) |
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 t (*.f64 y z)) (*.f64 t (*.f64 x y)))) |
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 #s(literal -1 binary64) (*.f64 (*.f64 t y) z) (*.f64 t (*.f64 x y)))) |
#s(approx (* (- (* x y) (* z y)) t) (fma.f64 (*.f64 #s(literal -1 binary64) (*.f64 t y)) z (*.f64 t (*.f64 x y)))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 t (+.f64 y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x))))))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x #s(approx (+ (* -1 (/ (* t (* y z)) x)) (* t y)) (*.f64 y (+.f64 t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 t z) x))))))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 x (fma.f64 #s(literal -1 binary64) (/.f64 (*.f64 t (*.f64 y z)) x) (*.f64 t y)))) |
#s(approx (* (- (* x y) (* z y)) t) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 t y) (/.f64 (*.f64 t (*.f64 x y)) z)))) |
| Outputs |
|---|
(*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
24 calls:
| 54.0ms | x |
| 27.0ms | y |
| 18.0ms | (-.f64 (*.f64 x y) (*.f64 z y)) |
| 11.0ms | (*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
| 7.0ms | t |
| Accuracy | Segments | Branch |
|---|---|---|
| 61.1% | 1 | z |
| 61.1% | 1 | t |
| 61.1% | 1 | (-.f64 (*.f64 x y) (*.f64 z y)) |
| 61.1% | 1 | (*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
| 61.1% | 1 | y |
| 61.1% | 1 | x |
| 85.5% | 1 | (-.f64 (*.f64 x y) (*.f64 z y)) |
| 85.5% | 1 | (*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
| 90.7% | 3 | x |
| 85.5% | 1 | y |
| 85.5% | 1 | z |
| 85.5% | 1 | t |
| 98.7% | 1 | (-.f64 (*.f64 x y) (*.f64 z y)) |
| 98.7% | 1 | (*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
| 98.7% | 1 | x |
| 98.7% | 1 | y |
| 98.7% | 1 | z |
| 98.7% | 1 | t |
| 98.7% | 1 | (-.f64 (*.f64 x y) (*.f64 z y)) |
| 98.7% | 1 | (*.f64 (-.f64 (*.f64 x y) (*.f64 z y)) t) |
| 98.7% | 1 | x |
| 98.7% | 1 | y |
| 98.7% | 1 | z |
| 98.7% | 1 | t |
Compiled 698 to 252 computations (63.9% saved)
| 2× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 7.0ms | 5.702223007013232e+166 | 2.86154186699952e+167 |
| 13.0ms | -1.1719578824487519e+90 | -1.9590506690679105e+85 |
| 12.0ms | 224× | 0 | valid |
Compiled 320 to 295 computations (7.8% saved)
ival-sub!: 4.0ms (59.3% of total)ival-mult!: 3.0ms (44.5% of total)adjust: 0.0ms (0% of total)| 1× | fuel |
Compiled 76 to 25 computations (67.1% saved)
Compiled 631 to 349 computations (44.7% saved)
Loading profile data...