Details

Time bar (total: 5.1s)

analyze2.1s (42.1%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.6%0.4%0
0%99.6%0.4%1
0%99.6%0.4%2
0%99.6%0.4%3
0%99.6%0.4%4
0%99.6%0.4%5
0%99.6%0.4%6
0%99.6%0.4%7
0%99.6%0.4%8
0%99.6%0.4%9
0%99.6%0.4%10
0%99.6%0.4%11
0%99.6%0.4%12
0%99.6%0.4%13
0%99.6%0.4%14
Compiler

Compiled 24 to 16 computations (33.3% saved)

sample2.4s (46.8%)

Results
1.4s8256×body128valid
959.0ms5655×body128invalid

preprocess43.0ms (0.8%)

Algorithm
egg-herbie
Rules
771×fma-def_binary64
326×associate-+l+_binary64
288×associate-+r+_binary64
214×+-commutative_binary64
28×*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0133580
1359464
21006464
31746464
41884464
51890464
088
188
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
2
3
4
5
6
7
Outputs
0
1
0
2
3
2
4
5
4
6
7
6
Call 2
Inputs
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 y x) (*.f64 z t)) (*.f64 a b)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 z y) (*.f64 x t)) (*.f64 a b)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 t y) (*.f64 z x)) (*.f64 a b)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 a y) (*.f64 z t)) (*.f64 x b)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 b y) (*.f64 z t)) (*.f64 a x)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 c y) (*.f64 z t)) (*.f64 a b)) (*.f64 x i))
(+.f64 (+.f64 (+.f64 (*.f64 i y) (*.f64 z t)) (*.f64 a b)) (*.f64 c x))
(+.f64 (+.f64 (+.f64 (*.f64 x z) (*.f64 y t)) (*.f64 a b)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 x t) (*.f64 z y)) (*.f64 a b)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 x a) (*.f64 z t)) (*.f64 y b)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 x b) (*.f64 z t)) (*.f64 a y)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 x c) (*.f64 z t)) (*.f64 a b)) (*.f64 y i))
(+.f64 (+.f64 (+.f64 (*.f64 x i) (*.f64 z t)) (*.f64 a b)) (*.f64 c y))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 t z)) (*.f64 a b)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 a t)) (*.f64 z b)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 b t)) (*.f64 a z)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 c t)) (*.f64 a b)) (*.f64 z i))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 i t)) (*.f64 a b)) (*.f64 c z))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z a)) (*.f64 t b)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z b)) (*.f64 a t)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z c)) (*.f64 a b)) (*.f64 t i))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z i)) (*.f64 a b)) (*.f64 c t))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 b a)) (*.f64 c i))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 c b)) (*.f64 a i))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 i b)) (*.f64 c a))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a c)) (*.f64 b i))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a i)) (*.f64 c b))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b)) (*.f64 i c))
Outputs
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b)) (*.f64 c i))
(+.f64 (fma.f64 x y (*.f64 z t)) (+.f64 (*.f64 a b) (*.f64 c i)))
(fma.f64 c i (fma.f64 a b (fma.f64 x y (*.f64 z t))))
(fma.f64 c i (fma.f64 z t (fma.f64 x y (*.f64 a b))))
(fma.f64 z t (fma.f64 c i (fma.f64 x y (*.f64 a b))))
(+.f64 (+.f64 (+.f64 (*.f64 y x) (*.f64 z t)) (*.f64 a b)) (*.f64 c i))
(+.f64 (fma.f64 x y (*.f64 z t)) (+.f64 (*.f64 a b) (*.f64 c i)))
(fma.f64 c i (fma.f64 a b (fma.f64 x y (*.f64 z t))))
(fma.f64 c i (fma.f64 z t (fma.f64 x y (*.f64 a b))))
(fma.f64 z t (fma.f64 c i (fma.f64 x y (*.f64 a b))))
(+.f64 (+.f64 (+.f64 (*.f64 z y) (*.f64 x t)) (*.f64 a b)) (*.f64 c i))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (fma.f64 x t (*.f64 y z))))
(fma.f64 c i (fma.f64 x t (fma.f64 y z (*.f64 a b))))
(fma.f64 y z (fma.f64 x t (fma.f64 a b (*.f64 c i))))
(fma.f64 x t (fma.f64 a b (fma.f64 y z (*.f64 c i))))
(+.f64 (+.f64 (+.f64 (*.f64 t y) (*.f64 z x)) (*.f64 a b)) (*.f64 c i))
(+.f64 (fma.f64 x z (*.f64 y t)) (+.f64 (*.f64 a b) (*.f64 c i)))
(fma.f64 c i (fma.f64 a b (fma.f64 x z (*.f64 y t))))
(fma.f64 y t (fma.f64 x z (fma.f64 a b (*.f64 c i))))
(fma.f64 x z (fma.f64 c i (fma.f64 y t (*.f64 a b))))
(+.f64 (+.f64 (+.f64 (*.f64 a y) (*.f64 z t)) (*.f64 x b)) (*.f64 c i))
(+.f64 (fma.f64 a y (*.f64 z t)) (+.f64 (*.f64 x b) (*.f64 c i)))
(fma.f64 c i (fma.f64 x b (fma.f64 y a (*.f64 z t))))
(fma.f64 x b (fma.f64 c i (fma.f64 y a (*.f64 z t))))
(fma.f64 x b (fma.f64 y a (fma.f64 c i (*.f64 z t))))
(+.f64 (+.f64 (+.f64 (*.f64 b y) (*.f64 z t)) (*.f64 a x)) (*.f64 c i))
(+.f64 (*.f64 c i) (+.f64 (fma.f64 b y (*.f64 z t)) (*.f64 x a)))
(fma.f64 c i (fma.f64 x a (fma.f64 y b (*.f64 z t))))
(fma.f64 x a (fma.f64 z t (fma.f64 y b (*.f64 c i))))
(fma.f64 y b (fma.f64 x a (fma.f64 c i (*.f64 z t))))
(+.f64 (+.f64 (+.f64 (*.f64 c y) (*.f64 z t)) (*.f64 a b)) (*.f64 x i))
(+.f64 (fma.f64 c y (*.f64 z t)) (+.f64 (*.f64 a b) (*.f64 x i)))
(fma.f64 x i (fma.f64 y c (fma.f64 z t (*.f64 a b))))
(+.f64 (+.f64 (+.f64 (*.f64 i y) (*.f64 z t)) (*.f64 a b)) (*.f64 c x))
(+.f64 (fma.f64 i y (*.f64 z t)) (+.f64 (*.f64 a b) (*.f64 x c)))
(fma.f64 x c (fma.f64 y i (fma.f64 z t (*.f64 a b))))
(+.f64 (+.f64 (+.f64 (*.f64 x z) (*.f64 y t)) (*.f64 a b)) (*.f64 c i))
(+.f64 (fma.f64 x z (*.f64 y t)) (+.f64 (*.f64 a b) (*.f64 c i)))
(fma.f64 c i (fma.f64 a b (fma.f64 x z (*.f64 y t))))
(fma.f64 y t (fma.f64 x z (fma.f64 a b (*.f64 c i))))
(fma.f64 x z (fma.f64 c i (fma.f64 y t (*.f64 a b))))
(+.f64 (+.f64 (+.f64 (*.f64 x t) (*.f64 z y)) (*.f64 a b)) (*.f64 c i))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (fma.f64 x t (*.f64 y z))))
(fma.f64 c i (fma.f64 x t (fma.f64 y z (*.f64 a b))))
(fma.f64 y z (fma.f64 x t (fma.f64 a b (*.f64 c i))))
(fma.f64 x t (fma.f64 a b (fma.f64 y z (*.f64 c i))))
(+.f64 (+.f64 (+.f64 (*.f64 x a) (*.f64 z t)) (*.f64 y b)) (*.f64 c i))
(+.f64 (*.f64 c i) (+.f64 (fma.f64 b y (*.f64 z t)) (*.f64 x a)))
(fma.f64 c i (fma.f64 x a (fma.f64 y b (*.f64 z t))))
(fma.f64 x a (fma.f64 z t (fma.f64 y b (*.f64 c i))))
(fma.f64 y b (fma.f64 x a (fma.f64 c i (*.f64 z t))))
(+.f64 (+.f64 (+.f64 (*.f64 x b) (*.f64 z t)) (*.f64 a y)) (*.f64 c i))
(+.f64 (fma.f64 a y (*.f64 z t)) (+.f64 (*.f64 x b) (*.f64 c i)))
(fma.f64 c i (fma.f64 x b (fma.f64 y a (*.f64 z t))))
(fma.f64 x b (fma.f64 c i (fma.f64 y a (*.f64 z t))))
(fma.f64 x b (fma.f64 y a (fma.f64 c i (*.f64 z t))))
(+.f64 (+.f64 (+.f64 (*.f64 x c) (*.f64 z t)) (*.f64 a b)) (*.f64 y i))
(+.f64 (fma.f64 i y (*.f64 z t)) (+.f64 (*.f64 a b) (*.f64 x c)))
(fma.f64 x c (fma.f64 y i (fma.f64 z t (*.f64 a b))))
(+.f64 (+.f64 (+.f64 (*.f64 x i) (*.f64 z t)) (*.f64 a b)) (*.f64 c y))
(+.f64 (fma.f64 c y (*.f64 z t)) (+.f64 (*.f64 a b) (*.f64 x i)))
(fma.f64 x i (fma.f64 y c (fma.f64 z t (*.f64 a b))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 t z)) (*.f64 a b)) (*.f64 c i))
(+.f64 (fma.f64 x y (*.f64 z t)) (+.f64 (*.f64 a b) (*.f64 c i)))
(fma.f64 c i (fma.f64 a b (fma.f64 x y (*.f64 z t))))
(fma.f64 c i (fma.f64 z t (fma.f64 x y (*.f64 a b))))
(fma.f64 z t (fma.f64 c i (fma.f64 x y (*.f64 a b))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 a t)) (*.f64 z b)) (*.f64 c i))
(+.f64 (*.f64 c i) (+.f64 (fma.f64 x y (*.f64 t a)) (*.f64 z b)))
(fma.f64 c i (fma.f64 x y (fma.f64 z b (*.f64 t a))))
(fma.f64 z b (fma.f64 x y (fma.f64 t a (*.f64 c i))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 b t)) (*.f64 a z)) (*.f64 c i))
(+.f64 (*.f64 c i) (+.f64 (fma.f64 x y (*.f64 t b)) (*.f64 z a)))
(fma.f64 c i (fma.f64 t b (fma.f64 x y (*.f64 z a))))
(fma.f64 t b (fma.f64 c i (fma.f64 x y (*.f64 z a))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 c t)) (*.f64 a b)) (*.f64 z i))
(+.f64 (fma.f64 x y (*.f64 t c)) (+.f64 (*.f64 a b) (*.f64 z i)))
(fma.f64 z i (fma.f64 x y (fma.f64 a b (*.f64 t c))))
(fma.f64 x y (fma.f64 z i (fma.f64 a b (*.f64 t c))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 i t)) (*.f64 a b)) (*.f64 c z))
(+.f64 (fma.f64 x y (*.f64 t i)) (+.f64 (*.f64 a b) (*.f64 z c)))
(fma.f64 t i (fma.f64 x y (fma.f64 z c (*.f64 a b))))
(fma.f64 x y (fma.f64 t i (fma.f64 z c (*.f64 a b))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z a)) (*.f64 t b)) (*.f64 c i))
(+.f64 (*.f64 c i) (+.f64 (fma.f64 x y (*.f64 t b)) (*.f64 z a)))
(fma.f64 c i (fma.f64 t b (fma.f64 x y (*.f64 z a))))
(fma.f64 t b (fma.f64 c i (fma.f64 x y (*.f64 z a))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z b)) (*.f64 a t)) (*.f64 c i))
(+.f64 (*.f64 c i) (+.f64 (fma.f64 x y (*.f64 t a)) (*.f64 z b)))
(fma.f64 c i (fma.f64 x y (fma.f64 z b (*.f64 t a))))
(fma.f64 z b (fma.f64 x y (fma.f64 t a (*.f64 c i))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z c)) (*.f64 a b)) (*.f64 t i))
(+.f64 (fma.f64 x y (*.f64 t i)) (+.f64 (*.f64 a b) (*.f64 z c)))
(fma.f64 t i (fma.f64 x y (fma.f64 z c (*.f64 a b))))
(fma.f64 x y (fma.f64 t i (fma.f64 z c (*.f64 a b))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z i)) (*.f64 a b)) (*.f64 c t))
(+.f64 (fma.f64 x y (*.f64 t c)) (+.f64 (*.f64 a b) (*.f64 z i)))
(fma.f64 z i (fma.f64 x y (fma.f64 a b (*.f64 t c))))
(fma.f64 x y (fma.f64 z i (fma.f64 a b (*.f64 t c))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 b a)) (*.f64 c i))
(+.f64 (fma.f64 x y (*.f64 z t)) (+.f64 (*.f64 a b) (*.f64 c i)))
(fma.f64 c i (fma.f64 a b (fma.f64 x y (*.f64 z t))))
(fma.f64 c i (fma.f64 z t (fma.f64 x y (*.f64 a b))))
(fma.f64 z t (fma.f64 c i (fma.f64 x y (*.f64 a b))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 c b)) (*.f64 a i))
(+.f64 (fma.f64 x y (*.f64 z t)) (+.f64 (*.f64 b c) (*.f64 a i)))
(fma.f64 a i (fma.f64 b c (fma.f64 x y (*.f64 z t))))
(fma.f64 a i (fma.f64 x y (fma.f64 b c (*.f64 z t))))
(fma.f64 z t (fma.f64 b c (fma.f64 a i (*.f64 x y))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 i b)) (*.f64 c a))
(+.f64 (fma.f64 x y (*.f64 z t)) (+.f64 (*.f64 b i) (*.f64 a c)))
(fma.f64 a c (fma.f64 b i (fma.f64 x y (*.f64 z t))))
(fma.f64 x y (fma.f64 z t (fma.f64 a c (*.f64 b i))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a c)) (*.f64 b i))
(+.f64 (fma.f64 x y (*.f64 z t)) (+.f64 (*.f64 b i) (*.f64 a c)))
(fma.f64 a c (fma.f64 b i (fma.f64 x y (*.f64 z t))))
(fma.f64 x y (fma.f64 z t (fma.f64 a c (*.f64 b i))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a i)) (*.f64 c b))
(+.f64 (fma.f64 x y (*.f64 z t)) (+.f64 (*.f64 b c) (*.f64 a i)))
(fma.f64 a i (fma.f64 b c (fma.f64 x y (*.f64 z t))))
(fma.f64 a i (fma.f64 x y (fma.f64 b c (*.f64 z t))))
(fma.f64 z t (fma.f64 b c (fma.f64 a i (*.f64 x y))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b)) (*.f64 i c))
(+.f64 (fma.f64 x y (*.f64 z t)) (+.f64 (*.f64 a b) (*.f64 c i)))
(fma.f64 c i (fma.f64 a b (fma.f64 x y (*.f64 z t))))
(fma.f64 c i (fma.f64 z t (fma.f64 x y (*.f64 a b))))
(fma.f64 z t (fma.f64 c i (fma.f64 x y (*.f64 a b))))
Symmetry

(sort x y)

(sort z t)

(sort a b)

(sort c i)

Compiler

Compiled 23 to 15 computations (34.8% saved)

simplify13.0ms (0.3%)

Algorithm
egg-herbie
Rules
58×fma-def_binary64
23×associate-+l+_binary64
22×associate-+r+_binary64
16×+-commutative_binary64
*-commutative_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01620
12816
26316
312516
415016
515216
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b)) (*.f64 c i))
Outputs
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b)) (*.f64 c i))
(+.f64 (fma.f64 x y (*.f64 z t)) (+.f64 (*.f64 a b) (*.f64 c i)))
(fma.f64 c i (fma.f64 a b (fma.f64 x y (*.f64 z t))))
(fma.f64 z t (fma.f64 x y (fma.f64 c i (*.f64 a b))))
(fma.f64 x y (fma.f64 c i (fma.f64 a b (*.f64 z t))))

eval1.0ms (0%)

Compiler

Compiled 35 to 18 computations (48.6% saved)

prune2.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
0.0b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(fma.f64 x y (fma.f64 c i (fma.f64 a b (*.f64 z t))))
Compiler

Compiled 40 to 24 computations (40% saved)

localize10.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 c i (fma.f64 a b (*.f64 z t)))
0.0b
(fma.f64 a b (*.f64 z t))

series18.0ms (0.3%)

Counts
2 → 120
Calls

30 calls:

TimeVariablePointExpression
5.0ms
z
@-inf
(fma.f64 a b (*.f64 z t))
1.0ms
c
@-inf
(fma.f64 c i (fma.f64 a b (*.f64 z t)))
1.0ms
b
@-inf
(fma.f64 a b (*.f64 z t))
1.0ms
a
@0
(fma.f64 a b (*.f64 z t))
1.0ms
a
@-inf
(fma.f64 a b (*.f64 z t))

rewrite45.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
869×log1p-expm1-u_binary64
869×expm1-log1p-u_binary64
102×*-un-lft-identity_binary64
102×add-sqr-sqrt_binary64
102×pow1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01020
119620
2233220
Stop Event
node limit
Counts
2 → 47
Calls
Call 1
Inputs
(fma.f64 a b (*.f64 z t))
(fma.f64 c i (fma.f64 a b (*.f64 z t)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 z t) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 a b) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 a b) 1) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 a b (*.f64 z t)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 a b (*.f64 z t)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 a b (*.f64 z t))) (pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 z t))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 z t))) 2) (cbrt.f64 (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 a b (*.f64 z t))) (sqrt.f64 (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 z t) 3)) (+.f64 (*.f64 (*.f64 a b) (*.f64 a b)) (-.f64 (pow.f64 (*.f64 z t) 2) (*.f64 (*.f64 a b) (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 a b) (*.f64 a b)) (pow.f64 (*.f64 z t) 2)) (-.f64 (*.f64 a b) (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 a b (*.f64 z t)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 a b (*.f64 z t)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 z t))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 a b (*.f64 z t))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 a b (*.f64 z t)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 a b (*.f64 z t)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 a b (*.f64 z t))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 a b (*.f64 z t))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 a b (*.f64 z t)) (*.f64 c i))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 c i) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 c i) 1) (fma.f64 a b (*.f64 z t)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (*.f64 c i) (*.f64 a b)) (*.f64 z t))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 c i (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))) (pow.f64 (cbrt.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))) 2) (cbrt.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))) (sqrt.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 c i) 3) (pow.f64 (fma.f64 a b (*.f64 z t)) 3)) (+.f64 (*.f64 (*.f64 c i) (*.f64 c i)) (-.f64 (pow.f64 (fma.f64 a b (*.f64 z t)) 2) (*.f64 (*.f64 c i) (fma.f64 a b (*.f64 z t))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 c i) (*.f64 c i)) (pow.f64 (fma.f64 a b (*.f64 z t)) 2)) (-.f64 (*.f64 c i) (fma.f64 a b (*.f64 z t))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 c i (fma.f64 a b (*.f64 z t)))))))))

simplify30.0ms (0.6%)

Algorithm
egg-herbie
Rules
18×fma-def_binary64
+-commutative_binary64
*-commutative_binary64
associate-+r+_binary64
associate-+l+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0151080
1301080
2421080
3441080
Stop Event
saturated
Counts
167 → 59
Calls
Call 1
Inputs
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(*.f64 c i)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(*.f64 c i)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (*.f64 t z))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(*.f64 c i)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(*.f64 c i)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 c i) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (*.f64 t z))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(*.f64 a b)
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
Outputs
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(*.f64 t z)
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(*.f64 c i)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(*.f64 c i)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (*.f64 t z))
(fma.f64 a b (*.f64 t z))
(fma.f64 t z (*.f64 a b))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(*.f64 c i)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(*.f64 c i)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (*.f64 t z))
(fma.f64 c i (*.f64 t z))
(fma.f64 t z (*.f64 c i))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(*.f64 a b)
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(*.f64 a b)
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (*.f64 t z))
(fma.f64 c i (*.f64 t z))
(fma.f64 t z (*.f64 c i))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(*.f64 a b)
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(*.f64 a b)
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (+.f64 (*.f64 a b) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(*.f64 t z)
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))
(+.f64 (*.f64 a b) (+.f64 (*.f64 c i) (*.f64 t z)))
(fma.f64 a b (fma.f64 c i (*.f64 t z)))
(fma.f64 a b (fma.f64 t z (*.f64 c i)))
(fma.f64 t z (fma.f64 c i (*.f64 a b)))

eval11.0ms (0.2%)

Compiler

Compiled 959 to 244 computations (74.6% saved)

prune78.0ms (1.5%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New57259
Fresh000
Picked101
Done000
Total58260
Error
0b
Counts
60 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
35.5b
(fma.f64 x y (fma.f64 c i (/.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 z t) 3)) (+.f64 (*.f64 (*.f64 a b) (*.f64 a b)) (-.f64 (pow.f64 (*.f64 z t) 2) (*.f64 (*.f64 a b) (*.f64 z t)))))))
0.0b
(fma.f64 x y (fma.f64 t z (fma.f64 c i (*.f64 a b))))
Compiler

Compiled 134 to 72 computations (46.3% saved)

localize12.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 c i (*.f64 a b))

series4.0ms (0.1%)

Counts
1 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
b
@inf
(fma.f64 c i (*.f64 a b))
0.0ms
a
@inf
(fma.f64 c i (*.f64 a b))
0.0ms
b
@-inf
(fma.f64 c i (*.f64 a b))
0.0ms
a
@-inf
(fma.f64 c i (*.f64 a b))
0.0ms
c
@0
(fma.f64 c i (*.f64 a b))

rewrite35.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
661×pow1_binary64
602×add-log-exp_binary64
602×log1p-expm1-u_binary64
602×expm1-log1p-u_binary64
71×*-un-lft-identity_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
078
11378
216268
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(fma.f64 c i (*.f64 a b))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 a b) (*.f64 c i))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 c i) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 c i) 1) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 c i (*.f64 a b)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 c i (*.f64 a b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 c i (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 c i (*.f64 a b))) (pow.f64 (cbrt.f64 (fma.f64 c i (*.f64 a b))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 c i (*.f64 a b))) 2) (cbrt.f64 (fma.f64 c i (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 c i (*.f64 a b))) (sqrt.f64 (fma.f64 c i (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 c i) 3) (pow.f64 (*.f64 a b) 3)) (+.f64 (*.f64 (*.f64 c i) (*.f64 c i)) (-.f64 (pow.f64 (*.f64 a b) 2) (*.f64 (*.f64 c i) (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 c i) (*.f64 c i)) (pow.f64 (*.f64 a b) 2)) (-.f64 (*.f64 c i) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 c i (*.f64 a b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 c i (*.f64 a b)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 c i (*.f64 a b))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 c i (*.f64 a b))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 c i (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 c i (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 c i (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 c i (*.f64 a b)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 c i (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 c i (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 c i (*.f64 a b))))))))

simplify11.0ms (0.2%)

Algorithm
egg-herbie
Rules
fma-def_binary64
*-commutative_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
09336
113336
215336
Stop Event
saturated
Counts
70 → 25
Calls
Call 1
Inputs
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
Outputs
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 a b (*.f64 c i))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 a b (*.f64 c i))

eval6.0ms (0.1%)

Compiler

Compiled 418 to 127 computations (69.6% saved)

prune45.0ms (0.9%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New24125
Fresh101
Picked101
Done000
Total26127
Error
0b
Counts
27 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0b
(fma.f64 x y (fma.f64 t z (fma.f64 a b (*.f64 c i))))
Compiler

Compiled 40 to 24 computations (40% saved)

localize10.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(fma.f64 a b (*.f64 c i))

series4.0ms (0.1%)

Counts
1 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
c
@inf
(fma.f64 a b (*.f64 c i))
0.0ms
i
@inf
(fma.f64 a b (*.f64 c i))
0.0ms
i
@-inf
(fma.f64 a b (*.f64 c i))
0.0ms
a
@0
(fma.f64 a b (*.f64 c i))
0.0ms
c
@-inf
(fma.f64 a b (*.f64 c i))

rewrite40.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
661×pow1_binary64
602×add-log-exp_binary64
602×log1p-expm1-u_binary64
602×expm1-log1p-u_binary64
71×*-un-lft-identity_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
078
11378
216268
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(fma.f64 a b (*.f64 c i))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 c i) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 a b) (*.f64 c i))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 a b) 1) (*.f64 c i))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 a b (*.f64 c i)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 a b (*.f64 c i)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 a b (*.f64 c i)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 a b (*.f64 c i))) (pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 c i))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 c i))) 2) (cbrt.f64 (fma.f64 a b (*.f64 c i))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 a b (*.f64 c i))) (sqrt.f64 (fma.f64 a b (*.f64 c i))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 c i) 3)) (+.f64 (*.f64 (*.f64 a b) (*.f64 a b)) (-.f64 (pow.f64 (*.f64 c i) 2) (*.f64 (*.f64 a b) (*.f64 c i)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 a b) (*.f64 a b)) (pow.f64 (*.f64 c i) 2)) (-.f64 (*.f64 a b) (*.f64 c i)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 a b (*.f64 c i)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 a b (*.f64 c i)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 a b (*.f64 c i))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 a b (*.f64 c i))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 a b (*.f64 c i)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 a b (*.f64 c i))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 a b (*.f64 c i)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 a b (*.f64 c i)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 a b (*.f64 c i))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 a b (*.f64 c i))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 a b (*.f64 c i))))))))

simplify11.0ms (0.2%)

Algorithm
egg-herbie
Rules
fma-def_binary64
*-commutative_binary64
+-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
09336
113336
215336
Stop Event
saturated
Counts
70 → 25
Calls
Call 1
Inputs
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
(+.f64 (*.f64 a b) (*.f64 c i))
Outputs
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(*.f64 a b)
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 c i) (*.f64 a b))
(fma.f64 c i (*.f64 a b))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(*.f64 c i)
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))
(+.f64 (*.f64 a b) (*.f64 c i))
(fma.f64 c i (*.f64 a b))

eval6.0ms (0.1%)

Compiler

Compiled 418 to 127 computations (69.6% saved)

prune20.0ms (0.4%)

Pruning

1 alts after pruning (0 fresh and 1 done)

PrunedKeptTotal
New25025
Fresh000
Picked011
Done000
Total25126
Error
0b
Counts
26 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0b
(fma.f64 x y (fma.f64 t z (fma.f64 a b (*.f64 c i))))
Compiler

Compiled 20 to 12 computations (40% saved)

regimes81.0ms (1.6%)

Accuracy

Total -35.5b remaining (-∞%)

Threshold costs -35.5b (-∞%)

Counts
5 → 1
Calls
Call 1
Inputs
(fma.f64 x y (fma.f64 t z (fma.f64 a b (*.f64 c i))))
(fma.f64 x y (fma.f64 c i (/.f64 (+.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 z t) 3)) (+.f64 (*.f64 (*.f64 a b) (*.f64 a b)) (-.f64 (pow.f64 (*.f64 z t) 2) (*.f64 (*.f64 a b) (*.f64 z t)))))))
(fma.f64 x y (fma.f64 t z (fma.f64 c i (*.f64 a b))))
(fma.f64 x y (fma.f64 c i (fma.f64 a b (*.f64 z t))))
(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b)) (*.f64 c i))
Outputs
(fma.f64 x y (fma.f64 t z (fma.f64 a b (*.f64 c i))))
Results
TimeErrorSegmentsBranch
5.0ms0b1x
4.0ms0b1y
4.0ms0b1z
7.0ms0b1t
4.0ms0b1a
4.0ms0b1b
4.0ms0b1c
4.0ms0b1i
6.0ms0b1(+.f64 (+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b)) (*.f64 c i))
4.0ms0b1(+.f64 (+.f64 (*.f64 x y) (*.f64 z t)) (*.f64 a b))
4.0ms0b1(+.f64 (*.f64 x y) (*.f64 z t))
4.0ms0b1(*.f64 x y)
6.0ms0b1(*.f64 z t)
4.0ms0b1(*.f64 z t)
4.0ms0b1(*.f64 a b)
4.0ms0b1(*.f64 a b)
4.0ms0b1(*.f64 c i)
Compiler

Compiled 293 to 195 computations (33.4% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01316
11416
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 x y (fma.f64 t z (fma.f64 a b (*.f64 c i))))
Outputs
(fma.f64 x y (fma.f64 t z (fma.f64 a b (*.f64 c i))))

end28.0ms (0.6%)

Stop Event
done
Remove

(sort c i)

(sort a b)

(sort z t)

(sort x y)

Compiler

Compiled 200 to 120 computations (40% saved)

Profiling

Loading profile data...