Details

Time bar (total: 3.9s)

analyze56.0ms (1.4%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
25%74.9%0.1%5
25%62.4%12.6%6
37.5%43.7%18.8%7
46.8%34.3%18.8%8
53.1%23.4%23.5%9
58.5%18%23.5%10
62%12.1%25.9%11
65%9.2%25.9%12
Compiler

Compiled 11 to 7 computations (36.4% saved)

sample744.0ms (19.3%)

Results
709.0ms8256×body256valid
23.0ms265×body256invalid

preprocess22.0ms (0.6%)

Algorithm
egg-herbie
Rules
327×fma-def_binary64
30×distribute-rgt-in_binary64
25×sub-neg_binary64
24×distribute-lft-in_binary64
24×unsub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01124
13524
210024
314724
421524
530924
635424
741324
866824
022
122
Stop Event
unsound
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
0
Call 2
Inputs
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
(neg.f64 (*.f64 (*.f64 (*.f64 b b) a) a))
Outputs
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
(*.f64 (*.f64 a (*.f64 a b)) (neg.f64 b))
(*.f64 a (*.f64 (*.f64 a b) (neg.f64 b)))
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
(neg.f64 (*.f64 (*.f64 (*.f64 b b) a) a))
(*.f64 (*.f64 a (*.f64 a b)) (neg.f64 b))
(*.f64 a (*.f64 (*.f64 a b) (neg.f64 b)))
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
Symmetry

(sort a b)

Compiler

Compiled 12 to 8 computations (33.3% saved)

simplify11.0ms (0.3%)

Algorithm
egg-herbie
Rules
284×fma-def_binary64
31×associate-*l*_binary64
24×distribute-rgt-in_binary64
24×sub-neg_binary64
19×fma-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0712
12112
25912
312212
419212
526012
632312
737212
851712
960112
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
Outputs
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
(*.f64 (*.f64 (*.f64 a a) b) (neg.f64 b))
(neg.f64 (*.f64 a (*.f64 a (*.f64 b b))))
(*.f64 a (*.f64 (*.f64 b (neg.f64 a)) b))
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))

eval1.0ms (0%)

Compiler

Compiled 18 to 9 computations (50% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
16.9b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
21.5b
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
16.9b
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
Compiler

Compiled 20 to 12 computations (40% saved)

localize7.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
12.1b
(*.f64 (*.f64 a a) b)
4.1b
(*.f64 (*.f64 (*.f64 a a) b) b)
4.1b
(*.f64 (*.f64 (*.f64 a a) b) b)
12.1b
(*.f64 (*.f64 a a) b)
Compiler

Compiled 27 to 6 computations (77.8% saved)

series8.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
2.0ms
b
@inf
(*.f64 (*.f64 (*.f64 a a) b) b)
1.0ms
a
@0
(*.f64 (*.f64 a a) b)
1.0ms
b
@inf
(*.f64 (*.f64 a a) b)
1.0ms
b
@0
(*.f64 (*.f64 a a) b)
1.0ms
a
@inf
(*.f64 (*.f64 a a) b)

rewrite36.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
554×pow1_binary64
509×add-log-exp_binary64
509×log1p-expm1-u_binary64
509×expm1-log1p-u_binary64
495×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0617
112114
2148014
Stop Event
node limit
Counts
2 → 22
Calls
Call 1
Inputs
(*.f64 (*.f64 a a) b)
(*.f64 (*.f64 (*.f64 a a) b) b)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (*.f64 a a) b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (*.f64 a a) b) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (*.f64 a a) b) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (*.f64 a a) b)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a (sqrt.f64 b)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 a 4) (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 a) a) b))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (*.f64 a a) b) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (*.f64 a a) b)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (*.f64 a a) b)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (*.f64 a a) b)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 2)) 1)))) (#(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 (cbrt.f64 (pow.f64 (*.f64 a b) 2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a b) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (pow.f64 (*.f64 a b) 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.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 (log.f64 (pow.f64 (*.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 a b) 2)))))))

simplify99.0ms (2.6%)

Algorithm
egg-herbie
Rules
2154×associate-*l*_binary64
1800×associate-*r*_binary64
764×sqr-pow_binary64
304×unswap-sqr_binary64
257×pow-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08408
118408
239408
3108408
4483408
51067408
61133408
71233408
81353408
91475408
101622408
111786408
121975408
132188408
142418408
152662408
162927408
173206408
183506408
193820408
Stop Event
node limit
Counts
70 → 26
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
Outputs
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))

localize7.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
21.1b
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
21.1b
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
Compiler

Compiled 21 to 6 computations (71.4% saved)

series2.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite37.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
569×pow1_binary64
524×add-log-exp_binary64
523×log1p-expm1-u_binary64
523×expm1-log1p-u_binary64
510×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0712
11467
219137
Stop Event
node limit
Counts
1 → 12
Calls
Call 1
Inputs
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 2)) 1)))) (#(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 (cbrt.f64 (pow.f64 (*.f64 a b) 2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a b) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (pow.f64 (*.f64 a b) 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.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 (log.f64 (pow.f64 (*.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 a b) 2)))))))

simplify71.0ms (1.8%)

Algorithm
egg-herbie
Rules
744×unswap-sqr_binary64
706×fma-def_binary64
579×distribute-rgt-neg-in_binary64
571×distribute-lft-neg-in_binary64
391×fma-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
09288
122288
259288
3214288
4918288
51995288
62870288
73838288
84972288
95812288
106506288
Stop Event
node limit
Counts
36 → 14
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
Outputs
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (pow.f64 b 2)))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 b b)))
(*.f64 (*.f64 b b) (neg.f64 (*.f64 a a)))
(*.f64 a (*.f64 a (neg.f64 (*.f64 b b))))
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))

eval8.0ms (0.2%)

Compiler

Compiled 348 to 200 computations (42.5% saved)

prune9.0ms (0.2%)

Pruning

7 alts after pruning (5 fresh and 2 done)

PrunedKeptTotal
New35540
Fresh000
Picked011
Done011
Total35742
Error
0.0b
Counts
42 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
15.9b
(neg.f64 (*.f64 a (*.f64 a (*.f64 b b))))
16.9b
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
21.5b
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
4.3b
(neg.f64 (*.f64 (*.f64 a (*.f64 a b)) b))
0.2b
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
18.8b
(neg.f64 (*.f64 (pow.f64 (*.f64 a (sqrt.f64 b)) 2) b))
24.9b
(neg.f64 (cbrt.f64 (pow.f64 (pow.f64 (*.f64 a b) 2) 3)))
Compiler

Compiled 124 to 80 computations (35.5% saved)

localize7.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 a b) (*.f64 a b))
0.2b
(*.f64 (*.f64 a b) (*.f64 a b))
Compiler

Compiled 22 to 5 computations (77.3% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
a
@0
(*.f64 (*.f64 a b) (*.f64 a b))
0.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))

rewrite33.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
485×pow1_binary64
460×add-sqr-sqrt_binary64
454×*-un-lft-identity_binary64
447×add-log-exp_binary64
447×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
057
11037
212727
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (*.f64 a b) (*.f64 a b))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 2)) 1)))) (#(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 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 log1p.f64 (expm1.f64 (pow.f64 (*.f64 a b) 2)))))))

simplify159.0ms (4.1%)

Algorithm
egg-herbie
Rules
1022×sqr-pow_binary64
719×associate-*l*_binary64
648×cube-prod_binary64
567×fabs-mul_binary64
505×associate-*r*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07240
116240
237240
3103240
4432240
52343240
62435240
72636240
82834240
93072240
103391240
114063240
124557240
135205240
145943240
156504240
166848240
177176240
187270240
197302240
207955240
Stop Event
node limit
Counts
35 → 13
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
Outputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))

localize7.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
4.1b
(*.f64 (*.f64 a (*.f64 a b)) b)
0.2b
(*.f64 a (*.f64 a b))
0.2b
(*.f64 a (*.f64 a b))
4.1b
(*.f64 (*.f64 a (*.f64 a b)) b)
Compiler

Compiled 27 to 6 computations (77.8% saved)

series3.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite38.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
567×pow1_binary64
520×add-log-exp_binary64
520×log1p-expm1-u_binary64
520×expm1-log1p-u_binary64
508×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0617
112114
2152214
Stop Event
node limit
Counts
2 → 22
Calls
Call 1
Inputs
(*.f64 (*.f64 a (*.f64 a b)) b)
(*.f64 a (*.f64 a b))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 2)) 1)))) (#(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 (pow.f64 (*.f64 a b) 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.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 (log.f64 (pow.f64 (*.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 a b) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 a (*.f64 a b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a (*.f64 a b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 a (*.f64 a b)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 a (*.f64 a b))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a (sqrt.f64 b)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 a (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 a) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 a (*.f64 a b)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 a (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 a (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 a (*.f64 a b))))))))

simplify100.0ms (2.6%)

Algorithm
egg-herbie
Rules
2170×associate-*l*_binary64
1807×associate-*r*_binary64
764×sqr-pow_binary64
304×unswap-sqr_binary64
257×pow-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08408
118408
239408
3108408
4483408
51066408
61132408
71232408
81352408
91474408
101621408
111785408
121974408
132187408
142417408
152661408
162926408
173205408
183505408
193819408
Stop Event
node limit
Counts
70 → 26
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
Outputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))

localize8.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
8.7b
(*.f64 a (*.f64 b b))
6.5b
(*.f64 a (*.f64 a (*.f64 b b)))
6.5b
(*.f64 a (*.f64 a (*.f64 b b)))
8.7b
(*.f64 a (*.f64 b b))
Compiler

Compiled 27 to 6 computations (77.8% saved)

series6.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

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

rewrite36.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
555×pow1_binary64
510×add-log-exp_binary64
510×log1p-expm1-u_binary64
510×expm1-log1p-u_binary64
496×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0617
112114
2148214
Stop Event
node limit
Counts
2 → 22
Calls
Call 1
Inputs
(*.f64 a (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 a (*.f64 b b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a (*.f64 b b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 a (*.f64 b b)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 b (sqrt.f64 a)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 a a) (pow.f64 b 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 a) (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 a (*.f64 b b)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 a (*.f64 b b))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 2)) 1)))) (#(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 (cbrt.f64 (pow.f64 (*.f64 a b) 2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a b) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (pow.f64 (*.f64 a b) 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.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 (log.f64 (pow.f64 (*.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 a b) 2)))))))

simplify98.0ms (2.5%)

Algorithm
egg-herbie
Rules
2164×associate-*l*_binary64
1800×associate-*r*_binary64
764×sqr-pow_binary64
304×unswap-sqr_binary64
257×pow-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08408
118408
239408
3108408
4485408
51066408
61132408
71232408
81352408
91474408
101621408
111785408
121974408
132189408
142419408
152663408
162928408
173207408
183507408
193821408
Stop Event
node limit
Counts
70 → 26
Calls
Call 1
Inputs
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
Outputs
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 b b) (*.f64 a a))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))

localize13.0ms (0.3%)

Local error

Found 6 expressions with local error:

NewErrorProgram
3.1b
(*.f64 (pow.f64 (*.f64 a (sqrt.f64 b)) 2) b)
0.2b
(pow.f64 (*.f64 a (sqrt.f64 b)) 2)
0.2b
(*.f64 a (sqrt.f64 b))
0.2b
(*.f64 a (sqrt.f64 b))
0.2b
(pow.f64 (*.f64 a (sqrt.f64 b)) 2)
3.1b
(*.f64 (pow.f64 (*.f64 a (sqrt.f64 b)) 2) b)
Compiler

Compiled 34 to 14 computations (58.8% saved)

series12.0ms (0.3%)

Counts
3 → 36
Calls

18 calls:

TimeVariablePointExpression
2.0ms
b
@0
(pow.f64 (*.f64 a (sqrt.f64 b)) 2)
1.0ms
b
@-inf
(*.f64 (pow.f64 (*.f64 a (sqrt.f64 b)) 2) b)
1.0ms
b
@-inf
(pow.f64 (*.f64 a (sqrt.f64 b)) 2)
1.0ms
b
@inf
(pow.f64 (*.f64 a (sqrt.f64 b)) 2)
1.0ms
a
@0
(pow.f64 (*.f64 a (sqrt.f64 b)) 2)

rewrite48.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
682×pow1_binary64
628×add-log-exp_binary64
628×log1p-expm1-u_binary64
628×expm1-log1p-u_binary64
610×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify72.0ms (1.9%)

Algorithm
egg-herbie
Rules
616×fma-neg_binary64
559×unswap-sqr_binary64
383×distribute-rgt-neg-in_binary64
360×unsub-neg_binary64
359×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
013324
133324
2102324
3444324
41149324
53002324
64941324
76129324
87064324
97580324
Stop Event
unsound
Counts
86 → 55
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
Outputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 a (*.f64 a b)))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))

localize15.0ms (0.4%)

Local error

Found 6 expressions with local error:

NewErrorProgram
24.3b
(cbrt.f64 (pow.f64 (pow.f64 (*.f64 a b) 2) 3))
0.2b
(pow.f64 (*.f64 a b) 2)
0.1b
(pow.f64 (pow.f64 (*.f64 a b) 2) 3)
0.1b
(pow.f64 (pow.f64 (*.f64 a b) 2) 3)
0.2b
(pow.f64 (*.f64 a b) 2)
24.3b
(cbrt.f64 (pow.f64 (pow.f64 (*.f64 a b) 2) 3))
Compiler

Compiled 38 to 22 computations (42.1% saved)

series11.0ms (0.3%)

Counts
3 → 72
Calls

18 calls:

TimeVariablePointExpression
3.0ms
b
@-inf
(pow.f64 (pow.f64 (*.f64 a b) 2) 3)
1.0ms
a
@0
(pow.f64 (pow.f64 (*.f64 a b) 2) 3)
1.0ms
b
@0
(pow.f64 (pow.f64 (*.f64 a b) 2) 3)
1.0ms
a
@-inf
(pow.f64 (*.f64 a b) 2)
1.0ms
b
@-inf
(pow.f64 (*.f64 a b) 2)

rewrite47.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
676×pow1_binary64
637×add-log-exp_binary64
636×log1p-expm1-u_binary64
636×expm1-log1p-u_binary64
618×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0921
119521
2191421
Stop Event
node limit
Counts
3 → 78
Calls
Call 1
Inputs
(cbrt.f64 (pow.f64 (pow.f64 (*.f64 a b) 2) 3))
(pow.f64 (*.f64 a b) 2)
(pow.f64 (pow.f64 (*.f64 a b) 2) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 a (*.f64 b (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 b (*.f64 a (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a b) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (cbrt.f64 (pow.f64 (*.f64 a b) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (pow.f64 (pow.f64 (*.f64 a b) 4) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 4)) (pow.f64 (cbrt.f64 (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 a b)) (*.f64 (sqrt.f64 (*.f64 a b)) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a a) (*.f64 b b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b b) (*.f64 a a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) (sqrt.f64 (*.f64 a b))) (sqrt.f64 (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 a b) 4) 1/3) (pow.f64 (cbrt.f64 (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) a) b)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) b) a)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) (pow.f64 (cbrt.f64 (*.f64 a b)) 2)) (cbrt.f64 (*.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 (*.f64 a b) 6) 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 expm1.f64 (log1p.f64 (pow.f64 (*.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 (*.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 -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 a (*.f64 b (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 b (*.f64 a (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a b) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (cbrt.f64 (pow.f64 (*.f64 a b) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (pow.f64 (pow.f64 (*.f64 a b) 4) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 4)) (pow.f64 (cbrt.f64 (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 a b)) (*.f64 (sqrt.f64 (*.f64 a b)) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a a) (*.f64 b b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b b) (*.f64 a a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) (sqrt.f64 (*.f64 a b))) (sqrt.f64 (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 a b) 4) 1/3) (pow.f64 (cbrt.f64 (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) a) b)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) b) a)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) (pow.f64 (cbrt.f64 (*.f64 a b)) 2)) (cbrt.f64 (*.f64 a b)))))) (#(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 cbrt.f64 (pow.f64 (*.f64 a b) 6))))) (#(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 2 (log.f64 (*.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 -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a b) (*.f64 (*.f64 a b) (pow.f64 (*.f64 a b) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 2) (pow.f64 (*.f64 a b) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (*.f64 a b) 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 4) (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 4)) (*.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (pow.f64 (*.f64 a b) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a a) (*.f64 (*.f64 b b) (pow.f64 (*.f64 a b) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 a b) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 a 6) (pow.f64 b 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 b 6) (pow.f64 a 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) 6) (pow.f64 (cbrt.f64 (*.f64 a b)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 a b)) 6) (pow.f64 (sqrt.f64 (*.f64 a b)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 4)) 3) (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a a) 3) (pow.f64 (*.f64 b b) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 a b) 4) (*.f64 a b)) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 a b) 4) 1) (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 a b) 4) (cbrt.f64 (pow.f64 (*.f64 a b) 4))) (pow.f64 (cbrt.f64 (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 a b) 4) (*.f64 a a)) (*.f64 b b))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 a b) 12))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (*.f64 a b) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (*.f64 a b) 6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (*.f64 a b) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 a b)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 a b) 6)))))))

simplify175.0ms (4.5%)

Algorithm
egg-herbie
Rules
1484×sqr-pow_binary64
679×cube-prod_binary64
570×pow-sqr_binary64
510×associate-*l*_binary64
432×associate-*r*_binary64
Iterations

Useful iterations: 10 (0.0ms)

IterNodesCost
011720
127720
271720
3292720
41919720
52129720
62486720
72839720
83274648
93809648
104508504
115015504
125398504
135674504
145830504
155942504
166647504
177509504
Stop Event
node limit
Counts
150 → 56
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
Outputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)

eval38.0ms (1%)

Compiler

Compiled 1861 to 924 computations (50.3% saved)

prune29.0ms (0.8%)

Pruning

11 alts after pruning (6 fresh and 5 done)

PrunedKeptTotal
New1706176
Fresh000
Picked101
Done156
Total17211183
Error
0.0b
Counts
183 → 11
Alt Table
Click to see full alt table
StatusErrorProgram
24.9b
(neg.f64 (cbrt.f64 (*.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 a b) 3))))
4.3b
(neg.f64 (*.f64 (*.f64 a (*.f64 a b)) b))
6.8b
(neg.f64 (*.f64 a (*.f64 b (*.f64 a b))))
18.8b
(neg.f64 (*.f64 (*.f64 (*.f64 (sqrt.f64 b) (*.f64 a (sqrt.f64 b))) a) b))
0.8b
(neg.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b))))
21.5b
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
16.9b
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
16.2b
(neg.f64 (*.f64 a (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)))
24.9b
(neg.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 6)))
0.2b
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
18.8b
(neg.f64 (*.f64 (pow.f64 (*.f64 a (sqrt.f64 b)) 2) b))
Compiler

Compiled 209 to 129 computations (38.3% saved)

localize15.0ms (0.4%)

Local error

Found 8 expressions with local error:

NewErrorProgram
9.3b
(cbrt.f64 (*.f64 a b))
0.4b
(pow.f64 (cbrt.f64 (*.f64 a b)) 2)
0.2b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b)))
0.2b
(*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b))
0.2b
(*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b))
0.2b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b)))
0.4b
(pow.f64 (cbrt.f64 (*.f64 a b)) 2)
9.3b
(cbrt.f64 (*.f64 a b))
Compiler

Compiled 57 to 15 computations (73.7% saved)

series22.0ms (0.6%)

Counts
4 → 24
Calls

24 calls:

TimeVariablePointExpression
3.0ms
a
@-inf
(*.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b)))
3.0ms
b
@0
(*.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b)))
2.0ms
b
@-inf
(*.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b)))
2.0ms
a
@0
(pow.f64 (cbrt.f64 (*.f64 a b)) 2)
1.0ms
a
@-inf
(cbrt.f64 (*.f64 a b))

rewrite55.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
720×pow1_binary64
667×add-log-exp_binary64
667×log1p-expm1-u_binary64
667×expm1-log1p-u_binary64
650×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0937
118531
2209731
Stop Event
node limit
Counts
4 → 68
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 a b))
(pow.f64 (cbrt.f64 (*.f64 a b)) 2)
(*.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b)))
(*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (*.f64 a b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 a b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 a b))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a b))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 a) (cbrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 b) (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a b))) 2) (cbrt.f64 (cbrt.f64 (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 1/6) (pow.f64 (*.f64 a b) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4))) (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a b))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 a b)) 1/3) (pow.f64 (sqrt.f64 (*.f64 a b)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a b) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 a b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a b))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 a b) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 a b))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (cbrt.f64 (*.f64 a b)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 a b)) (cbrt.f64 (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cbrt.f64 (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4)) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a b))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 a) (*.f64 (cbrt.f64 b) (cbrt.f64 (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 a) 2) (cbrt.f64 (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a b))) 2) (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 1/6) (sqrt.f64 (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 1/6) (*.f64 (pow.f64 (*.f64 a b) 1/6) (cbrt.f64 (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 a b)) (pow.f64 (*.f64 a b) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4)) 2)) (sqrt.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 a (cbrt.f64 (*.f64 a b)))) (sqrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 a b)) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a b))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (*.f64 a b)) (cbrt.f64 a)) (cbrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 (cbrt.f64 (*.f64 a b)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a b) 2)))) (#(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 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 sqrt.f64 (pow.f64 (pow.f64 (*.f64 a b) 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.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 (log.f64 (pow.f64 (*.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 a b) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (cbrt.f64 (*.f64 a b)) 4)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a b) 4/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 a b)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (pow.f64 (*.f64 a b) 2) 2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (*.f64 a b) 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 4)))))))

simplify159.0ms (4.1%)

Algorithm
egg-herbie
Rules
1022×sqr-pow_binary64
719×associate-*l*_binary64
648×cube-prod_binary64
567×fabs-mul_binary64
505×associate-*r*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07240
116240
237240
3103240
4432240
52343240
62435240
72636240
82834240
93072240
103391240
114063240
124557240
135205240
145943240
156504240
166848240
177176240
187270240
197302240
207955240
Stop Event
node limit
Counts
92 → 70
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
Outputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))

localize7.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
6.5b
(*.f64 a (*.f64 b (*.f64 a b)))
0.2b
(*.f64 b (*.f64 a b))
0.2b
(*.f64 b (*.f64 a b))
6.5b
(*.f64 a (*.f64 b (*.f64 a b)))
Compiler

Compiled 27 to 6 computations (77.8% saved)

series3.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite38.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
546×pow1_binary64
516×add-sqr-sqrt_binary64
500×add-log-exp_binary64
500×log1p-expm1-u_binary64
500×expm1-log1p-u_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0617
112014
2143214
Stop Event
node limit
Counts
2 → 22
Calls
Call 1
Inputs
(*.f64 a (*.f64 b (*.f64 a b)))
(*.f64 b (*.f64 a b))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 2)) 1)))) (#(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 (pow.f64 (*.f64 a b) 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.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 (log.f64 (pow.f64 (*.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 a b) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 a (*.f64 b b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a (*.f64 b b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 a (*.f64 b b)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 a (*.f64 b b))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 a (*.f64 b b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 b) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 a (*.f64 b b)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 a (*.f64 b b))))))))

simplify101.0ms (2.6%)

Algorithm
egg-herbie
Rules
2156×associate-*l*_binary64
1787×associate-*r*_binary64
764×sqr-pow_binary64
304×unswap-sqr_binary64
257×pow-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08408
118408
239408
3108408
4477408
51056408
61122408
71222408
81342408
91464408
101611408
111775408
121964408
132179408
142409408
152653408
162918408
173197408
183497408
193811408
Stop Event
node limit
Counts
70 → 26
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
Outputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 b (*.f64 b a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 b (*.f64 b a))
(*.f64 b (*.f64 a b))

localize11.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
24.3b
(cbrt.f64 (pow.f64 (*.f64 a b) 6))
0.2b
(pow.f64 (*.f64 a b) 6)
0.2b
(pow.f64 (*.f64 a b) 6)
24.3b
(cbrt.f64 (pow.f64 (*.f64 a b) 6))
Compiler

Compiled 26 to 13 computations (50% saved)

series7.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
a
@0
(cbrt.f64 (pow.f64 (*.f64 a b) 6))
1.0ms
a
@0
(pow.f64 (*.f64 a b) 6)
1.0ms
b
@-inf
(pow.f64 (*.f64 a b) 6)
1.0ms
b
@0
(pow.f64 (*.f64 a b) 6)
1.0ms
a
@-inf
(pow.f64 (*.f64 a b) 6)

rewrite41.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
609×pow1_binary64
570×add-log-exp_binary64
570×log1p-expm1-u_binary64
570×expm1-log1p-u_binary64
554×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0716
114614
2168114
Stop Event
node limit
Counts
2 → 47
Calls
Call 1
Inputs
(cbrt.f64 (pow.f64 (*.f64 a b) 6))
(pow.f64 (*.f64 a b) 6)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 a (*.f64 b (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 b (*.f64 a (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a b) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b b) (*.f64 a a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a a) (*.f64 b b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (cbrt.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 12))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 12))) (pow.f64 (cbrt.f64 (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 a b)) (*.f64 (sqrt.f64 (*.f64 a b)) (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) (sqrt.f64 (*.f64 a b))) (sqrt.f64 (*.f64 a b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 12)) 1/3) (pow.f64 (cbrt.f64 (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 a 6) 1/3) (pow.f64 (pow.f64 b 6) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) a) b)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) b) a)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) (pow.f64 (cbrt.f64 (*.f64 a b)) 2)) (cbrt.f64 (*.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) 6) 1/3)))) (#(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 (cbrt.f64 (*.f64 a b)) 2) 3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 12)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (*.f64 a b) 2)))))) (#(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 (log.f64 (pow.f64 (*.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 a b) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 2) (cbrt.f64 (pow.f64 (*.f64 a b) 12)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (*.f64 a b) 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 12)) (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 a 6) (pow.f64 b 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 b 6) (pow.f64 a 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 (*.f64 a b) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) 6) (pow.f64 (cbrt.f64 (*.f64 a b)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 a b)) 6) (pow.f64 (sqrt.f64 (*.f64 a b)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 12)) 1) (pow.f64 (*.f64 a b) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 12)) (cbrt.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 12)))) (pow.f64 (cbrt.f64 (*.f64 a b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 12)) (*.f64 a b)) (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 a b) 12))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (*.f64 a b) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (*.f64 a b) 6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (*.f64 a b) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 6 (log.f64 (*.f64 a b))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 a b) 6)))))))

simplify165.0ms (4.3%)

Algorithm
egg-herbie
Rules
1484×sqr-pow_binary64
679×cube-prod_binary64
570×pow-sqr_binary64
510×associate-*l*_binary64
432×associate-*r*_binary64
Iterations

Useful iterations: 10 (0.0ms)

IterNodesCost
011480
127480
271480
3292480
41919480
52129480
62486480
72839480
83274408
93809408
104508336
115015336
125398336
135674336
145830336
155942336
166647336
177509336
Stop Event
node limit
Counts
95 → 49
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
Outputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(pow.f64 (*.f64 a b) 2)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)
(*.f64 (pow.f64 a 6) (pow.f64 b 6))
(pow.f64 (*.f64 a b) 6)

localize16.0ms (0.4%)

Local error

Found 8 expressions with local error:

NewErrorProgram
24.2b
(cbrt.f64 (*.f64 a (*.f64 b b)))
8.7b
(*.f64 a (*.f64 b b))
6.5b
(*.f64 a (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3))
0.5b
(pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)
0.5b
(pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)
6.5b
(*.f64 a (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3))
8.7b
(*.f64 a (*.f64 b b))
24.2b
(cbrt.f64 (*.f64 a (*.f64 b b)))
Compiler

Compiled 48 to 15 computations (68.8% saved)

series10.0ms (0.2%)

Counts
3 → 24
Calls

18 calls:

TimeVariablePointExpression
1.0ms
b
@-inf
(pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)
1.0ms
a
@-inf
(pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)
1.0ms
b
@inf
(pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)
1.0ms
a
@0
(pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)
1.0ms
a
@inf
(pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)

rewrite50.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
722×pow1_binary64
674×add-log-exp_binary64
674×log1p-expm1-u_binary64
674×expm1-log1p-u_binary64
655×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0926
118923
2198323
Stop Event
node limit
Counts
3 → 72
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 a (*.f64 b b)))
(*.f64 a (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3))
(pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (*.f64 a (*.f64 b b)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 a) (cbrt.f64 (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))) (pow.f64 (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))) 2) (cbrt.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 b b)) (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 b (sqrt.f64 a))) (cbrt.f64 (*.f64 b (sqrt.f64 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 a b)) (cbrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 2) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 b (sqrt.f64 a)) 1/3) (pow.f64 (*.f64 b (sqrt.f64 a)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 a b) 1/3) (cbrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a (*.f64 b b)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 b (sqrt.f64 a))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 2)) 1)))) (#(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 (cbrt.f64 (pow.f64 (*.f64 a b) 2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a b) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (pow.f64 (*.f64 a b) 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.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 cbrt.f64 (*.f64 (pow.f64 a 3) (pow.f64 (*.f64 a (*.f64 b b)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 a (*.f64 b b)) 3) (pow.f64 a 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 (log.f64 (pow.f64 (*.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 a b) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 a (*.f64 b b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 a (*.f64 b b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 b (*.f64 a b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b b) a)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a (*.f64 b b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 a (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 2) (cbrt.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 a) (*.f64 (cbrt.f64 (*.f64 b b)) (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 a) 2) (*.f64 (cbrt.f64 a) (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))) (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 b 4)) (*.f64 (cbrt.f64 (*.f64 b b)) a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b (sqrt.f64 a)) (*.f64 b (sqrt.f64 a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 a) (*.f64 (sqrt.f64 a) (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 b (sqrt.f64 a))) (*.f64 (cbrt.f64 (*.f64 b (sqrt.f64 a))) (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a b) b)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))) 2) 3) (cbrt.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 b (sqrt.f64 a))) 3) (pow.f64 (cbrt.f64 (*.f64 b (sqrt.f64 a))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a (cbrt.f64 (pow.f64 b 4))) (cbrt.f64 (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 b b) (pow.f64 (cbrt.f64 a) 2)) (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 b b) (sqrt.f64 a)) (sqrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 2) 1) (cbrt.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 2) (cbrt.f64 a)) (cbrt.f64 (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 a (*.f64 b b)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 2) (cbrt.f64 (*.f64 b (sqrt.f64 a)))) (cbrt.f64 (*.f64 b (sqrt.f64 a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) 1) b)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) (cbrt.f64 (*.f64 b b))) (cbrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 a b) (sqrt.f64 b)) (sqrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (*.f64 a a) (pow.f64 b 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 a) (*.f64 b b)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 a (*.f64 b b)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 a 3) (pow.f64 (*.f64 b b) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 b b) 3) (pow.f64 a 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 a (*.f64 b b))))))))

simplify159.0ms (4.1%)

Algorithm
egg-herbie
Rules
1022×sqr-pow_binary64
719×associate-*l*_binary64
648×cube-prod_binary64
567×fabs-mul_binary64
505×associate-*r*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07240
116240
237240
3103240
4432240
52343240
62435240
72636240
82834240
93072240
103391240
114063240
124557240
135205240
145943240
156504240
166848240
177176240
187270240
197302240
207955240
Stop Event
node limit
Counts
96 → 74
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
Outputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 b a) (*.f64 b a))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 (*.f64 a a) b))

localize11.0ms (0.3%)

Local error

Found 8 expressions with local error:

NewErrorProgram
3.1b
(*.f64 (*.f64 (*.f64 (sqrt.f64 b) (*.f64 a (sqrt.f64 b))) a) b)
0.2b
(*.f64 (sqrt.f64 b) (*.f64 a (sqrt.f64 b)))
0.2b
(*.f64 a (sqrt.f64 b))
0.1b
(*.f64 (*.f64 (sqrt.f64 b) (*.f64 a (sqrt.f64 b))) a)
0.1b
(*.f64 (*.f64 (sqrt.f64 b) (*.f64 a (sqrt.f64 b))) a)
0.2b
(*.f64 a (sqrt.f64 b))
0.2b
(*.f64 (sqrt.f64 b) (*.f64 a (sqrt.f64 b)))
3.1b
(*.f64 (*.f64 (*.f64 (sqrt.f64 b) (*.f64 a (sqrt.f64 b))) a) b)
Compiler

Compiled 49 to 8 computations (83.7% saved)

series5.0ms (0.1%)

Counts
3 → 72
Calls

18 calls:

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

rewrite49.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
723×pow1_binary64
666×add-log-exp_binary64
666×log1p-expm1-u_binary64
666×expm1-log1p-u_binary64
649×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify76.0ms (2%)

Algorithm
egg-herbie
Rules
882×unswap-sqr_binary64
725×fma-neg_binary64
453×distribute-rgt-neg-in_binary64
342×distribute-lft-neg-in_binary64
188×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
018504
150504
2164504
3587504
41603504
54521504
65308504
76301504
86592504
97030504
Stop Event
unsound
Counts
114 → 50
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a b)))
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) b)))
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
Outputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a b)))
(*.f64 a b)
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a b)))
(*.f64 a b)
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a b)))
(*.f64 a b)
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a b)))
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) b)))
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) b)))
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) b)))
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) b)))
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))

eval73.0ms (1.9%)

Compiler

Compiled 4332 to 1937 computations (55.3% saved)

prune46.0ms (1.2%)

Pruning

12 alts after pruning (3 fresh and 9 done)

PrunedKeptTotal
New3163319
Fresh101
Picked101
Done099
Total31812330
Error
0b
Counts
330 → 12
Alt Table
Click to see full alt table
StatusErrorProgram
4.3b
(neg.f64 (*.f64 (*.f64 a (*.f64 a b)) b))
4.8b
(neg.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a) b))
0.8b
(neg.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b))))
21.5b
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
16.9b
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
20.9b
(neg.f64 (*.f64 a (*.f64 (*.f64 (*.f64 a b) (sqrt.f64 b)) (sqrt.f64 b))))
16.2b
(neg.f64 (*.f64 a (pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)))
6.8b
(neg.f64 (*.f64 a (*.f64 b (*.f64 a b))))
24.9b
(neg.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 6)))
0.2b
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
18.8b
(neg.f64 (*.f64 (pow.f64 (*.f64 a (sqrt.f64 b)) 2) b))
11.9b
(neg.f64 (*.f64 (*.f64 (cbrt.f64 (pow.f64 (*.f64 b a) 3)) a) b))
Compiler

Compiled 141 to 88 computations (37.6% saved)

localize19.0ms (0.5%)

Local error

Found 8 expressions with local error:

NewErrorProgram
24.2b
(cbrt.f64 (pow.f64 (*.f64 b a) 3))
4.1b
(*.f64 (*.f64 (cbrt.f64 (pow.f64 (*.f64 b a) 3)) a) b)
0.3b
(pow.f64 (*.f64 b a) 3)
0.2b
(*.f64 (cbrt.f64 (pow.f64 (*.f64 b a) 3)) a)
0.2b
(*.f64 (cbrt.f64 (pow.f64 (*.f64 b a) 3)) a)
0.3b
(pow.f64 (*.f64 b a) 3)
4.1b
(*.f64 (*.f64 (cbrt.f64 (pow.f64 (*.f64 b a) 3)) a) b)
24.2b
(cbrt.f64 (pow.f64 (*.f64 b a) 3))
Compiler

Compiled 48 to 24 computations (50% saved)

series13.0ms (0.3%)

Counts
4 → 96
Calls

24 calls:

TimeVariablePointExpression
2.0ms
b
@-inf
(*.f64 (cbrt.f64 (pow.f64 (*.f64 b a) 3)) a)
1.0ms
b
@-inf
(*.f64 (*.f64 (cbrt.f64 (pow.f64 (*.f64 b a) 3)) a) b)
1.0ms
a
@-inf
(*.f64 (*.f64 (cbrt.f64 (pow.f64 (*.f64 b a) 3)) a) b)
1.0ms
b
@-inf
(cbrt.f64 (pow.f64 (*.f64 b a) 3))
1.0ms
a
@-inf
(cbrt.f64 (pow.f64 (*.f64 b a) 3))

rewrite51.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
718×pow1_binary64
671×add-log-exp_binary64
671×log1p-expm1-u_binary64
671×expm1-log1p-u_binary64
653×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0928
119325
2200625
Stop Event
node limit
Counts
4 → 88
Calls
Call 1
Inputs
(cbrt.f64 (pow.f64 (*.f64 b a) 3))
(*.f64 (*.f64 (cbrt.f64 (pow.f64 (*.f64 b a) 3)) a) b)
(pow.f64 (*.f64 b a) 3)
(*.f64 (cbrt.f64 (pow.f64 (*.f64 b a) 3)) a)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 b a)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 b a)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 a b)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b a) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 b a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 b) 2) (*.f64 (cbrt.f64 b) a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) (cbrt.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 a a)) (*.f64 (cbrt.f64 a) b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 b a)) (pow.f64 (cbrt.f64 (*.f64 b a)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 b (*.f64 a a))) (sqrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 b) (sqrt.f64 (*.f64 b (*.f64 a a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 b) (*.f64 (sqrt.f64 b) a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 a) (*.f64 (sqrt.f64 a) b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 b a)) (sqrt.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) 2)) (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (*.f64 b a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 b a) 3/2) 1/3) (pow.f64 (pow.f64 (*.f64 b a) 3/2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b (cbrt.f64 (*.f64 a a))) (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b (sqrt.f64 a)) (sqrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a (sqrt.f64 b)) (sqrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 b a) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 b a) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 b a) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 b a)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 b a)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 b a) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 b a))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 b) a))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 b a)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 b a) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 b a) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 b a) 3) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 b a) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 b a) 6) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) 3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (pow.f64 (*.f64 b a) 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (*.f64 b a) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 b a) 6))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 b 3) (pow.f64 (*.f64 b (*.f64 a a)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 b (*.f64 a a)) 3) (pow.f64 b 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (*.f64 b a) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (pow.f64 (*.f64 b a) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 b a) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 b a) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 b (*.f64 a (pow.f64 (*.f64 b a) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 b (*.f64 (*.f64 b (*.f64 a a)) (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 a (*.f64 b (pow.f64 (*.f64 b a) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b a) (pow.f64 (*.f64 b a) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 b a) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b (*.f64 a a)) (*.f64 b (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 b a) 2) (*.f64 b a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (*.f64 b a) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) (*.f64 (cbrt.f64 (*.f64 b a)) (pow.f64 (*.f64 b a) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) 2) (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 b a)) (*.f64 (sqrt.f64 (*.f64 b a)) (pow.f64 (*.f64 b a) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 b 3) (pow.f64 a 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 a 3) (pow.f64 b 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 b a) 3/2) (pow.f64 (*.f64 b a) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 b a)) 3) (pow.f64 (sqrt.f64 (*.f64 b a)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 b a) b) (*.f64 b (*.f64 a a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 b a) (*.f64 b (*.f64 a a))) b)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 b a) (pow.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) 2)) (pow.f64 (cbrt.f64 (*.f64 b a)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 b a) 2) b) a)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 b a) 2) a) b)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 b a) 2) (pow.f64 (cbrt.f64 (*.f64 b a)) 2)) (cbrt.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 b a) 2) (sqrt.f64 (*.f64 b a))) (sqrt.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 b a) 6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (*.f64 b a) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (*.f64 b a) 3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (*.f64 b a) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 (*.f64 b a))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 b a) 3)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 b (*.f64 a a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 b (*.f64 a a)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 b (*.f64 a a)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 b (*.f64 a a))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 b (*.f64 a a))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 b (*.f64 a a)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 a) (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 b (*.f64 a a)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 a 3) (pow.f64 (*.f64 b a) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 b a) 3) (pow.f64 a 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 b (*.f64 a a))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 b (*.f64 a a))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 b (*.f64 a a))))))))

simplify109.0ms (2.8%)

Algorithm
egg-herbie
Rules
755×unswap-sqr_binary64
639×fma-def_binary64
406×distribute-rgt-neg-out_binary64
389×fma-neg_binary64
375×distribute-rgt-neg-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
023912
168912
2209912
3691912
41357912
53015912
63951912
74909912
85934912
96940912
Stop Event
node limit
Counts
184 → 98
Calls
Call 1
Inputs
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
Outputs
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 a (*.f64 b (cbrt.f64 -1))))
(*.f64 a (neg.f64 (*.f64 b (cbrt.f64 -1))))
(*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1))))
(*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 a (*.f64 b (cbrt.f64 -1))))
(*.f64 a (neg.f64 (*.f64 b (cbrt.f64 -1))))
(*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1))))
(*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 a (*.f64 b (cbrt.f64 -1))))
(*.f64 a (neg.f64 (*.f64 b (cbrt.f64 -1))))
(*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1))))
(*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 a (*.f64 b (cbrt.f64 -1))))
(*.f64 a (neg.f64 (*.f64 b (cbrt.f64 -1))))
(*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1))))
(*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 a b)
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 a (*.f64 b (cbrt.f64 -1))))
(*.f64 a (neg.f64 (*.f64 b (cbrt.f64 -1))))
(*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1))))
(*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 a (*.f64 b (cbrt.f64 -1))))
(*.f64 a (neg.f64 (*.f64 b (cbrt.f64 -1))))
(*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1))))
(*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 a (*.f64 b (cbrt.f64 -1))))
(*.f64 a (neg.f64 (*.f64 b (cbrt.f64 -1))))
(*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1))))
(*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))
(*.f64 -1 (*.f64 a (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 a (*.f64 b (cbrt.f64 -1))))
(*.f64 a (neg.f64 (*.f64 b (cbrt.f64 -1))))
(*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1))))
(*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 (cbrt.f64 -1) (*.f64 b b))))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b (*.f64 b (cbrt.f64 -1)))))
(*.f64 (cbrt.f64 -1) (*.f64 (*.f64 a a) (neg.f64 (*.f64 b b))))
(*.f64 b (*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1))))
(*.f64 b (*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 (cbrt.f64 -1) (*.f64 b b))))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b (*.f64 b (cbrt.f64 -1)))))
(*.f64 (cbrt.f64 -1) (*.f64 (*.f64 a a) (neg.f64 (*.f64 b b))))
(*.f64 b (*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1))))
(*.f64 b (*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 (cbrt.f64 -1) (*.f64 b b))))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b (*.f64 b (cbrt.f64 -1)))))
(*.f64 (cbrt.f64 -1) (*.f64 (*.f64 a a) (neg.f64 (*.f64 b b))))
(*.f64 b (*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1))))
(*.f64 b (*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 (cbrt.f64 -1) (*.f64 b b))))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b (*.f64 b (cbrt.f64 -1)))))
(*.f64 (cbrt.f64 -1) (*.f64 (*.f64 a a) (neg.f64 (*.f64 b b))))
(*.f64 b (*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1))))
(*.f64 b (*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 b (*.f64 b (*.f64 a a)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 (cbrt.f64 -1) (*.f64 b b))))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b (*.f64 b (cbrt.f64 -1)))))
(*.f64 (cbrt.f64 -1) (*.f64 (*.f64 a a) (neg.f64 (*.f64 b b))))
(*.f64 b (*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1))))
(*.f64 b (*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 (cbrt.f64 -1) (*.f64 b b))))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b (*.f64 b (cbrt.f64 -1)))))
(*.f64 (cbrt.f64 -1) (*.f64 (*.f64 a a) (neg.f64 (*.f64 b b))))
(*.f64 b (*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1))))
(*.f64 b (*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 (cbrt.f64 -1) (*.f64 b b))))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b (*.f64 b (cbrt.f64 -1)))))
(*.f64 (cbrt.f64 -1) (*.f64 (*.f64 a a) (neg.f64 (*.f64 b b))))
(*.f64 b (*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1))))
(*.f64 b (*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) (pow.f64 b 2))))
(neg.f64 (*.f64 (*.f64 a a) (*.f64 (cbrt.f64 -1) (*.f64 b b))))
(*.f64 (*.f64 a a) (neg.f64 (*.f64 b (*.f64 b (cbrt.f64 -1)))))
(*.f64 (cbrt.f64 -1) (*.f64 (*.f64 a a) (neg.f64 (*.f64 b b))))
(*.f64 b (*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1))))
(*.f64 b (*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a)))))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 3) (pow.f64 b 3))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 a a)))
(*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 (neg.f64 a) a))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1)))))
(*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1)))
(*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 a a)))
(*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 (neg.f64 a) a))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1)))))
(*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1)))
(*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 a a)))
(*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 (neg.f64 a) a))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1)))))
(*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1)))
(*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 a a)))
(*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 (neg.f64 a) a))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1)))))
(*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1)))
(*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a))))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 b (*.f64 a a))
(*.f64 a (*.f64 a b))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 a a)))
(*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 (neg.f64 a) a))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1)))))
(*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1)))
(*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 a a)))
(*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 (neg.f64 a) a))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1)))))
(*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1)))
(*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 a a)))
(*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 (neg.f64 a) a))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1)))))
(*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1)))
(*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a))))
(*.f64 -1 (*.f64 (pow.f64 a 2) (*.f64 (cbrt.f64 -1) b)))
(neg.f64 (*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 a a)))
(*.f64 (*.f64 b (cbrt.f64 -1)) (*.f64 (neg.f64 a) a))
(*.f64 a (*.f64 a (*.f64 b (neg.f64 (cbrt.f64 -1)))))
(*.f64 (*.f64 b (*.f64 a a)) (neg.f64 (cbrt.f64 -1)))
(*.f64 a (*.f64 (cbrt.f64 -1) (*.f64 b (neg.f64 a))))

localize12.0ms (0.3%)

Local error

Found 6 expressions with local error:

NewErrorProgram
5.1b
(*.f64 a (*.f64 (*.f64 (*.f64 a b) (sqrt.f64 b)) (sqrt.f64 b)))
0.2b
(*.f64 (*.f64 a b) (sqrt.f64 b))
0.1b
(*.f64 (*.f64 (*.f64 a b) (sqrt.f64 b)) (sqrt.f64 b))
0.1b
(*.f64 (*.f64 (*.f64 a b) (sqrt.f64 b)) (sqrt.f64 b))
0.2b
(*.f64 (*.f64 a b) (sqrt.f64 b))
5.1b
(*.f64 a (*.f64 (*.f64 (*.f64 a b) (sqrt.f64 b)) (sqrt.f64 b)))
Compiler

Compiled 47 to 8 computations (83% saved)

series7.0ms (0.2%)

Counts
3 → 60
Calls

18 calls:

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

rewrite49.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
748×pow1_binary64
688×add-log-exp_binary64
688×log1p-expm1-u_binary64
688×expm1-log1p-u_binary64
671×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0826
116321
2203921
Stop Event
node limit
Counts
3 → 39
Calls
Call 1
Inputs
(*.f64 a (*.f64 (*.f64 (*.f64 a b) (sqrt.f64 b)) (sqrt.f64 b)))
(*.f64 (*.f64 a b) (sqrt.f64 b))
(*.f64 (*.f64 (*.f64 a b) (sqrt.f64 b)) (sqrt.f64 b))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 a b) 2)) 1)))) (#(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 (pow.f64 (*.f64 a b) 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.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 cbrt.f64 (*.f64 (pow.f64 a 3) (pow.f64 (*.f64 a (*.f64 b b)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 a (*.f64 b b)) 3) (pow.f64 a 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 (log.f64 (pow.f64 (*.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 a b) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 a (pow.f64 b 3/2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a (pow.f64 b 3/2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 a (pow.f64 b 3/2)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (cbrt.f64 a) (sqrt.f64 b)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 a (pow.f64 b 3/2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 b (pow.f64 (*.f64 a b) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 a) (pow.f64 b 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 a (pow.f64 b 3/2)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 b 3/2) (pow.f64 (*.f64 a b) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 a (pow.f64 b 3/2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 a (pow.f64 b 3/2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 a (pow.f64 b 3/2))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 a (*.f64 b b))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 a (*.f64 b b)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 a (*.f64 b b)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 a (*.f64 b b))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 a (*.f64 b b))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 a (*.f64 b b)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 a (*.f64 b b)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 a b) 3) (pow.f64 b 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 b 3/2) (pow.f64 (*.f64 a (pow.f64 b 3/2)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 a (pow.f64 b 3/2)) 3) (pow.f64 b 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 a (*.f64 b b))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 a (*.f64 b b))))))))

simplify82.0ms (2.1%)

Algorithm
egg-herbie
Rules
1033×fma-def_binary64
773×unswap-sqr_binary64
452×distribute-rgt-neg-in_binary64
336×neg-sub0_binary64
330×distribute-lft-neg-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
019516
153516
2154492
3600492
41513492
54081492
65818492
77053492
87591492
Stop Event
node limit
Counts
99 → 47
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (pow.f64 b 2))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a (pow.f64 b 2))))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a (pow.f64 b 2))))
Outputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 (pow.f64 a 2) (pow.f64 b 2))))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 3/2))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 3/2))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 3/2))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 3/2))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 3/2))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 3/2))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 3/2))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 3/2))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 3/2))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 3/2))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 3/2))
(*.f64 a (sqrt.f64 (pow.f64 b 3)))
(*.f64 a (pow.f64 b 3/2))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 a (pow.f64 b 2))
(*.f64 a (*.f64 b b))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a (pow.f64 b 2))))
(*.f64 a (*.f64 b b))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a (pow.f64 b 2))))
(*.f64 a (*.f64 b b))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a (pow.f64 b 2))))
(*.f64 a (*.f64 b b))
(*.f64 -1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (*.f64 a (pow.f64 b 2))))
(*.f64 a (*.f64 b b))

localize16.0ms (0.4%)

Local error

Found 8 expressions with local error:

NewErrorProgram
9.3b
(cbrt.f64 (*.f64 b a))
4.1b
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a) b)
0.6b
(pow.f64 (cbrt.f64 (*.f64 b a)) 3)
0.2b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a)
0.2b
(*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a)
0.6b
(pow.f64 (cbrt.f64 (*.f64 b a)) 3)
4.1b
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a) b)
9.3b
(cbrt.f64 (*.f64 b a))
Compiler

Compiled 47 to 19 computations (59.6% saved)

series12.0ms (0.3%)

Counts
4 → 48
Calls

24 calls:

TimeVariablePointExpression
2.0ms
b
@0
(*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a)
1.0ms
a
@-inf
(*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a)
1.0ms
b
@-inf
(pow.f64 (cbrt.f64 (*.f64 b a)) 3)
1.0ms
b
@-inf
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a) b)
1.0ms
a
@-inf
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a) b)

rewrite53.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
722×pow1_binary64
674×add-log-exp_binary64
674×log1p-expm1-u_binary64
674×expm1-log1p-u_binary64
657×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0927
119024
2195624
Stop Event
node limit
Counts
4 → 85
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 b a))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a) b)
(pow.f64 (cbrt.f64 (*.f64 b a)) 3)
(*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (*.f64 b a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 b a)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 b a))) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 b a))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (*.f64 b a))) (pow.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 b a))) 2) (cbrt.f64 (cbrt.f64 (*.f64 b a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 b) (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 a) (cbrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 b a) 1/6) (pow.f64 (*.f64 b a) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) 1/3) (cbrt.f64 (cbrt.f64 (*.f64 b a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (*.f64 b a)) 1/3) (pow.f64 (sqrt.f64 (*.f64 b a)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 b a) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 b a)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 b a))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 b a) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (*.f64 b a))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (*.f64 b a))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (*.f64 b a))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (*.f64 b a))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (*.f64 b a) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 b a) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 b a)) 6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 b a) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (pow.f64 (*.f64 b a) 2) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (pow.f64 (*.f64 b a) 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (*.f64 b a) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (*.f64 b a) 2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 b 3) (pow.f64 (*.f64 b (*.f64 a a)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 b (*.f64 a a)) 3) (pow.f64 b 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (*.f64 b a) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (pow.f64 (*.f64 b a) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 b a) 2)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 b a)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 b a)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 a b)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b a) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 b a)) (pow.f64 (cbrt.f64 (*.f64 b a)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 b a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) (cbrt.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 b a))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 b a))) (pow.f64 (cbrt.f64 (*.f64 b a)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 b) (*.f64 (cbrt.f64 a) (pow.f64 (cbrt.f64 (*.f64 b a)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 b) 2) (*.f64 (cbrt.f64 b) a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 a a)) (*.f64 (cbrt.f64 a) b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 b (*.f64 a a))) (sqrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 b a) 1/6) (*.f64 (pow.f64 (*.f64 b a) 1/6) (pow.f64 (cbrt.f64 (*.f64 b a)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 b) (sqrt.f64 (*.f64 b (*.f64 a a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 b) (*.f64 (sqrt.f64 b) a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 a) (*.f64 (sqrt.f64 a) b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 b a)) (sqrt.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) 2)) (cbrt.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 b a))) 2) 3) (cbrt.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 b a) 1/6) 3) (pow.f64 (pow.f64 (*.f64 b a) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b (cbrt.f64 (*.f64 a a))) (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 b (sqrt.f64 a)) (sqrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a (pow.f64 (cbrt.f64 b) 2)) (cbrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 a (sqrt.f64 b)) (sqrt.f64 b))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) 1) (cbrt.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 b a))) 2)) (cbrt.f64 (cbrt.f64 (*.f64 b a))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) (cbrt.f64 b)) (cbrt.f64 a))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 2) (pow.f64 (*.f64 b a) 1/6)) (pow.f64 (*.f64 b a) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 b a) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 b a))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 b) a))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 b a) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 b 3) (pow.f64 a 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 a 3) (pow.f64 b 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 b a)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 b (*.f64 a a))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 b (*.f64 a a)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 b (*.f64 a a)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 b (*.f64 a a))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 b (*.f64 a a))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 b (*.f64 a a)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 a) (*.f64 b a)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 b (*.f64 a a)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 a 3) (pow.f64 (*.f64 b a) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 b a) 3) (pow.f64 a 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 b (*.f64 a a))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 b (*.f64 a a))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 b (*.f64 a a))))))))

simplify102.0ms (2.6%)

Algorithm
egg-herbie
Rules
2170×associate-*l*_binary64
1807×associate-*r*_binary64
764×sqr-pow_binary64
304×unswap-sqr_binary64
257×pow-sqr_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08408
118408
239408
3108408
4483408
51066408
61132408
71232408
81352408
91474408
101621408
111785408
121974408
132187408
142417408
152661408
162926408
173205408
183505408
193819408
Stop Event
node limit
Counts
133 → 89
Calls
Call 1
Inputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
(*.f64 (pow.f64 a 2) b)
Outputs
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) (pow.f64 b 2))
(*.f64 (*.f64 a a) (*.f64 b b))
(*.f64 a (*.f64 a (*.f64 b b)))
(*.f64 (*.f64 a b) (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))
(*.f64 (pow.f64 a 2) b)
(*.f64 (*.f64 a a) b)
(*.f64 a (*.f64 a b))

eval53.0ms (1.4%)

Compiler

Compiled 2930 to 1418 computations (51.6% saved)

prune33.0ms (0.9%)

Pruning

11 alts after pruning (1 fresh and 10 done)

PrunedKeptTotal
New2331234
Fresh000
Picked011
Done2911
Total23511246
Error
0b
Counts
246 → 11
Alt Table
Click to see full alt table
StatusErrorProgram
4.3b
(neg.f64 (*.f64 (*.f64 a (*.f64 a b)) b))
4.8b
(neg.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a) b))
0.8b
(neg.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b))))
21.5b
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
16.9b
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
23.0b
(neg.f64 (*.f64 a (*.f64 (*.f64 a (pow.f64 b 3/2)) (sqrt.f64 b))))
6.8b
(neg.f64 (*.f64 a (*.f64 b (*.f64 a b))))
24.9b
(neg.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 6)))
0.2b
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
18.8b
(neg.f64 (*.f64 (pow.f64 (*.f64 a (sqrt.f64 b)) 2) b))
11.9b
(neg.f64 (*.f64 (*.f64 (cbrt.f64 (pow.f64 (*.f64 b a) 3)) a) b))
Compiler

Compiled 127 to 80 computations (37% saved)

regimes33.0ms (0.8%)

Accuracy

Total -38.8b remaining (-15889.7%)

Threshold costs -38.8b (-15889.7%)

Counts
11 → 1
Calls
Call 1
Inputs
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(neg.f64 (*.f64 a (*.f64 b (*.f64 a b))))
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
(*.f64 (*.f64 a a) (*.f64 b (neg.f64 b)))
(neg.f64 (*.f64 (*.f64 a (*.f64 a b)) b))
(neg.f64 (cbrt.f64 (pow.f64 (*.f64 a b) 6)))
(neg.f64 (*.f64 (pow.f64 (*.f64 a (sqrt.f64 b)) 2) b))
(neg.f64 (*.f64 (*.f64 (cbrt.f64 (pow.f64 (*.f64 b a) 3)) a) b))
(neg.f64 (*.f64 a (*.f64 (*.f64 a (pow.f64 b 3/2)) (sqrt.f64 b))))
(neg.f64 (*.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 b a)) 3) a) b))
(neg.f64 (*.f64 (pow.f64 (cbrt.f64 (*.f64 a b)) 2) (*.f64 (cbrt.f64 (*.f64 a b)) (*.f64 a b))))
Outputs
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
Calls

6 calls:

7.0ms
a
6.0ms
b
5.0ms
(*.f64 a a)
4.0ms
(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
4.0ms
(*.f64 a a)
Results
ErrorSegmentsBranch
0.2b1a
0.2b1b
0.2b1(neg.f64 (*.f64 (*.f64 (*.f64 a a) b) b))
0.2b1(*.f64 (*.f64 (*.f64 a a) b) b)
0.2b1(*.f64 a a)
0.2b1(*.f64 a a)
Compiler

Compiled 142 to 74 computations (47.9% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
+-commutative_binary64
sub-neg_binary64
neg-sub0_binary64
neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0612
11412
22412
33112
43612
53812
Stop Event
saturated
Calls
Call 1
Inputs
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
Outputs
(neg.f64 (*.f64 (*.f64 a b) (*.f64 a b)))
(*.f64 (*.f64 a b) (neg.f64 (*.f64 a b)))
(*.f64 (*.f64 a b) (*.f64 b (neg.f64 a)))

end13.0ms (0.3%)

Stop Event
fuel
Remove

(sort a b)

Compiler

Compiled 40 to 24 computations (40% saved)

Profiling

Loading profile data...