Details

Time bar (total: 1.3s)

analyze0.0ms (0%)

Algorithm
search
Search
TrueOtherFalseIter
0%0%100%0
0%0%100%1
Compiler

Compiled 24 to 15 computations (37.5% saved)

sample895.0ms (68.7%)

Results
882.0ms8256×body128valid

preprocess18.0ms (1.4%)

Algorithm
egg-herbie
Rules
70×fma-def_binary64
24×associate-+l+_binary64
18×associate-+r+_binary64
10×distribute-rgt-in_binary64
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0720
12320
24320
37920
412220
515220
617220
718920
819120
022
122
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
0
Call 2
Inputs
(*.f64 (+.f64 a b) (+.f64 a b))
(*.f64 (+.f64 b a) (+.f64 b a))
Outputs
(*.f64 (+.f64 a b) (+.f64 a b))
(*.f64 (+.f64 b a) (+.f64 b a))
(*.f64 (+.f64 a b) (+.f64 a b))
Symmetry

(sort a b)

Compiler

Compiled 9 to 4 computations (55.6% saved)

simplify10.0ms (0.8%)

Algorithm
egg-herbie
Rules
70×fma-def_binary64
24×associate-+l+_binary64
18×associate-+r+_binary64
10×distribute-rgt-in_binary64
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0510
11210
22910
36710
411010
514010
616010
717710
817910
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 (+.f64 a b) (+.f64 a b))
Outputs
(*.f64 (+.f64 a b) (+.f64 a b))

prune1.0ms (0.1%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
0.0b
Counts
2 → 1
Alt Table
StatusErrorProgram
0.0b
(*.f64 (+.f64 a b) (+.f64 a b))
Compiler

Compiled 27 to 12 computations (55.6% saved)

localize3.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (+.f64 a b) (+.f64 a b))

series3.0ms (0.2%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
a
@0
(*.f64 (+.f64 a b) (+.f64 a b))
1.0ms
a
@inf
(*.f64 (+.f64 a b) (+.f64 a b))
0.0ms
a
@-inf
(*.f64 (+.f64 a b) (+.f64 a b))
0.0ms
b
@-inf
(*.f64 (+.f64 a b) (+.f64 a b))
0.0ms
b
@inf
(*.f64 (+.f64 a b) (+.f64 a b))

rewrite44.0ms (3.4%)

Algorithm
batch-egg-rewrite
Rules
659×pow1_binary64
618×add-log-exp_binary64
618×log1p-expm1-u_binary64
618×expm1-log1p-u_binary64
63×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
11157
217437
Stop Event
node limit
Counts
1 → 27
Calls
Call 1
Inputs
(*.f64 (+.f64 a b) (+.f64 a b))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 a (+.f64 a b)) (*.f64 b (+.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 b (+.f64 a b)) (*.f64 a (+.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 a (+.f64 a b)) 1) (*.f64 (*.f64 b (+.f64 a b)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (+.f64 a b) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (-.f64 (*.f64 a a) (*.f64 b b))) (*.f64 (-.f64 a b) (-.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 a 3) (pow.f64 b 3)) (+.f64 (pow.f64 a 3) (pow.f64 b 3))) (*.f64 (fma.f64 a a (*.f64 b (-.f64 b a))) (fma.f64 a a (*.f64 b (-.f64 b a)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (+.f64 (pow.f64 a 3) (pow.f64 b 3))) (*.f64 (-.f64 a b) (fma.f64 a a (*.f64 b (-.f64 b a)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 a 3) (pow.f64 b 3)) (-.f64 (*.f64 a a) (*.f64 b b))) (*.f64 (fma.f64 a a (*.f64 b (-.f64 b a))) (-.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 a (+.f64 a b)) 3) (pow.f64 (*.f64 b (+.f64 a b)) 3)) (+.f64 (*.f64 (*.f64 a (+.f64 a b)) (*.f64 a (+.f64 a b))) (-.f64 (*.f64 (*.f64 b (+.f64 a b)) (*.f64 b (+.f64 a b))) (*.f64 (*.f64 a (+.f64 a b)) (*.f64 b (+.f64 a b))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 a (+.f64 a b)) (*.f64 a (+.f64 a b))) (*.f64 (*.f64 b (+.f64 a b)) (*.f64 b (+.f64 a b)))) (-.f64 (*.f64 a (+.f64 a b)) (*.f64 b (+.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 a 3) (pow.f64 b 3)) (+.f64 a b)) (fma.f64 a a (*.f64 b (-.f64 b a))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 a a) (*.f64 b b)) (+.f64 a b)) (-.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 a b) (+.f64 (pow.f64 a 3) (pow.f64 b 3))) (fma.f64 a a (*.f64 b (-.f64 b a))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 a b) (-.f64 (*.f64 a a) (*.f64 b b))) (-.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 a b) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 a b) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (pow.f64 (+.f64 a b) 2) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (+.f64 a b)) 2) 3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 a b) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (+.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (+.f64 a b) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (+.f64 a b) 2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (+.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (+.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 a (+.f64 a b) (*.f64 b (+.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 a b) a (*.f64 b (+.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (+.f64 a b) 2)))))))

simplify69.0ms (5.3%)

Algorithm
egg-herbie
Rules
613×fma-def_binary64
391×sqr-pow_binary64
372×unswap-sqr_binary64
362×associate-*l*_binary64
361×*-commutative_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
012294
132267
269222
3151216
4414216
51500216
62773216
73045216
83230216
93474216
103777216
114170216
124679216
Stop Event
node limit
Counts
51 → 37
Calls
Call 1
Inputs
(pow.f64 b 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 b 2))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(pow.f64 a 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(pow.f64 a 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(pow.f64 a 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(pow.f64 b 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 b 2))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(pow.f64 b 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 b 2))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
Outputs
(pow.f64 b 2)
(*.f64 b b)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 b 2))
(fma.f64 2 (*.f64 b a) (*.f64 b b))
(*.f64 b (+.f64 b (*.f64 2 a)))
(*.f64 b (fma.f64 2 a b))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 b b)) (*.f64 a a))
(fma.f64 2 (*.f64 b a) (fma.f64 b b (*.f64 a a)))
(fma.f64 b (fma.f64 2 a b) (*.f64 a a))
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 b b)) (*.f64 a a))
(fma.f64 2 (*.f64 b a) (fma.f64 b b (*.f64 a a)))
(fma.f64 b (fma.f64 2 a b) (*.f64 a a))
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
(pow.f64 a 2)
(*.f64 a a)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 b a) (*.f64 a a))
(*.f64 a (+.f64 (*.f64 b 2) a))
(*.f64 a (fma.f64 b 2 a))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 b b)) (*.f64 a a))
(fma.f64 2 (*.f64 b a) (fma.f64 b b (*.f64 a a)))
(fma.f64 b (fma.f64 2 a b) (*.f64 a a))
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 b b)) (*.f64 a a))
(fma.f64 2 (*.f64 b a) (fma.f64 b b (*.f64 a a)))
(fma.f64 b (fma.f64 2 a b) (*.f64 a a))
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
(pow.f64 a 2)
(*.f64 a a)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 b a) (*.f64 a a))
(*.f64 a (+.f64 (*.f64 b 2) a))
(*.f64 a (fma.f64 b 2 a))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 b b)) (*.f64 a a))
(fma.f64 2 (*.f64 b a) (fma.f64 b b (*.f64 a a)))
(fma.f64 b (fma.f64 2 a b) (*.f64 a a))
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 b b)) (*.f64 a a))
(fma.f64 2 (*.f64 b a) (fma.f64 b b (*.f64 a a)))
(fma.f64 b (fma.f64 2 a b) (*.f64 a a))
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
(pow.f64 a 2)
(*.f64 a a)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 b a) (*.f64 a a))
(*.f64 a (+.f64 (*.f64 b 2) a))
(*.f64 a (fma.f64 b 2 a))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 b b)) (*.f64 a a))
(fma.f64 2 (*.f64 b a) (fma.f64 b b (*.f64 a a)))
(fma.f64 b (fma.f64 2 a b) (*.f64 a a))
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 b b)) (*.f64 a a))
(fma.f64 2 (*.f64 b a) (fma.f64 b b (*.f64 a a)))
(fma.f64 b (fma.f64 2 a b) (*.f64 a a))
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
(pow.f64 b 2)
(*.f64 b b)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 b 2))
(fma.f64 2 (*.f64 b a) (*.f64 b b))
(*.f64 b (+.f64 b (*.f64 2 a)))
(*.f64 b (fma.f64 2 a b))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 b b)) (*.f64 a a))
(fma.f64 2 (*.f64 b a) (fma.f64 b b (*.f64 a a)))
(fma.f64 b (fma.f64 2 a b) (*.f64 a a))
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 b b)) (*.f64 a a))
(fma.f64 2 (*.f64 b a) (fma.f64 b b (*.f64 a a)))
(fma.f64 b (fma.f64 2 a b) (*.f64 a a))
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
(pow.f64 b 2)
(*.f64 b b)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 b 2))
(fma.f64 2 (*.f64 b a) (*.f64 b b))
(*.f64 b (+.f64 b (*.f64 2 a)))
(*.f64 b (fma.f64 2 a b))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 b b)) (*.f64 a a))
(fma.f64 2 (*.f64 b a) (fma.f64 b b (*.f64 a a)))
(fma.f64 b (fma.f64 2 a b) (*.f64 a a))
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 b 2) (pow.f64 a 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 b b)) (*.f64 a a))
(fma.f64 2 (*.f64 b a) (fma.f64 b b (*.f64 a a)))
(fma.f64 b (fma.f64 2 a b) (*.f64 a a))
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))

prune35.0ms (2.7%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New36137
Fresh000
Picked101
Done000
Total37138
Error
0b
Counts
38 → 1
Alt Table
StatusErrorProgram
0b
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
Compiler

Compiled 502 to 183 computations (63.5% saved)

localize6.0ms (0.4%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 a (fma.f64 b 2 a))

series4.0ms (0.3%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
b
@-inf
(*.f64 a (fma.f64 b 2 a))
1.0ms
a
@0
(*.f64 a (fma.f64 b 2 a))
1.0ms
a
@-inf
(*.f64 a (fma.f64 b 2 a))
1.0ms
b
@inf
(*.f64 a (fma.f64 b 2 a))
1.0ms
a
@inf
(*.f64 a (fma.f64 b 2 a))

rewrite41.0ms (3.1%)

Algorithm
batch-egg-rewrite
Rules
552×pow1_binary64
507×add-log-exp_binary64
507×log1p-expm1-u_binary64
507×expm1-log1p-u_binary64
497×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify69.0ms (5.3%)

Algorithm
egg-herbie
Rules
564×fma-def_binary64
469×associate-*l*_binary64
434×unswap-sqr_binary64
370×sqr-pow_binary64
292×*-commutative_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
08231
119231
237213
375177
4168177
5464177
61534177
72777177
83132177
93354177
103576177
113880177
124302177
134812177
Stop Event
node limit
Counts
39 → 21
Calls
Call 1
Inputs
(*.f64 2 (*.f64 a b))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(pow.f64 a 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(pow.f64 a 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(pow.f64 a 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(*.f64 2 (*.f64 a b))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(*.f64 2 (*.f64 a b))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
Outputs
(*.f64 2 (*.f64 a b))
(*.f64 b (*.f64 2 a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(pow.f64 a 2)
(*.f64 a a)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(pow.f64 a 2)
(*.f64 a a)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(pow.f64 a 2)
(*.f64 a a)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(*.f64 2 (*.f64 a b))
(*.f64 b (*.f64 2 a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(*.f64 2 (*.f64 a b))
(*.f64 b (*.f64 2 a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(fma.f64 2 (*.f64 a b) (*.f64 a a))
(fma.f64 a a (*.f64 b (*.f64 2 a)))
(*.f64 a (+.f64 a (*.f64 2 b)))
(*.f64 a (fma.f64 2 b a))

prune17.0ms (1.3%)

Pruning

1 alts after pruning (0 fresh and 1 done)

PrunedKeptTotal
New21021
Fresh000
Picked011
Done000
Total21122
Error
0b
Counts
22 → 1
Alt Table
StatusErrorProgram
0b
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
Compiler

Compiled 243 to 133 computations (45.3% saved)

regimes38.0ms (2.9%)

Accuracy

Total 0b remaining (0%)

Threshold costs 0b (0%)

Counts
11 → 1
Compiler

Compiled 109 to 59 computations (45.9% saved)

simplify2.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0712
1812
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
Outputs
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))

end46.0ms (3.5%)

Stop Event
done
Compiler

Compiled 53 to 28 computations (47.2% saved)

Profiling

Loading profile data...