Details

Time bar (total: 1.3s)

analyze1.0ms (0.1%)

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

Compiled 24 to 15 computations (37.5% saved)

sample787.0ms (60.1%)

Results
772.0ms8256×body128valid
Compiler

Compiled 48 to 30 computations (37.5% saved)

preprocess22.0ms (1.7%)

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)

simplify8.0ms (0.6%)

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))

prune4.0ms (0.3%)

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))

rewrite39.0ms (3%)

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 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)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (+.f64 a b) 2)))))))

simplify62.0ms (4.8%)

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

Useful iterations: 3 (0.0ms)

IterNodesCost
012294
132267
269222
3151216
4414216
51495216
62776216
73048216
83234216
93478216
103781216
114172216
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 a 2) (pow.f64 b 2)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 a 2) (pow.f64 b 2)))
(pow.f64 a 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 a 2) (pow.f64 b 2)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 a 2) (pow.f64 b 2)))
(pow.f64 a 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 a 2) (pow.f64 b 2)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 a 2) (pow.f64 b 2)))
(pow.f64 a 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 a 2))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 a 2) (pow.f64 b 2)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 a 2) (pow.f64 b 2)))
(pow.f64 b 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 b 2))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 a 2) (pow.f64 b 2)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 a 2) (pow.f64 b 2)))
(pow.f64 b 2)
(+.f64 (*.f64 2 (*.f64 a b)) (pow.f64 b 2))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 a 2) (pow.f64 b 2)))
(+.f64 (*.f64 2 (*.f64 a b)) (+.f64 (pow.f64 a 2) (pow.f64 b 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 a 2) (pow.f64 b 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 a a)) (*.f64 b b))
(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 a 2) (pow.f64 b 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 a a)) (*.f64 b b))
(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 a 2) (pow.f64 b 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 a a)) (*.f64 b b))
(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 a 2) (pow.f64 b 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 a a)) (*.f64 b b))
(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 a 2) (pow.f64 b 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 a a)) (*.f64 b b))
(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 a 2) (pow.f64 b 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 a a)) (*.f64 b b))
(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 a 2) (pow.f64 b 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 a a)) (*.f64 b b))
(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 a 2) (pow.f64 b 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 a a)) (*.f64 b b))
(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 a 2) (pow.f64 b 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 a a)) (*.f64 b b))
(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 a 2) (pow.f64 b 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 a a)) (*.f64 b b))
(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 a 2) (pow.f64 b 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 a a)) (*.f64 b b))
(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 a 2) (pow.f64 b 2)))
(+.f64 (fma.f64 2 (*.f64 b a) (*.f64 a a)) (*.f64 b b))
(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)))

prune25.0ms (1.9%)

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)

localize5.0ms (0.4%)

Local error

Found 1 expressions with local error:

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

series5.0ms (0.4%)

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))

rewrite29.0ms (2.2%)

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 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))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 a (fma.f64 b 2 a))))))))

simplify63.0ms (4.8%)

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

Useful iterations: 3 (0.0ms)

IterNodesCost
09231
119231
237213
375177
4165177
5454177
61547177
72787177
83142177
93364177
103586177
113892177
124312177
134824177
Stop Event
node limit
Counts
39 → 22
Calls
Call 1
Inputs
(*.f64 2 (*.f64 a b))
(+.f64 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(+.f64 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(+.f64 (pow.f64 a 2) (*.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 (*.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 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(+.f64 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(+.f64 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(*.f64 2 (*.f64 a b))
(+.f64 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(+.f64 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(+.f64 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
Outputs
(*.f64 2 (*.f64 a b))
(*.f64 b (*.f64 2 a))
(+.f64 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(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 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(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 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(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 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(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 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(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 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(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 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(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 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(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 (pow.f64 a 2) (*.f64 2 (*.f64 a b)))
(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))

prune14.0ms (1.1%)

Pruning

1 alts after pruning (0 fresh and 1 done)

PrunedKeptTotal
New22022
Fresh000
Picked011
Done000
Total22123
Error
0b
Counts
23 → 1
Alt Table
StatusErrorProgram
0b
(fma.f64 b b (*.f64 a (fma.f64 b 2 a)))
Compiler

Compiled 255 to 139 computations (45.5% saved)

regimes56.0ms (4.3%)

Accuracy

Total 0b remaining (0%)

Threshold costs 0b (0%)

Counts
20 → 1
Compiler

Compiled 167 to 89 computations (46.7% saved)

simplify2.0ms (0.1%)

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)))

end182.0ms (13.9%)

Stop Event
done
Compiler

Compiled 55 to 30 computations (45.5% saved)

Profiling

Loading profile data...