
Time bar (total: 5.2s)
| 1× | search |
| Probability | Valid | Unknown | Precondition | Infinite | Domain | Can't | Iter |
|---|---|---|---|---|---|---|---|
| 0% | 0% | 99.7% | 0.3% | 0% | 0% | 0% | 0 |
| 100% | 99.7% | 0% | 0.3% | 0% | 0% | 0% | 1 |
Compiled 17 to 15 computations (11.8% saved)
| 733.0ms | 8 256× | 0 | valid |
ival-mult!: 207.0ms (54.2% of total)ival-add!: 173.0ms (45.3% of total)adjust: 2.0ms (0.5% of total)Useful iterations: 3 (0.0ms)
| Iter | Nodes | Cost |
|---|---|---|
| 0 | 120 | 434 |
| 1 | 579 | 376 |
| 2 | 2468 | 365 |
| 3 | 6568 | 364 |
| 4 | 7185 | 364 |
| 5 | 7820 | 364 |
| 6 | 7987 | 364 |
| 7 | 7987 | 364 |
| 8 | 7987 | 364 |
| 9 | 9784 | 364 |
| 10 | 9802 | 364 |
| 11 | 9802 | 364 |
| 12 | 9802 | 364 |
| 13 | 9802 | 364 |
| 14 | 9802 | 364 |
| 1× | saturated |
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 94.1% | (+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
Compiled 30 to 26 computations (13.3% saved)
| Inputs |
|---|
(+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
(+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) |
(+.f64 x (*.f64 y z)) |
x |
(*.f64 y z) |
y |
z |
(*.f64 t a) |
t |
a |
(*.f64 (*.f64 a z) b) |
(*.f64 a z) |
b |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (fma.f64 a t (*.f64 y z))) |
#s(approx (+ (+ x (* y z)) (* t a)) (+.f64 x (fma.f64 a t (*.f64 y z)))) |
#s(approx (+ x (* y z)) (*.f64 y z)) |
#s(approx (+ x (* y z)) (+.f64 x (*.f64 y z))) |
#s(approx x x) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 x (+.f64 #s(literal 1 binary64) (+.f64 (/.f64 (*.f64 a t) x) (+.f64 (/.f64 (*.f64 a (*.f64 b z)) x) (/.f64 (*.f64 y z) x)))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 x (+.f64 #s(literal 1 binary64) (+.f64 (/.f64 (*.f64 a t) x) (/.f64 (*.f64 y z) x))))) |
#s(approx (+ x (* y z)) (*.f64 x (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 y z) x)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z))) x)) #s(literal 1 binary64))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (fma.f64 a t (*.f64 y z)) x)) #s(literal 1 binary64))))) |
#s(approx (+ x (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x)) #s(literal 1 binary64))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (+.f64 x (*.f64 a t))) |
#s(approx y y) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y (+.f64 z (+.f64 (/.f64 x y) (+.f64 (/.f64 (*.f64 a t) y) (/.f64 (*.f64 a (*.f64 b z)) y)))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 y (+.f64 z (+.f64 (/.f64 x y) (/.f64 (*.f64 a t) y))))) |
#s(approx (+ x (* y z)) (*.f64 y (+.f64 z (/.f64 x y)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z)))) y)))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) y)))))) |
#s(approx (+ x (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 x y)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 z (+.f64 y (*.f64 a b)))))) |
#s(approx z z) |
#s(approx (* (* a z) b) (*.f64 a (*.f64 b z))) |
#s(approx (* a z) (*.f64 a z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (*.f64 a b)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (fma.f64 a b (+.f64 (/.f64 x z) (/.f64 (*.f64 a t) z)))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 z (+.f64 y (+.f64 (/.f64 x z) (/.f64 (*.f64 a t) z))))) |
#s(approx (+ x (* y z)) (*.f64 z (+.f64 y (/.f64 x z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (*.f64 #s(literal -1 binary64) (*.f64 a b)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (fma.f64 #s(literal -1 binary64) (*.f64 a b) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) z))))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) z)))))) |
#s(approx (+ x (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (*.f64 #s(literal -1 binary64) (/.f64 x z)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
#s(approx (* t a) (*.f64 a t)) |
#s(approx t t) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 t (+.f64 a (+.f64 (/.f64 x t) (+.f64 (/.f64 (*.f64 a (*.f64 b z)) t) (/.f64 (*.f64 y z) t)))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 t (+.f64 a (+.f64 (/.f64 x t) (/.f64 (*.f64 y z) t))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z))) t)))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) t)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a (+.f64 t (*.f64 b z)) (*.f64 y z)))) |
#s(approx a a) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (fma.f64 b z (+.f64 (/.f64 x a) (/.f64 (*.f64 y z) a)))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 a (+.f64 t (+.f64 (/.f64 x a) (/.f64 (*.f64 y z) a))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (*.f64 #s(literal -1 binary64) (*.f64 b z)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (fma.f64 #s(literal -1 binary64) (*.f64 b z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) a))))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) a)))))) |
#s(approx b b) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 b (fma.f64 a z (+.f64 (/.f64 x b) (+.f64 (/.f64 (*.f64 a t) b) (/.f64 (*.f64 y z) b)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (fma.f64 a t (*.f64 y z))) b)))))) |
18 calls:
| Time | Variable | Point |
|---|---|---|
| 3.0ms | a | inf |
| 2.0ms | z | -inf |
| 2.0ms | z | 0 |
| 2.0ms | z | inf |
| 2.0ms | a | -inf |
| Inputs |
|---|
(+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
(+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) |
(+.f64 x (*.f64 y z)) |
x |
(*.f64 y z) |
y |
z |
(*.f64 t a) |
t |
a |
(*.f64 (*.f64 a z) b) |
(*.f64 a z) |
b |
| Outputs |
|---|
(+.f64 (fma.f64 t a (fma.f64 y z x)) (*.f64 (*.f64 a z) b)) |
(+.f64 (*.f64 (*.f64 a z) b) (fma.f64 t a (fma.f64 y z x))) |
(+.f64 (fma.f64 y z x) (fma.f64 t a (*.f64 (*.f64 a z) b))) |
(-.f64 (fma.f64 t a (fma.f64 y z x)) (*.f64 (neg.f64 (*.f64 a z)) b)) |
(-.f64 (fma.f64 t a (fma.f64 y z x)) (neg.f64 (*.f64 (*.f64 a z) b))) |
(fma.f64 (*.f64 a z) b (fma.f64 t a (fma.f64 y z x))) |
(fma.f64 a (*.f64 z b) (fma.f64 t a (fma.f64 y z x))) |
(fma.f64 b (*.f64 a z) (fma.f64 t a (fma.f64 y z x))) |
(+.f64 (fma.f64 y z x) (*.f64 t a)) |
(+.f64 (*.f64 t a) (fma.f64 y z x)) |
(+.f64 x (fma.f64 y z (*.f64 t a))) |
(-.f64 (fma.f64 y z x) (neg.f64 (*.f64 t a))) |
(-.f64 (fma.f64 y z x) (*.f64 (neg.f64 t) a)) |
(fma.f64 t a (fma.f64 y z x)) |
(fma.f64 a t (fma.f64 y z x)) |
(+.f64 x (*.f64 y z)) |
(+.f64 (*.f64 y z) x) |
(-.f64 x (neg.f64 (*.f64 y z))) |
(-.f64 x (*.f64 (neg.f64 y) z)) |
(fma.f64 y z x) |
(fma.f64 z y x) |
x |
(*.f64 y z) |
(*.f64 z y) |
y |
z |
(*.f64 t a) |
(*.f64 a t) |
t |
a |
(*.f64 (*.f64 a z) b) |
(*.f64 a (*.f64 z b)) |
(*.f64 b (*.f64 a z)) |
(*.f64 a z) |
(*.f64 z a) |
b |
Compiled 1 787 to 342 computations (80.9% saved)
6 alts after pruning (6 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 71 | 6 | 77 |
| Fresh | 0 | 0 | 0 |
| Picked | 1 | 0 | 1 |
| Done | 0 | 0 | 0 |
| Total | 72 | 6 | 78 |
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 73.7% | (+.f64 #s(approx (+ (+ x (* y z)) (* t a)) (+.f64 x (*.f64 a t))) (*.f64 (*.f64 a z) b)) |
| 70.3% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z)))) | |
| ▶ | 73.5% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
| ▶ | 75.4% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z))))) |
| ▶ | 51.8% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (*.f64 a b)))) |
| ▶ | 51.2% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (*.f64 b z)))) |
Compiled 292 to 208 computations (28.8% saved)
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z))))) |
(+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z)))) |
x |
(fma.f64 a t (*.f64 a (*.f64 b z))) |
a |
t |
(*.f64 a (*.f64 b z)) |
(*.f64 b z) |
b |
z |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (*.f64 b z)))) |
(*.f64 a (+.f64 t (*.f64 b z))) |
(+.f64 t (*.f64 b z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (*.f64 a b)))) |
(*.f64 z (+.f64 y (*.f64 a b))) |
(+.f64 y (*.f64 a b)) |
y |
(*.f64 a b) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
(+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z))) |
(fma.f64 a (*.f64 b z) (*.f64 y z)) |
(*.f64 y z) |
(+.f64 #s(approx (+ (+ x (* y z)) (* t a)) (+.f64 x (*.f64 a t))) (*.f64 (*.f64 a z) b)) |
#s(approx (+ (+ x (* y z)) (* t a)) (+.f64 x (*.f64 a t))) |
(+.f64 x (*.f64 a t)) |
(*.f64 a t) |
(*.f64 (*.f64 a z) b) |
(*.f64 a z) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z))))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (fma.f64 a t (*.f64 a (*.f64 b z)))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z))))) |
#s(approx x x) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (fma.f64 a (*.f64 b z) (*.f64 y z))) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
#s(approx (+ (+ x (* y z)) (* t a)) (fma.f64 a t (*.f64 y z))) |
#s(approx (+ (+ x (* y z)) (* t a)) (+.f64 x (fma.f64 a t (*.f64 y z)))) |
#s(approx (+ x (* a t)) (*.f64 a t)) |
#s(approx (+ x (* a t)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 x (+.f64 #s(literal 1 binary64) (+.f64 (/.f64 (*.f64 a t) x) (+.f64 (/.f64 (*.f64 a (*.f64 b z)) x) (/.f64 (*.f64 y z) x)))))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (*.f64 x (+.f64 #s(literal 1 binary64) (+.f64 (/.f64 (*.f64 a t) x) (/.f64 (*.f64 a (*.f64 b z)) x))))) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (*.f64 x (+.f64 #s(literal 1 binary64) (+.f64 (/.f64 (*.f64 a (*.f64 b z)) x) (/.f64 (*.f64 y z) x))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 x (+.f64 #s(literal 1 binary64) (+.f64 (/.f64 (*.f64 a t) x) (/.f64 (*.f64 y z) x))))) |
#s(approx (+ x (* a t)) (*.f64 x (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 a t) x)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z))) x)) #s(literal 1 binary64))))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (fma.f64 a t (*.f64 a (*.f64 b z))) x)) #s(literal 1 binary64))))) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (fma.f64 a (*.f64 b z) (*.f64 y z)) x)) #s(literal 1 binary64))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (fma.f64 a t (*.f64 y z)) x)) #s(literal 1 binary64))))) |
#s(approx (+ x (* a t)) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a t) x)) #s(literal 1 binary64))))) |
#s(approx (* z (+ y (* a b))) (*.f64 a (*.f64 b z))) |
#s(approx (+ y (* a b)) (*.f64 a b)) |
#s(approx (+ y (* a b)) (+.f64 y (*.f64 a b))) |
#s(approx y y) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (+.f64 x (*.f64 a (*.f64 b z)))) |
#s(approx (* y z) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y (+.f64 z (+.f64 (/.f64 x y) (+.f64 (/.f64 (*.f64 a t) y) (/.f64 (*.f64 a (*.f64 b z)) y)))))) |
#s(approx (* z (+ y (* a b))) (*.f64 y (+.f64 z (/.f64 (*.f64 a (*.f64 b z)) y)))) |
#s(approx (+ y (* a b)) (*.f64 y (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 a b) y)))) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (*.f64 y (+.f64 z (+.f64 (/.f64 x y) (/.f64 (*.f64 a (*.f64 b z)) y))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 y (+.f64 z (+.f64 (/.f64 x y) (/.f64 (*.f64 a t) y))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z)))) y)))))) |
#s(approx (* z (+ y (* a b))) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a (*.f64 b z)) y)))))) |
#s(approx (+ y (* a b)) (*.f64 #s(literal -1 binary64) (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a b) y)) #s(literal 1 binary64))))) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a (*.f64 b z))) y)))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) y)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 z (+.f64 y (*.f64 a b)))))) |
#s(approx (* b z) (*.f64 b z)) |
#s(approx z z) |
#s(approx (+ t (* b z)) t) |
#s(approx (+ t (* b z)) (+.f64 t (*.f64 b z))) |
#s(approx (* z (+ y (* a b))) (*.f64 z (+.f64 y (*.f64 a b)))) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (+.f64 x (*.f64 z (+.f64 y (*.f64 a b))))) |
#s(approx (* a z) (*.f64 a z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (fma.f64 a b (+.f64 (/.f64 x z) (/.f64 (*.f64 a t) z)))))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (*.f64 z (fma.f64 a b (+.f64 (/.f64 x z) (/.f64 (*.f64 a t) z))))) |
#s(approx (+ (* a t) (* a (* b z))) (*.f64 z (fma.f64 a b (/.f64 (*.f64 a t) z)))) |
#s(approx (+ t (* b z)) (*.f64 z (+.f64 b (/.f64 t z)))) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (*.f64 z (+.f64 y (fma.f64 a b (/.f64 x z))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 z (+.f64 y (+.f64 (/.f64 x z) (/.f64 (*.f64 a t) z))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (*.f64 #s(literal -1 binary64) (*.f64 a b)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (fma.f64 #s(literal -1 binary64) (*.f64 a b) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) z))))))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 a b) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) z)))))) |
#s(approx (+ (* a t) (* a (* b z))) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 a b) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a t) z)))))) |
#s(approx (+ t (* b z)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) b (*.f64 #s(literal -1 binary64) (/.f64 t z)))))) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (fma.f64 #s(literal -1 binary64) (*.f64 a b) (*.f64 #s(literal -1 binary64) (/.f64 x z))))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) z)))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (+.f64 x (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 t (+.f64 a (+.f64 (/.f64 x t) (+.f64 (/.f64 (*.f64 a (*.f64 b z)) t) (/.f64 (*.f64 y z) t)))))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (*.f64 t (+.f64 a (+.f64 (/.f64 x t) (/.f64 (*.f64 a (*.f64 b z)) t))))) |
#s(approx (+ (* a t) (* a (* b z))) (*.f64 t (+.f64 a (/.f64 (*.f64 a (*.f64 b z)) t)))) |
#s(approx (+ t (* b z)) (*.f64 t (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 b z) t)))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 t (+.f64 a (+.f64 (/.f64 x t) (/.f64 (*.f64 y z) t))))) |
#s(approx (+ x (* a t)) (*.f64 t (+.f64 a (/.f64 x t)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z))) t)))))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a (*.f64 b z))) t)))))) |
#s(approx (+ (* a t) (* a (* b z))) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a (*.f64 b z)) t)))))) |
#s(approx (+ t (* b z)) (*.f64 #s(literal -1 binary64) (*.f64 t (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 b z) t)) #s(literal 1 binary64))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) t)))))) |
#s(approx (+ x (* a t)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 x t)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a (+.f64 t (*.f64 b z)) (*.f64 y z)))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (+.f64 x (*.f64 a (+.f64 t (*.f64 b z))))) |
#s(approx (+ (* a t) (* a (* b z))) (*.f64 a (+.f64 t (*.f64 b z)))) |
#s(approx a a) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (fma.f64 b z (+.f64 (/.f64 x a) (/.f64 (*.f64 y z) a)))))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (*.f64 a (+.f64 t (fma.f64 b z (/.f64 x a))))) |
#s(approx (* z (+ y (* a b))) (*.f64 a (fma.f64 b z (/.f64 (*.f64 y z) a)))) |
#s(approx (+ y (* a b)) (*.f64 a (+.f64 b (/.f64 y a)))) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (*.f64 a (fma.f64 b z (+.f64 (/.f64 x a) (/.f64 (*.f64 y z) a))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 a (+.f64 t (+.f64 (/.f64 x a) (/.f64 (*.f64 y z) a))))) |
#s(approx (+ x (* a t)) (*.f64 a (+.f64 t (/.f64 x a)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (*.f64 #s(literal -1 binary64) (*.f64 b z)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (fma.f64 #s(literal -1 binary64) (*.f64 b z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) a))))))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (fma.f64 #s(literal -1 binary64) (*.f64 b z) (*.f64 #s(literal -1 binary64) (/.f64 x a))))))) |
#s(approx (* z (+ y (* a b))) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) (*.f64 b z) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) a)))))) |
#s(approx (+ y (* a b)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) b (*.f64 #s(literal -1 binary64) (/.f64 y a)))))) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) (*.f64 b z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) a)))))) |
#s(approx (+ (+ x (* y z)) (* t a)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) a)))))) |
#s(approx (+ x (* a t)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (*.f64 #s(literal -1 binary64) (/.f64 x a)))))) |
#s(approx b b) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 b (fma.f64 a z (+.f64 (/.f64 x b) (+.f64 (/.f64 (*.f64 a t) b) (/.f64 (*.f64 y z) b)))))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (*.f64 b (fma.f64 a z (+.f64 (/.f64 x b) (/.f64 (*.f64 a t) b))))) |
#s(approx (+ (* a t) (* a (* b z))) (*.f64 b (fma.f64 a z (/.f64 (*.f64 a t) b)))) |
#s(approx (+ t (* b z)) (*.f64 b (+.f64 z (/.f64 t b)))) |
#s(approx (* z (+ y (* a b))) (*.f64 b (fma.f64 a z (/.f64 (*.f64 y z) b)))) |
#s(approx (+ y (* a b)) (*.f64 b (+.f64 a (/.f64 y b)))) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (*.f64 b (fma.f64 a z (+.f64 (/.f64 x b) (/.f64 (*.f64 y z) b))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (fma.f64 a t (*.f64 y z))) b)))))) |
#s(approx (+ x (+ (* a t) (* a (* b z)))) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) b)))))) |
#s(approx (+ (* a t) (* a (* b z))) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a t) b)))))) |
#s(approx (+ t (* b z)) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 t b)))))) |
#s(approx (* z (+ y (* a b))) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) b)))))) |
#s(approx (+ y (* a b)) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 y b)))))) |
#s(approx (+ x (+ (* a (* b z)) (* y z))) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) b)))))) |
18 calls:
| Time | Variable | Point |
|---|---|---|
| 6.0ms | b | inf |
| 4.0ms | a | inf |
| 3.0ms | a | -inf |
| 2.0ms | z | -inf |
| 2.0ms | b | -inf |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z))))) |
(+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z)))) |
x |
(fma.f64 a t (*.f64 a (*.f64 b z))) |
a |
t |
(*.f64 a (*.f64 b z)) |
(*.f64 b z) |
b |
z |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (*.f64 b z)))) |
(*.f64 a (+.f64 t (*.f64 b z))) |
(+.f64 t (*.f64 b z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (*.f64 a b)))) |
(*.f64 z (+.f64 y (*.f64 a b))) |
(+.f64 y (*.f64 a b)) |
y |
(*.f64 a b) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
(+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z))) |
(fma.f64 a (*.f64 b z) (*.f64 y z)) |
(*.f64 y z) |
(+.f64 #s(approx (+ (+ x (* y z)) (* t a)) (+.f64 x (*.f64 a t))) (*.f64 (*.f64 a z) b)) |
#s(approx (+ (+ x (* y z)) (* t a)) (+.f64 x (*.f64 a t))) |
(+.f64 x (*.f64 a t)) |
(*.f64 a t) |
(*.f64 (*.f64 a z) b) |
(*.f64 a z) |
| Outputs |
|---|
#s(approx (+ (+ x (* y z)) (* a (+ t (* b z)))) (fma.f64 (fma.f64 b z t) a x)) |
(+.f64 x (*.f64 a (fma.f64 b z t))) |
(+.f64 (*.f64 a (fma.f64 b z t)) x) |
(+.f64 (fma.f64 a t x) (*.f64 a (*.f64 b z))) |
(-.f64 x (neg.f64 (*.f64 a (fma.f64 b z t)))) |
(fma.f64 (fma.f64 b z t) a x) |
(fma.f64 a (fma.f64 b z t) x) |
x |
(*.f64 a (fma.f64 b z t)) |
(*.f64 (fma.f64 b z t) a) |
(+.f64 (*.f64 a (*.f64 b z)) (*.f64 a t)) |
(+.f64 (*.f64 a t) (*.f64 a (*.f64 b z))) |
(-.f64 (*.f64 a t) (*.f64 (neg.f64 a) (*.f64 b z))) |
(-.f64 (*.f64 a t) (neg.f64 (*.f64 a (*.f64 b z)))) |
(fma.f64 (*.f64 a z) b (*.f64 a t)) |
(fma.f64 (*.f64 b z) a (*.f64 a t)) |
(fma.f64 (*.f64 a b) z (*.f64 a t)) |
(fma.f64 a (*.f64 b z) (*.f64 a t)) |
(fma.f64 b (*.f64 a z) (*.f64 a t)) |
(fma.f64 a t (*.f64 a (*.f64 b z))) |
(fma.f64 t a (*.f64 a (*.f64 b z))) |
a |
t |
(*.f64 a (*.f64 b z)) |
(*.f64 (*.f64 a z) b) |
(*.f64 (*.f64 b z) a) |
(*.f64 (*.f64 a b) z) |
(*.f64 b (*.f64 a z)) |
(*.f64 b z) |
(*.f64 z b) |
b |
z |
#s(approx (+ (+ x (* y z)) (* a (+ t (* b z)))) (*.f64 a (fma.f64 b z t))) |
(*.f64 a (fma.f64 b z t)) |
(*.f64 (fma.f64 b z t) a) |
(+.f64 (*.f64 a (*.f64 b z)) (*.f64 a t)) |
(+.f64 (*.f64 a t) (*.f64 a (*.f64 b z))) |
(-.f64 (*.f64 a t) (*.f64 (neg.f64 a) (*.f64 b z))) |
(-.f64 (*.f64 a t) (neg.f64 (*.f64 a (*.f64 b z)))) |
(fma.f64 (*.f64 a z) b (*.f64 a t)) |
(fma.f64 (*.f64 b z) a (*.f64 a t)) |
(fma.f64 (*.f64 a b) z (*.f64 a t)) |
(fma.f64 a (*.f64 b z) (*.f64 a t)) |
(fma.f64 b (*.f64 a z) (*.f64 a t)) |
(fma.f64 a t (*.f64 a (*.f64 b z))) |
(fma.f64 t a (*.f64 a (*.f64 b z))) |
(+.f64 t (*.f64 b z)) |
(+.f64 (*.f64 b z) t) |
(-.f64 t (neg.f64 (*.f64 b z))) |
(-.f64 t (*.f64 (neg.f64 b) z)) |
(fma.f64 b z t) |
(fma.f64 z b t) |
#s(approx (+ (+ x (* y z)) (* a (+ t (* b z)))) (*.f64 z (fma.f64 b a y))) |
(*.f64 z (fma.f64 b a y)) |
(*.f64 (fma.f64 b a y) z) |
(+.f64 (*.f64 a (*.f64 b z)) (*.f64 y z)) |
(+.f64 (*.f64 y z) (*.f64 a (*.f64 b z))) |
(+.f64 (*.f64 y z) (*.f64 z (*.f64 a b))) |
(-.f64 (*.f64 a (*.f64 b z)) (neg.f64 (*.f64 y z))) |
(-.f64 (*.f64 a (*.f64 b z)) (*.f64 (neg.f64 y) z)) |
(fma.f64 a (*.f64 b z) (*.f64 y z)) |
(fma.f64 (*.f64 a z) b (*.f64 y z)) |
(fma.f64 (*.f64 b z) a (*.f64 y z)) |
(fma.f64 (*.f64 a b) z (*.f64 y z)) |
(fma.f64 b (*.f64 a z) (*.f64 y z)) |
(fma.f64 y z (*.f64 a (*.f64 b z))) |
(fma.f64 z y (*.f64 a (*.f64 b z))) |
(fma.f64 y z (*.f64 z (*.f64 a b))) |
(fma.f64 z y (*.f64 z (*.f64 a b))) |
(+.f64 y (*.f64 a b)) |
(+.f64 (*.f64 a b) y) |
(-.f64 y (neg.f64 (*.f64 a b))) |
(-.f64 y (*.f64 (neg.f64 a) b)) |
(fma.f64 b a y) |
(fma.f64 a b y) |
y |
(*.f64 a b) |
(*.f64 b a) |
#s(approx (+ (+ x (* y z)) (* a (+ t (* b z)))) (fma.f64 (fma.f64 b a y) z x)) |
(+.f64 x (*.f64 z (fma.f64 b a y))) |
(+.f64 (*.f64 z (fma.f64 b a y)) x) |
(+.f64 (+.f64 x (*.f64 a (*.f64 b z))) (*.f64 y z)) |
(-.f64 x (neg.f64 (*.f64 z (fma.f64 b a y)))) |
(fma.f64 (fma.f64 b a y) z x) |
(fma.f64 z (fma.f64 b a y) x) |
(*.f64 z (fma.f64 b a y)) |
(*.f64 (fma.f64 b a y) z) |
(+.f64 (*.f64 a (*.f64 b z)) (*.f64 y z)) |
(+.f64 (*.f64 y z) (*.f64 a (*.f64 b z))) |
(+.f64 (*.f64 y z) (*.f64 z (*.f64 a b))) |
(-.f64 (*.f64 a (*.f64 b z)) (neg.f64 (*.f64 y z))) |
(-.f64 (*.f64 a (*.f64 b z)) (*.f64 (neg.f64 y) z)) |
(fma.f64 a (*.f64 b z) (*.f64 y z)) |
(fma.f64 (*.f64 a z) b (*.f64 y z)) |
(fma.f64 (*.f64 b z) a (*.f64 y z)) |
(fma.f64 (*.f64 a b) z (*.f64 y z)) |
(fma.f64 b (*.f64 a z) (*.f64 y z)) |
(fma.f64 y z (*.f64 a (*.f64 b z))) |
(fma.f64 z y (*.f64 a (*.f64 b z))) |
(fma.f64 y z (*.f64 z (*.f64 a b))) |
(fma.f64 z y (*.f64 z (*.f64 a b))) |
(*.f64 y z) |
(*.f64 z y) |
(+.f64 #s(approx (+ x (+ (* y z) (* t a))) (fma.f64 a t x)) (*.f64 a (*.f64 b z))) |
#s(approx (+ x (+ (* y z) (* t a))) (fma.f64 a t x)) |
(+.f64 x (*.f64 a t)) |
(+.f64 (*.f64 a t) x) |
(-.f64 x (neg.f64 (*.f64 a t))) |
(-.f64 x (*.f64 (neg.f64 a) t)) |
(fma.f64 a t x) |
(fma.f64 t a x) |
(*.f64 a t) |
(*.f64 t a) |
(*.f64 a (*.f64 b z)) |
(*.f64 (*.f64 a z) b) |
(*.f64 (*.f64 b z) a) |
(*.f64 (*.f64 a b) z) |
(*.f64 b (*.f64 a z)) |
(*.f64 a z) |
(*.f64 z a) |
Compiled 5 798 to 829 computations (85.7% saved)
10 alts after pruning (10 fresh and 0 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 184 | 9 | 193 |
| Fresh | 0 | 1 | 1 |
| Picked | 5 | 0 | 5 |
| Done | 0 | 0 | 0 |
| Total | 189 | 10 | 199 |
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 75.8% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b z t) a x)) |
| ▶ | 77.7% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b a y) z x)) |
| 49.2% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (*.f64 a z) b (*.f64 y z))) | |
| 70.3% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z)))) | |
| ▶ | 51.8% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 (fma.f64 b a y) z)) |
| ▶ | 29.7% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
| 51.2% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) | |
| ▶ | 25.9% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
| 53.6% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a (* b z)) (* y z))) (+.f64 x (*.f64 a (*.f64 b z))))) | |
| 29.4% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (* z (+ y (* a b))) (*.f64 a (*.f64 b z)))) |
Compiled 514 to 356 computations (30.7% saved)
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b a y) z x)) |
(fma.f64 (fma.f64 b a y) z x) |
(fma.f64 b a y) |
b |
a |
y |
z |
x |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
(*.f64 a #s(approx (+ t (* b z)) t)) |
#s(approx (+ t (* b z)) t) |
t |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
(*.f64 z #s(approx (+ y (* a b)) (*.f64 a b))) |
#s(approx (+ y (* a b)) (*.f64 a b)) |
(*.f64 a b) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 (fma.f64 b a y) z)) |
(*.f64 (fma.f64 b a y) z) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b z t) a x)) |
(fma.f64 (fma.f64 b z t) a x) |
(fma.f64 b z t) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z))))) |
#s(approx (+ (* (+ (* b a) y) z) x) (*.f64 z (+.f64 y (*.f64 a b)))) |
#s(approx (+ (* (+ (* b a) y) z) x) (+.f64 x (*.f64 z (+.f64 y (*.f64 a b))))) |
#s(approx x x) |
#s(approx (+ (* (+ (* b z) t) a) x) (*.f64 a (+.f64 t (*.f64 b z)))) |
#s(approx (+ (* (+ (* b z) t) a) x) (+.f64 x (*.f64 a (+.f64 t (*.f64 b z))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 x (+.f64 #s(literal 1 binary64) (+.f64 (/.f64 (*.f64 a t) x) (+.f64 (/.f64 (*.f64 a (*.f64 b z)) x) (/.f64 (*.f64 y z) x)))))) |
#s(approx (+ (* (+ (* b a) y) z) x) (*.f64 x (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 z (+.f64 y (*.f64 a b))) x)))) |
#s(approx (+ (* (+ (* b z) t) a) x) (*.f64 x (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 a (+.f64 t (*.f64 b z))) x)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z))) x)) #s(literal 1 binary64))))) |
#s(approx (+ (* (+ (* b a) y) z) x) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 z (+.f64 y (*.f64 a b))) x)) #s(literal 1 binary64))))) |
#s(approx (+ (* (+ (* b z) t) a) x) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a (+.f64 t (*.f64 b z))) x)) #s(literal 1 binary64))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z))))) |
#s(approx (+ (* (+ (* b a) y) z) x) (+.f64 x (*.f64 a (*.f64 b z)))) |
#s(approx (+ (* (+ (* b a) y) z) x) (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
#s(approx (+ (* b a) y) (*.f64 a b)) |
#s(approx (+ (* b a) y) (+.f64 y (*.f64 a b))) |
#s(approx y y) |
#s(approx (* z (+ y (* a b))) (*.f64 a (*.f64 b z))) |
#s(approx (* z (+ y (* a b))) (fma.f64 a (*.f64 b z) (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y (+.f64 z (+.f64 (/.f64 x y) (+.f64 (/.f64 (*.f64 a t) y) (/.f64 (*.f64 a (*.f64 b z)) y)))))) |
#s(approx (+ (* (+ (* b a) y) z) x) (*.f64 y (+.f64 z (+.f64 (/.f64 x y) (/.f64 (*.f64 a (*.f64 b z)) y))))) |
#s(approx (+ (* b a) y) (*.f64 y (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 a b) y)))) |
#s(approx (* z (+ y (* a b))) (*.f64 y (+.f64 z (/.f64 (*.f64 a (*.f64 b z)) y)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z)))) y)))))) |
#s(approx (+ (* (+ (* b a) y) z) x) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a (*.f64 b z))) y)))))) |
#s(approx (+ (* b a) y) (*.f64 #s(literal -1 binary64) (*.f64 y (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a b) y)) #s(literal 1 binary64))))) |
#s(approx (* z (+ y (* a b))) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a (*.f64 b z)) y)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 z (+.f64 y (*.f64 a b)))))) |
#s(approx z z) |
#s(approx (* a (+ t (* b z))) (*.f64 a t)) |
#s(approx (* a (+ t (* b z))) (fma.f64 a t (*.f64 a (*.f64 b z)))) |
#s(approx (+ t (* b z)) t) |
#s(approx (+ t (* b z)) (+.f64 t (*.f64 b z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (fma.f64 a b (+.f64 (/.f64 x z) (/.f64 (*.f64 a t) z)))))) |
#s(approx (+ (* (+ (* b a) y) z) x) (*.f64 z (+.f64 y (fma.f64 a b (/.f64 x z))))) |
#s(approx (* a (+ t (* b z))) (*.f64 z (fma.f64 a b (/.f64 (*.f64 a t) z)))) |
#s(approx (+ t (* b z)) (*.f64 b z)) |
#s(approx (+ t (* b z)) (*.f64 z (+.f64 b (/.f64 t z)))) |
#s(approx (+ (* (+ (* b z) t) a) x) (*.f64 z (fma.f64 a b (+.f64 (/.f64 x z) (/.f64 (*.f64 a t) z))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (*.f64 #s(literal -1 binary64) (*.f64 a b)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (fma.f64 #s(literal -1 binary64) (*.f64 a b) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) z))))))) |
#s(approx (+ (* (+ (* b a) y) z) x) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (+.f64 y (*.f64 a b)) (*.f64 #s(literal -1 binary64) (/.f64 x z)))))) |
#s(approx (* a (+ t (* b z))) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 a b) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a t) z)))))) |
#s(approx (+ t (* b z)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) b (*.f64 #s(literal -1 binary64) (/.f64 t z)))))) |
#s(approx (+ (* (+ (* b z) t) a) x) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 a b) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) z)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 t (+.f64 a (+.f64 (/.f64 x t) (+.f64 (/.f64 (*.f64 a (*.f64 b z)) t) (/.f64 (*.f64 y z) t)))))) |
#s(approx (* a (+ t (* b z))) (*.f64 t (+.f64 a (/.f64 (*.f64 a (*.f64 b z)) t)))) |
#s(approx (+ t (* b z)) (*.f64 t (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 b z) t)))) |
#s(approx (+ (* (+ (* b z) t) a) x) (*.f64 t (+.f64 a (+.f64 (/.f64 x t) (/.f64 (*.f64 a (*.f64 b z)) t))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z))) t)))))) |
#s(approx (* a (+ t (* b z))) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a (*.f64 b z)) t)))))) |
#s(approx (+ t (* b z)) (*.f64 #s(literal -1 binary64) (*.f64 t (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 b z) t)) #s(literal 1 binary64))))) |
#s(approx (+ (* (+ (* b z) t) a) x) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a (*.f64 b z))) t)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a (+.f64 t (*.f64 b z)) (*.f64 y z)))) |
#s(approx a a) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (fma.f64 b z (+.f64 (/.f64 x a) (/.f64 (*.f64 y z) a)))))) |
#s(approx (+ (* (+ (* b a) y) z) x) (*.f64 a (fma.f64 b z (+.f64 (/.f64 x a) (/.f64 (*.f64 y z) a))))) |
#s(approx (+ (* b a) y) (*.f64 a (+.f64 b (/.f64 y a)))) |
#s(approx (* z (+ y (* a b))) (*.f64 a (fma.f64 b z (/.f64 (*.f64 y z) a)))) |
#s(approx (+ (* (+ (* b z) t) a) x) (*.f64 a (+.f64 t (fma.f64 b z (/.f64 x a))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (*.f64 #s(literal -1 binary64) (*.f64 b z)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (fma.f64 #s(literal -1 binary64) (*.f64 b z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) a))))))) |
#s(approx (+ (* (+ (* b a) y) z) x) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) (*.f64 b z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) a)))))) |
#s(approx (+ (* b a) y) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) b (*.f64 #s(literal -1 binary64) (/.f64 y a)))))) |
#s(approx (* z (+ y (* a b))) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) (*.f64 b z) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) a)))))) |
#s(approx (+ (* (+ (* b z) t) a) x) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) (+.f64 t (*.f64 b z)) (*.f64 #s(literal -1 binary64) (/.f64 x a)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 y z)))) |
#s(approx b b) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 b (fma.f64 a z (+.f64 (/.f64 x b) (+.f64 (/.f64 (*.f64 a t) b) (/.f64 (*.f64 y z) b)))))) |
#s(approx (+ (* (+ (* b a) y) z) x) (*.f64 b (fma.f64 a z (+.f64 (/.f64 x b) (/.f64 (*.f64 y z) b))))) |
#s(approx (+ (* b a) y) (*.f64 b (+.f64 a (/.f64 y b)))) |
#s(approx (* a (+ t (* b z))) (*.f64 b (fma.f64 a z (/.f64 (*.f64 a t) b)))) |
#s(approx (+ t (* b z)) (*.f64 b (+.f64 z (/.f64 t b)))) |
#s(approx (* z (+ y (* a b))) (*.f64 b (fma.f64 a z (/.f64 (*.f64 y z) b)))) |
#s(approx (+ (* (+ (* b z) t) a) x) (*.f64 b (fma.f64 a z (+.f64 (/.f64 x b) (/.f64 (*.f64 a t) b))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (fma.f64 a t (*.f64 y z))) b)))))) |
#s(approx (+ (* (+ (* b a) y) z) x) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) b)))))) |
#s(approx (+ (* b a) y) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 y b)))))) |
#s(approx (* a (+ t (* b z))) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a t) b)))))) |
#s(approx (+ t (* b z)) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 t b)))))) |
#s(approx (* z (+ y (* a b))) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) b)))))) |
#s(approx (+ (* (+ (* b z) t) a) x) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) b)))))) |
18 calls:
| Time | Variable | Point |
|---|---|---|
| 2.0ms | a | -inf |
| 2.0ms | b | -inf |
| 1.0ms | z | -inf |
| 1.0ms | a | inf |
| 1.0ms | b | inf |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b a y) z x)) |
(fma.f64 (fma.f64 b a y) z x) |
(fma.f64 b a y) |
b |
a |
y |
z |
x |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
(*.f64 a #s(approx (+ t (* b z)) t)) |
#s(approx (+ t (* b z)) t) |
t |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
(*.f64 z #s(approx (+ y (* a b)) (*.f64 a b))) |
#s(approx (+ y (* a b)) (*.f64 a b)) |
(*.f64 a b) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 (fma.f64 b a y) z)) |
(*.f64 (fma.f64 b a y) z) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b z t) a x)) |
(fma.f64 (fma.f64 b z t) a x) |
(fma.f64 b z t) |
| Outputs |
|---|
#s(approx (+ (+ x (* y z)) (* a (+ t (* b z)))) (fma.f64 (fma.f64 b a y) z x)) |
(+.f64 (*.f64 (fma.f64 b a y) z) x) |
(+.f64 x (*.f64 (fma.f64 b a y) z)) |
(-.f64 (*.f64 (fma.f64 b a y) z) (neg.f64 x)) |
(fma.f64 (fma.f64 b a y) z x) |
(fma.f64 z (fma.f64 b a y) x) |
(+.f64 (*.f64 a b) y) |
(+.f64 y (*.f64 a b)) |
(-.f64 (*.f64 a b) (neg.f64 y)) |
(-.f64 y (neg.f64 (*.f64 a b))) |
(-.f64 y (*.f64 (neg.f64 a) b)) |
(fma.f64 b a y) |
(fma.f64 a b y) |
b |
a |
y |
z |
x |
#s(approx (+ (+ x (* y z)) (* a (+ t (* b z)))) (*.f64 a #s(approx (+ t (* b z)) t))) |
(*.f64 a #s(approx (+ t (* b z)) t)) |
#s(approx (+ t (* b z)) t) |
t |
#s(approx (+ (+ x (* y z)) (* a (+ t (* b z)))) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
(*.f64 z #s(approx (+ y (* a b)) (*.f64 a b))) |
#s(approx (+ y (* a b)) (*.f64 a b)) |
(*.f64 a b) |
(*.f64 b a) |
#s(approx (+ (+ x (* y z)) (* a (+ t (* b z)))) (*.f64 (fma.f64 b a y) z)) |
(*.f64 (fma.f64 b a y) z) |
(*.f64 z (fma.f64 b a y)) |
(+.f64 (*.f64 z y) (*.f64 (*.f64 a b) z)) |
(+.f64 (*.f64 z y) (*.f64 z (*.f64 a b))) |
(fma.f64 y z (*.f64 (*.f64 a b) z)) |
(fma.f64 z y (*.f64 (*.f64 a b) z)) |
(fma.f64 y z (*.f64 z (*.f64 a b))) |
(fma.f64 z y (*.f64 z (*.f64 a b))) |
#s(approx (+ (+ x (* y z)) (* a (+ t (* b z)))) (fma.f64 (fma.f64 b z t) a x)) |
(+.f64 (*.f64 (fma.f64 b z t) a) x) |
(+.f64 x (*.f64 (fma.f64 b z t) a)) |
(-.f64 (*.f64 (fma.f64 b z t) a) (neg.f64 x)) |
(fma.f64 (fma.f64 b z t) a x) |
(fma.f64 a (fma.f64 b z t) x) |
(+.f64 (*.f64 b z) t) |
(+.f64 t (*.f64 b z)) |
(-.f64 (*.f64 b z) (neg.f64 t)) |
(-.f64 t (neg.f64 (*.f64 b z))) |
(-.f64 t (*.f64 (neg.f64 b) z)) |
(fma.f64 b z t) |
(fma.f64 z b t) |
Compiled 4 407 to 603 computations (86.3% saved)
11 alts after pruning (8 fresh and 3 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 137 | 6 | 143 |
| Fresh | 3 | 2 | 5 |
| Picked | 2 | 3 | 5 |
| Done | 0 | 0 | 0 |
| Total | 142 | 11 | 153 |
| Status | Accuracy | Program |
|---|---|---|
| ▶ | 49.2% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (*.f64 a z) b (*.f64 y z))) |
| 55.1% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 #s(approx (+ (* b a) y) (*.f64 a b)) z x)) | |
| ▶ | 76.1% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 y z)))) |
| ▶ | 53.0% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 y z))) |
| 51.3% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) | |
| ✓ | 51.8% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 (fma.f64 b a y) z)) |
| ✓ | 29.7% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
| ▶ | 27.4% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
| ▶ | 51.2% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
| 29.4% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) (*.f64 b z)))) | |
| ✓ | 25.9% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
Compiled 446 to 323 computations (27.6% saved)
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 y z)))) |
(+.f64 x (fma.f64 a t (*.f64 y z))) |
x |
(fma.f64 a t (*.f64 y z)) |
a |
t |
(*.f64 y z) |
y |
z |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 y z))) |
(+.f64 x (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
(*.f64 a (fma.f64 z b t)) |
(fma.f64 z b t) |
b |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (*.f64 a z) b (*.f64 y z))) |
(fma.f64 (*.f64 a z) b (*.f64 y z)) |
(*.f64 a z) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z))))) |
#s(approx (+ x (+ (* a t) (* y z))) (fma.f64 a t (*.f64 y z))) |
#s(approx (+ x (+ (* a t) (* y z))) (+.f64 x (fma.f64 a t (*.f64 y z)))) |
#s(approx x x) |
#s(approx (+ x (* y z)) (*.f64 y z)) |
#s(approx (+ x (* y z)) (+.f64 x (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 x (+.f64 #s(literal 1 binary64) (+.f64 (/.f64 (*.f64 a t) x) (+.f64 (/.f64 (*.f64 a (*.f64 b z)) x) (/.f64 (*.f64 y z) x)))))) |
#s(approx (+ x (+ (* a t) (* y z))) (*.f64 x (+.f64 #s(literal 1 binary64) (+.f64 (/.f64 (*.f64 a t) x) (/.f64 (*.f64 y z) x))))) |
#s(approx (+ x (* y z)) (*.f64 x (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 y z) x)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z))) x)) #s(literal 1 binary64))))) |
#s(approx (+ x (+ (* a t) (* y z))) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (fma.f64 a t (*.f64 y z)) x)) #s(literal 1 binary64))))) |
#s(approx (+ x (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 x (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) x)) #s(literal 1 binary64))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z))))) |
#s(approx (+ x (+ (* a t) (* y z))) (+.f64 x (*.f64 a t))) |
#s(approx (+ (* a t) (* y z)) (*.f64 a t)) |
#s(approx y y) |
#s(approx (+ (* (* a z) b) (* y z)) (*.f64 a (*.f64 b z))) |
#s(approx (+ (* (* a z) b) (* y z)) (fma.f64 a (*.f64 b z) (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y (+.f64 z (+.f64 (/.f64 x y) (+.f64 (/.f64 (*.f64 a t) y) (/.f64 (*.f64 a (*.f64 b z)) y)))))) |
#s(approx (+ x (+ (* a t) (* y z))) (*.f64 y (+.f64 z (+.f64 (/.f64 x y) (/.f64 (*.f64 a t) y))))) |
#s(approx (+ (* a t) (* y z)) (*.f64 y (+.f64 z (/.f64 (*.f64 a t) y)))) |
#s(approx (+ x (* y z)) (*.f64 y (+.f64 z (/.f64 x y)))) |
#s(approx (+ (* (* a z) b) (* y z)) (*.f64 y (+.f64 z (/.f64 (*.f64 a (*.f64 b z)) y)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z)))) y)))))) |
#s(approx (+ x (+ (* a t) (* y z))) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) y)))))) |
#s(approx (+ (* a t) (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a t) y)))))) |
#s(approx (+ x (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 x y)))))) |
#s(approx (+ (* (* a z) b) (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 y (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a (*.f64 b z)) y)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 z (+.f64 y (*.f64 a b)))))) |
#s(approx z z) |
#s(approx (* a (+ (* z b) t)) (fma.f64 a t (*.f64 a (*.f64 b z)))) |
#s(approx (+ (* z b) t) t) |
#s(approx (+ (* z b) t) (+.f64 t (*.f64 b z))) |
#s(approx (+ (* (* a z) b) (* y z)) (*.f64 z (+.f64 y (*.f64 a b)))) |
#s(approx (* a z) (*.f64 a z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (fma.f64 a b (+.f64 (/.f64 x z) (/.f64 (*.f64 a t) z)))))) |
#s(approx (+ x (+ (* a t) (* y z))) (*.f64 z (+.f64 y (+.f64 (/.f64 x z) (/.f64 (*.f64 a t) z))))) |
#s(approx (+ (* a t) (* y z)) (*.f64 z (+.f64 y (/.f64 (*.f64 a t) z)))) |
#s(approx (+ x (* y z)) (*.f64 z (+.f64 y (/.f64 x z)))) |
#s(approx (* a (+ (* z b) t)) (*.f64 z (fma.f64 a b (/.f64 (*.f64 a t) z)))) |
#s(approx (+ (* z b) t) (*.f64 b z)) |
#s(approx (+ (* z b) t) (*.f64 z (+.f64 b (/.f64 t z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (*.f64 #s(literal -1 binary64) (*.f64 a b)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (fma.f64 #s(literal -1 binary64) (*.f64 a b) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) z))))))) |
#s(approx (+ x (+ (* a t) (* y z))) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 a t)) z)))))) |
#s(approx (+ (* a t) (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a t) z)))))) |
#s(approx (+ x (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) y (*.f64 #s(literal -1 binary64) (/.f64 x z)))))) |
#s(approx (* a (+ (* z b) t)) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) (*.f64 a b) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a t) z)))))) |
#s(approx (+ (* z b) t) (*.f64 #s(literal -1 binary64) (*.f64 z (fma.f64 #s(literal -1 binary64) b (*.f64 #s(literal -1 binary64) (/.f64 t z)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 t (+.f64 a (+.f64 (/.f64 x t) (+.f64 (/.f64 (*.f64 a (*.f64 b z)) t) (/.f64 (*.f64 y z) t)))))) |
#s(approx (+ x (+ (* a t) (* y z))) (*.f64 t (+.f64 a (+.f64 (/.f64 x t) (/.f64 (*.f64 y z) t))))) |
#s(approx (+ (* a t) (* y z)) (*.f64 t (+.f64 a (/.f64 (*.f64 y z) t)))) |
#s(approx (* a (+ (* z b) t)) (*.f64 t (+.f64 a (/.f64 (*.f64 a (*.f64 b z)) t)))) |
#s(approx (+ (* z b) t) (*.f64 t (+.f64 #s(literal 1 binary64) (/.f64 (*.f64 b z) t)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z))) t)))))) |
#s(approx (+ x (+ (* a t) (* y z))) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) t)))))) |
#s(approx (+ (* a t) (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) t)))))) |
#s(approx (* a (+ (* z b) t)) (*.f64 #s(literal -1 binary64) (*.f64 t (fma.f64 #s(literal -1 binary64) a (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a (*.f64 b z)) t)))))) |
#s(approx (+ (* z b) t) (*.f64 #s(literal -1 binary64) (*.f64 t (-.f64 (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 b z) t)) #s(literal 1 binary64))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a (+.f64 t (*.f64 b z)) (*.f64 y z)))) |
#s(approx a a) |
#s(approx (* a (+ (* z b) t)) (*.f64 a (+.f64 t (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (fma.f64 b z (+.f64 (/.f64 x a) (/.f64 (*.f64 y z) a)))))) |
#s(approx (+ x (+ (* a t) (* y z))) (*.f64 a (+.f64 t (+.f64 (/.f64 x a) (/.f64 (*.f64 y z) a))))) |
#s(approx (+ (* a t) (* y z)) (*.f64 a (+.f64 t (/.f64 (*.f64 y z) a)))) |
#s(approx (+ (* (* a z) b) (* y z)) (*.f64 a (fma.f64 b z (/.f64 (*.f64 y z) a)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (*.f64 #s(literal -1 binary64) (*.f64 b z)))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (fma.f64 #s(literal -1 binary64) (*.f64 b z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) a))))))) |
#s(approx (+ x (+ (* a t) (* y z))) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (*.f64 y z)) a)))))) |
#s(approx (+ (* a t) (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) t (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) a)))))) |
#s(approx (+ (* (* a z) b) (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 a (fma.f64 #s(literal -1 binary64) (*.f64 b z) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) a)))))) |
#s(approx b b) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 b (fma.f64 a z (+.f64 (/.f64 x b) (+.f64 (/.f64 (*.f64 a t) b) (/.f64 (*.f64 y z) b)))))) |
#s(approx (* a (+ (* z b) t)) (*.f64 b (fma.f64 a z (/.f64 (*.f64 a t) b)))) |
#s(approx (+ (* z b) t) (*.f64 b (+.f64 z (/.f64 t b)))) |
#s(approx (+ (* (* a z) b) (* y z)) (*.f64 b (fma.f64 a z (/.f64 (*.f64 y z) b)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (+.f64 x (fma.f64 a t (*.f64 y z))) b)))))) |
#s(approx (* a (+ (* z b) t)) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 a t) b)))))) |
#s(approx (+ (* z b) t) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) z (*.f64 #s(literal -1 binary64) (/.f64 t b)))))) |
#s(approx (+ (* (* a z) b) (* y z)) (*.f64 #s(literal -1 binary64) (*.f64 b (fma.f64 #s(literal -1 binary64) (*.f64 a z) (*.f64 #s(literal -1 binary64) (/.f64 (*.f64 y z) b)))))) |
18 calls:
| Time | Variable | Point |
|---|---|---|
| 2.0ms | z | -inf |
| 1.0ms | a | -inf |
| 1.0ms | z | inf |
| 1.0ms | a | inf |
| 1.0ms | y | -inf |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 y z)))) |
(+.f64 x (fma.f64 a t (*.f64 y z))) |
x |
(fma.f64 a t (*.f64 y z)) |
a |
t |
(*.f64 y z) |
y |
z |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 y z))) |
(+.f64 x (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
(*.f64 a (fma.f64 z b t)) |
(fma.f64 z b t) |
b |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (*.f64 a z) b (*.f64 y z))) |
(fma.f64 (*.f64 a z) b (*.f64 y z)) |
(*.f64 a z) |
| Outputs |
|---|
#s(approx (+ (+ x (* y z)) (+ (* t a) (* a (* z b)))) (fma.f64 t a (fma.f64 y z x))) |
(+.f64 (*.f64 t a) (fma.f64 y z x)) |
(+.f64 (fma.f64 y z x) (*.f64 t a)) |
(+.f64 x (fma.f64 a t (*.f64 y z))) |
(+.f64 (fma.f64 a t (*.f64 y z)) x) |
(+.f64 (+.f64 x (*.f64 t a)) (*.f64 y z)) |
(-.f64 (fma.f64 y z x) (neg.f64 (*.f64 t a))) |
(-.f64 (fma.f64 y z x) (*.f64 (neg.f64 t) a)) |
(-.f64 x (neg.f64 (fma.f64 a t (*.f64 y z)))) |
(fma.f64 t a (fma.f64 y z x)) |
(fma.f64 a t (fma.f64 y z x)) |
x |
(+.f64 (*.f64 t a) (*.f64 y z)) |
(+.f64 (*.f64 y z) (*.f64 t a)) |
(-.f64 (*.f64 t a) (neg.f64 (*.f64 y z))) |
(-.f64 (*.f64 t a) (*.f64 (neg.f64 y) z)) |
(fma.f64 a t (*.f64 y z)) |
(fma.f64 y z (*.f64 t a)) |
(fma.f64 z y (*.f64 t a)) |
(fma.f64 t a (*.f64 y z)) |
a |
t |
(*.f64 y z) |
(*.f64 z y) |
y |
z |
#s(approx (+ (+ x (* y z)) (+ (* t a) (* a (* z b)))) (*.f64 y z)) |
#s(approx (+ (+ x (* y z)) (+ (* t a) (* a (* z b)))) (fma.f64 y z x)) |
(+.f64 x (*.f64 y z)) |
(+.f64 (*.f64 y z) x) |
(-.f64 x (neg.f64 (*.f64 y z))) |
(-.f64 x (*.f64 (neg.f64 y) z)) |
(fma.f64 y z x) |
(fma.f64 z y x) |
#s(approx (+ (+ x (* y z)) (+ (* t a) (* a (* z b)))) (*.f64 a (fma.f64 z b t))) |
(*.f64 a (fma.f64 z b t)) |
(*.f64 (fma.f64 z b t) a) |
(+.f64 (*.f64 (*.f64 a z) b) (*.f64 t a)) |
(+.f64 (*.f64 (*.f64 z b) a) (*.f64 t a)) |
(fma.f64 (*.f64 a z) b (*.f64 t a)) |
(fma.f64 (*.f64 z b) a (*.f64 t a)) |
(fma.f64 a (*.f64 z b) (*.f64 t a)) |
(fma.f64 b (*.f64 a z) (*.f64 t a)) |
(+.f64 (*.f64 z b) t) |
(+.f64 t (*.f64 z b)) |
(-.f64 (*.f64 z b) (neg.f64 t)) |
(fma.f64 z b t) |
(fma.f64 b z t) |
b |
#s(approx (+ (+ x (* y z)) (+ (* t a) (* a (* z b)))) (fma.f64 (*.f64 a z) b (*.f64 y z))) |
(+.f64 (*.f64 (*.f64 a z) b) (*.f64 y z)) |
(+.f64 (*.f64 y z) (*.f64 (*.f64 a z) b)) |
(-.f64 (*.f64 (*.f64 a z) b) (neg.f64 (*.f64 y z))) |
(-.f64 (*.f64 (*.f64 a z) b) (*.f64 (neg.f64 y) z)) |
(fma.f64 (*.f64 a z) b (*.f64 y z)) |
(fma.f64 a (*.f64 z b) (*.f64 y z)) |
(fma.f64 b (*.f64 a z) (*.f64 y z)) |
(fma.f64 y z (*.f64 (*.f64 a z) b)) |
(fma.f64 z y (*.f64 (*.f64 a z) b)) |
(*.f64 a z) |
(*.f64 z a) |
Compiled 4 232 to 580 computations (86.3% saved)
11 alts after pruning (5 fresh and 6 done)
| Pruned | Kept | Total | |
|---|---|---|---|
| New | 140 | 3 | 143 |
| Fresh | 1 | 2 | 3 |
| Picked | 2 | 3 | 5 |
| Done | 0 | 3 | 3 |
| Total | 143 | 11 | 154 |
| Status | Accuracy | Program |
|---|---|---|
| ✓ | 49.2% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (*.f64 a z) b (*.f64 y z))) |
| 55.1% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 #s(approx (+ (* b a) y) (*.f64 a b)) z x)) | |
| 53.0% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) | |
| 51.3% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) | |
| ✓ | 51.8% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 (fma.f64 b a y) z)) |
| ✓ | 29.7% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
| ✓ | 27.4% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
| ✓ | 51.2% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
| 29.4% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ (* z b) t) (*.f64 b z)))) | |
| ✓ | 25.9% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
| 50.3% | #s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a t) (* y z))) (fma.f64 a t (*.f64 y z)))) |
Compiled 267 to 190 computations (28.8% saved)
Total -0.0b remaining (-0%)
Threshold costs -0b (-0%)
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 y z))) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (* z (+ y (* a b))) (*.f64 a (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ (* z b) t) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (* z (+ y (* a b))) (*.f64 a (*.f64 b z)))) |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (* z (+ y (* a b))) (*.f64 a (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ (* z b) t) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a t) (* y z))) (fma.f64 a t (*.f64 y z)))) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a t) (* y z))) (fma.f64 a t (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (* z (+ y (* a b))) (*.f64 a (*.f64 b z)))) |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (* z (+ y (* a b))) (*.f64 a (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ (* z b) t) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a t) (* y z))) (fma.f64 a t (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 (fma.f64 b a y) z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 #s(approx (+ (* b a) y) (*.f64 a b)) z x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a (* b z)) (* y z))) (+.f64 x (*.f64 a (*.f64 b z))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (*.f64 a b)))) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (* z (+ y (* a b))) (*.f64 a (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ (* z b) t) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a t) (* y z))) (fma.f64 a t (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 (fma.f64 b a y) z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 #s(approx (+ (* b a) y) (*.f64 a b)) z x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a (* b z)) (* y z))) (+.f64 x (*.f64 a (*.f64 b z))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (*.f64 a b)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b a y) z x)) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b a y) z x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a t) (* y z))) (fma.f64 a t (*.f64 y z)))) |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (* z (+ y (* a b))) (*.f64 a (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ (* z b) t) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a t) (* y z))) (fma.f64 a t (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 (fma.f64 b a y) z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 #s(approx (+ (* b a) y) (*.f64 a b)) z x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a (* b z)) (* y z))) (+.f64 x (*.f64 a (*.f64 b z))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (*.f64 a b)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b a y) z x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b z t) a x)) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b z t) a x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b a y) z x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b z t) a x)) |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (* z (+ y (* a b))) (*.f64 a (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ (* z b) t) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a t) (* y z))) (fma.f64 a t (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 (fma.f64 b a y) z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 #s(approx (+ (* b a) y) (*.f64 a b)) z x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a (* b z)) (* y z))) (+.f64 x (*.f64 a (*.f64 b z))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (*.f64 a b)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b a y) z x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b z t) a x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (*.f64 a z) b (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
(+.f64 #s(approx (+ (+ x (* y z)) (* t a)) (+.f64 x (*.f64 a t))) (*.f64 (*.f64 a z) b)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
| Outputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b z t) a x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b a y) z x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 y z)))) |
| Inputs |
|---|
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 y z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 z y x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 a t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (* z (+ y (* a b))) (*.f64 a (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ t (* b z)) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a #s(approx (+ (* z b) t) (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z #s(approx (+ y (* a b)) (*.f64 a b)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a t) (* y z))) (fma.f64 a t (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 (fma.f64 b a y) z)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 #s(approx (+ (* b a) y) (*.f64 a b)) z x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) #s(approx (+ x (+ (* a (* b z)) (* y z))) (+.f64 x (*.f64 a (*.f64 b z))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (+.f64 t (*.f64 b z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 z (+.f64 y (*.f64 a b)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b a y) z x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (fma.f64 b z t) a x)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 y z)))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 (*.f64 a z) b (*.f64 y z))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a t (*.f64 a (*.f64 b z))))) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (+.f64 x (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
(+.f64 #s(approx (+ (+ x (* y z)) (* t a)) (+.f64 x (*.f64 a t))) (*.f64 (*.f64 a z) b)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (fma.f64 a t (fma.f64 a (*.f64 b z) (*.f64 y z)))) |
(+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
| Outputs |
|---|
(+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
#s(approx (+ (+ (+ x (* y z)) (* t a)) (* (* a z) b)) (*.f64 a (fma.f64 z b t))) |
59 calls:
| 968.0ms | (+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
| 55.0ms | x |
| 55.0ms | a |
| 28.0ms | b |
| 16.0ms | b |
| Accuracy | Segments | Branch |
|---|---|---|
| 25.9% | 1 | b |
| 25.9% | 1 | (+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
| 25.9% | 1 | x |
| 25.9% | 1 | y |
| 25.9% | 1 | z |
| 25.9% | 1 | t |
| 25.9% | 1 | a |
| 29.4% | 2 | b |
| 30.4% | 2 | (+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
| 38.9% | 3 | y |
| 39.7% | 3 | z |
| 32.1% | 2 | x |
| 40.5% | 3 | t |
| 41.0% | 3 | a |
| 53.0% | 1 | y |
| 53.0% | 1 | b |
| 53.0% | 1 | z |
| 53.0% | 1 | (+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
| 61.9% | 3 | t |
| 62.0% | 2 | a |
| 65.0% | 3 | z |
| 58.0% | 2 | x |
| 66.1% | 3 | t |
| 64.5% | 3 | y |
| 66.7% | 3 | a |
| 69.8% | 3 | a |
| 68.5% | 3 | x |
| 68.6% | 3 | t |
| 70.3% | 5 | z |
| 65.7% | 3 | (+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
| 66.3% | 4 | b |
| 71.5% | 4 | a |
| 73.5% | 4 | x |
| 77.4% | 3 | z |
| 71.9% | 5 | y |
| 80.9% | 3 | a |
| 73.9% | 4 | t |
| 77.7% | 1 | (+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
| 85.3% | 3 | z |
| 81.2% | 3 | x |
| 77.7% | 1 | b |
| 88.7% | 3 | t |
| 85.7% | 2 | a |
| 91.1% | 3 | a |
| 90.6% | 3 | t |
| 88.8% | 4 | y |
| 90.1% | 3 | x |
| 92.8% | 3 | t |
| 89.6% | 3 | z |
| 90.5% | 3 | b |
| 91.8% | 3 | a |
| 90.6% | 4 | (+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
| 99.2% | 2 | (+.f64 (+.f64 (+.f64 x (*.f64 y z)) (*.f64 t a)) (*.f64 (*.f64 a z) b)) |
| 94.1% | 1 | x |
| 94.1% | 1 | y |
| 96.1% | 2 | z |
| 95.7% | 2 | t |
| 97.2% | 2 | a |
| 96.9% | 2 | b |
Compiled 767 to 502 computations (34.6% saved)
| 1× | left-value |
| Time | Left | Right |
|---|---|---|
| 0.0ms | +inf | NaN |
Compiled 18 to 22 computations (-22.2% saved)
| 2× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 11.0ms | 5.5670694942057536e+57 | 2.833548006470329e+59 |
| 12.0ms | -4.6304277604667617e+89 | -2.220853686234024e+86 |
| 13.0ms | 240× | 0 | valid |
Compiled 715 to 539 computations (24.6% saved)
ival-mult!: 4.0ms (69.9% of total)ival-add!: 1.0ms (17.5% of total)adjust: 0.0ms (0% of total)| 2× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 10.0ms | 6.243355212931271e+21 | 3.7030526423441646e+23 |
| 13.0ms | -961456837603.0092 | -2455059.152796053 |
| 13.0ms | 256× | 0 | valid |
Compiled 754 to 566 computations (24.9% saved)
ival-mult!: 4.0ms (67% of total)ival-add!: 1.0ms (16.8% of total)adjust: 0.0ms (0% of total)| 2× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 14.0ms | 8.83001402572846e+81 | 1.3634742220676693e+94 |
| 10.0ms | -4.6304277604667617e+89 | -2.220853686234024e+86 |
| 14.0ms | 272× | 0 | valid |
Compiled 928 to 674 computations (27.4% saved)
ival-mult!: 5.0ms (78.3% of total)ival-add!: 2.0ms (31.3% of total)adjust: 0.0ms (0% of total)| 2× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 8.0ms | 6.243355212931271e+21 | 3.7030526423441646e+23 |
| 11.0ms | -961456837603.0092 | -2455059.152796053 |
| 12.0ms | 176× | 0 | valid |
Compiled 690 to 550 computations (20.3% saved)
ival-mult!: 3.0ms (72.2% of total)ival-add!: 1.0ms (24.1% of total)adjust: 0.0ms (0% of total)| 3× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 14.0ms | 1.1828596337609655e+59 | 5.474485720781476e+71 |
| 14.0ms | 2.003497077698505e-13 | 0.0010865384093400603 |
| 1.0ms | -961456837603.0092 | -2455059.152796053 |
| 16.0ms | 320× | 0 | valid |
Compiled 1 517 to 1 109 computations (26.9% saved)
ival-mult!: 5.0ms (67.8% of total)ival-add!: 2.0ms (27.1% of total)adjust: 0.0ms (0% of total)| 2× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 16.0ms | 1.1828596337609655e+59 | 5.474485720781476e+71 |
| 1.0ms | -961456837603.0092 | -2455059.152796053 |
| 11.0ms | 144× | 0 | valid |
Compiled 877 to 689 computations (21.4% saved)
ival-mult!: 3.0ms (88.9% of total)ival-add!: 1.0ms (29.6% of total)adjust: 0.0ms (0% of total)| 2× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 13.0ms | 3.7030526423441646e+23 | 1.5352635110905904e+30 |
| 1.0ms | -961456837603.0092 | -2455059.152796053 |
| 8.0ms | 144× | 0 | valid |
Compiled 756 to 616 computations (18.5% saved)
ival-mult!: 3.0ms (83.9% of total)ival-add!: 1.0ms (28% of total)adjust: 0.0ms (0% of total)| 1× | binary-search |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 20.0ms | -9.449561528910126e+73 | -1.624994206261585e+69 |
| 12.0ms | 128× | 0 | valid |
Compiled 378 to 302 computations (20.1% saved)
ival-mult!: 4.0ms (70.2% of total)ival-add!: 1.0ms (17.5% of total)adjust: 0.0ms (0% of total)| 2× | binary-search |
| 1× | narrow-enough |
| 1× | narrow-enough |
| Time | Left | Right |
|---|---|---|
| 2.0ms | 3.7030526423441646e+23 | 1.5352635110905904e+30 |
| 2.0ms | -961456837603.0092 | -2455059.152796053 |
Compiled 810 to 652 computations (19.5% saved)
| 1× | fuel |
Compiled 780 to 104 computations (86.7% saved)
Compiled 795 to 117 computations (85.3% saved)
Loading profile data...