Details

Time bar (total: 4.9s)

analyze3.0ms (0.1%)

Algorithm
search
Search
TrueOtherFalseIter
0%100%0%0
0%100%0%1
0%100%0%2
50%50%0%3
50%25%25%4
62.5%12.5%25%5
68.7%6.2%25%6
71.8%3.1%25%7
73.4%1.6%25%8
74.2%0.8%25%9
74.6%0.4%25%10
74.8%0.2%25%11
74.9%0.1%25%12
Compiler

Compiled 11 to 9 computations (18.2% saved)

sample793.0ms (16.2%)

Results
638.0ms7522×body256valid
114.0ms481×body1024valid
31.0ms253×body512valid
0.0msbody256invalid

preprocess36.0ms (0.7%)

Algorithm
egg-herbie
Rules
927×fma-def_binary64
405×fma-neg_binary64
124×cancel-sign-sub-inv_binary64
87×distribute-rgt-in_binary64
63×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0813
11813
24310
31018
42298
53618
65458
78168
813698
915228
1018358
1122558
1223648
1323688
1423688
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
Outputs
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
(*.f64 3 (*.f64 (-.f64 2 (*.f64 3 x)) x))
(*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
Compiler

Compiled 11 to 9 computations (18.2% saved)

simplify43.0ms (0.9%)

Algorithm
egg-herbie
Rules
927×fma-def_binary64
405×fma-neg_binary64
124×cancel-sign-sub-inv_binary64
87×distribute-rgt-in_binary64
63×associate-*l*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0813
11813
24310
31018
42298
53618
65458
78168
813698
915228
1018358
1122558
1223648
1323688
1423688
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
Outputs
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
(*.f64 3 (*.f64 (-.f64 2 (*.f64 3 x)) x))
(*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))

eval1.0ms (0%)

Compiler

Compiled 16 to 12 computations (25% saved)

prune1.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.2b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(*.f64 x (fma.f64 x -9 6))
0.2b
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
Compiler

Compiled 17 to 13 computations (23.5% saved)

localize10.0ms (0.2%)

Local error

Found 6 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
0.1b
(*.f64 3 (-.f64 2 (*.f64 x 3)))
0.0b
(-.f64 2 (*.f64 x 3))
0.0b
(-.f64 2 (*.f64 x 3))
0.1b
(*.f64 3 (-.f64 2 (*.f64 x 3)))
0.1b
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
Compiler

Compiled 28 to 22 computations (21.4% saved)

series5.0ms (0.1%)

Counts
3 → 36
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@inf
(*.f64 3 (-.f64 2 (*.f64 x 3)))
1.0ms
x
@inf
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
1.0ms
x
@0
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
1.0ms
x
@-inf
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
0.0ms
x
@-inf
(*.f64 3 (-.f64 2 (*.f64 x 3)))

rewrite47.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
887×pow1_binary64
827×add-log-exp_binary64
826×log1p-expm1-u_binary64
826×expm1-log1p-u_binary64
813×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0830
117730
2222630
Stop Event
node limit
Counts
3 → 58
Calls
Call 1
Inputs
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
(*.f64 3 (-.f64 2 (*.f64 x 3)))
(-.f64 2 (*.f64 x 3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 3) (*.f64 x (+.f64 2 (*.f64 x -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (*.f64 3 (+.f64 2 (*.f64 x -3))) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 3 (+.f64 2 (*.f64 x -3))) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 6 (*.f64 (*.f64 x -3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 6 (*.f64 3 (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 3 (+.f64 2 (*.f64 x -3)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 8 (*.f64 27 (pow.f64 x 3))) 3) (+.f64 4 (+.f64 (*.f64 9 (*.f64 x x)) (*.f64 6 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 4 (*.f64 9 (*.f64 x x))) 3) (+.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (-.f64 8 (*.f64 27 (pow.f64 x 3)))) (+.f64 4 (+.f64 (*.f64 9 (*.f64 x x)) (*.f64 6 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (+.f64 2 (*.f64 x -3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 (+.f64 2 (*.f64 x -3))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3 (+.f64 2 (*.f64 x -3)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 3 (+.f64 2 (*.f64 x -3)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 3 (+.f64 2 (*.f64 x -3))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 3) (+.f64 2 (*.f64 x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (+.f64 2 (*.f64 x -3))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (+.f64 2 (*.f64 x -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3 (+.f64 2 (*.f64 x -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (+.f64 2 (*.f64 x -3)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 2 (*.f64 x -3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 2 (*.f64 (*.f64 x -3) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x -3) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 2 (*.f64 x -3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 2 (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 2 (*.f64 x -3))) (pow.f64 (cbrt.f64 (+.f64 2 (*.f64 x -3))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 2 (*.f64 x -3))) 2) (cbrt.f64 (+.f64 2 (*.f64 x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 2 (*.f64 x -3))) (sqrt.f64 (+.f64 2 (*.f64 x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 8 (*.f64 27 (pow.f64 x 3))) (/.f64 1 (+.f64 4 (+.f64 (*.f64 9 (*.f64 x x)) (*.f64 6 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 4 (*.f64 9 (*.f64 x x))) (/.f64 1 (+.f64 2 (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 4 (+.f64 (*.f64 9 (*.f64 x x)) (*.f64 6 x))) (-.f64 8 (*.f64 27 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 2 (*.f64 3 x)) (-.f64 4 (*.f64 9 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 8 (*.f64 27 (pow.f64 x 3))) (+.f64 4 (+.f64 (*.f64 9 (*.f64 x x)) (*.f64 6 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 4 (*.f64 9 (*.f64 x x))) (+.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 8 (*.f64 27 (pow.f64 x 3)))) (neg.f64 (+.f64 4 (+.f64 (*.f64 9 (*.f64 x x)) (*.f64 6 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 4 (*.f64 9 (*.f64 x x)))) (neg.f64 (+.f64 2 (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 8 (pow.f64 (*.f64 x -3) 3)) (+.f64 4 (-.f64 (*.f64 (*.f64 x -3) (*.f64 x -3)) (*.f64 2 (*.f64 x -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 4 (*.f64 (*.f64 x -3) (*.f64 x -3))) (-.f64 2 (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 2 (*.f64 x -3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 2 (*.f64 x -3)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 2 (*.f64 x -3))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 2 (*.f64 x -3))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 2 (*.f64 x -3)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (+.f64 2 (*.f64 x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 2 (*.f64 x -3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 2 (*.f64 x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 2 (*.f64 x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 2 (*.f64 x -3))))))))

simplify132.0ms (2.7%)

Algorithm
egg-herbie
Rules
802×sqr-pow_binary64
602×associate-*l*_binary64
540×cube-prod_binary64
532×fabs-mul_binary64
434×unswap-sqr_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
016225
129225
243198
373198
4179198
5521198
61858198
73139198
83343198
93556198
103776198
114083198
124485198
134995198
145554198
156244198
167081198
177475198
187761198
Stop Event
node limit
Counts
94 → 75
Calls
Call 1
Inputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
6
(+.f64 (*.f64 -9 x) 6)
(+.f64 (*.f64 -9 x) 6)
(+.f64 (*.f64 -9 x) 6)
(*.f64 -9 x)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(*.f64 -9 x)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
2
(+.f64 (*.f64 -3 x) 2)
(+.f64 (*.f64 -3 x) 2)
(+.f64 (*.f64 -3 x) 2)
(*.f64 -3 x)
(+.f64 2 (*.f64 -3 x))
(+.f64 2 (*.f64 -3 x))
(+.f64 2 (*.f64 -3 x))
(*.f64 -3 x)
(+.f64 2 (*.f64 -3 x))
(+.f64 2 (*.f64 -3 x))
(+.f64 2 (*.f64 -3 x))
Outputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
6
(+.f64 (*.f64 -9 x) 6)
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 (*.f64 -9 x) 6)
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 (*.f64 -9 x) 6)
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(*.f64 -9 x)
(*.f64 x -9)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(*.f64 -9 x)
(*.f64 x -9)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
2
(+.f64 (*.f64 -3 x) 2)
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 (*.f64 -3 x) 2)
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 (*.f64 -3 x) 2)
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(*.f64 -3 x)
(*.f64 x -3)
(+.f64 2 (*.f64 -3 x))
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 2 (*.f64 -3 x))
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 2 (*.f64 -3 x))
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(*.f64 -3 x)
(*.f64 x -3)
(+.f64 2 (*.f64 -3 x))
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 2 (*.f64 -3 x))
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 2 (*.f64 -3 x))
(fma.f64 -3 x 2)
(fma.f64 x -3 2)

localize8.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (fma.f64 x -9 6))
0.0b
(fma.f64 x -9 6)
0.0b
(fma.f64 x -9 6)
0.1b
(*.f64 x (fma.f64 x -9 6))
Compiler

Compiled 14 to 10 computations (28.6% saved)

series3.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(*.f64 x (fma.f64 x -9 6))
1.0ms
x
@0
(*.f64 x (fma.f64 x -9 6))
0.0ms
x
@inf
(*.f64 x (fma.f64 x -9 6))
0.0ms
x
@0
(fma.f64 x -9 6)
0.0ms
x
@inf
(fma.f64 x -9 6)

rewrite54.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
541×pow1_binary64
530×add-sqr-sqrt_binary64
506×add-log-exp_binary64
506×log1p-expm1-u_binary64
506×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
112213
2133813
Stop Event
node limit
Counts
2 → 34
Calls
Call 1
Inputs
(*.f64 x (fma.f64 x -9 6))
(fma.f64 x -9 6)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x -9) x) (*.f64 6 x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 x -9)) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (fma.f64 x -9 6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (fma.f64 x -9 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (fma.f64 x -9 6)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -9 6))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (fma.f64 x -9 6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (fma.f64 x -9 6)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (fma.f64 x -9 6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (fma.f64 x -9 6))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (fma.f64 x -9 6))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (fma.f64 x -9 6))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 6 (*.f64 x -9))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x -9) 6)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x -9) 1) 6)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 x -9 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x -9 6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x -9 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x -9 6)) (pow.f64 (cbrt.f64 (fma.f64 x -9 6)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x -9 6)) 2) (cbrt.f64 (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x -9 6)) (sqrt.f64 (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x -9) 3) 216) (+.f64 (*.f64 (*.f64 x -9) (*.f64 x -9)) (-.f64 36 (*.f64 (*.f64 x -9) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x -9) (*.f64 x -9)) 36) (-.f64 (*.f64 x -9) 6))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x -9 6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x -9 6) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x -9 6)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x -9 6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x -9 6) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x -9 6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x -9 6)))))))

simplify134.0ms (2.7%)

Algorithm
egg-herbie
Rules
803×sqr-pow_binary64
565×cube-prod_binary64
564×fabs-mul_binary64
542×associate-*l*_binary64
541×pow-sqr_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
012171
123171
236144
362144
4154144
5471144
61686144
72944144
83148144
93361144
103581144
113887144
124287144
134795144
145356144
156046144
166881144
177277144
187567144
197845144
207919144
217955144
Stop Event
node limit
Counts
58 → 45
Calls
Call 1
Inputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
6
(+.f64 (*.f64 -9 x) 6)
(+.f64 (*.f64 -9 x) 6)
(+.f64 (*.f64 -9 x) 6)
(*.f64 -9 x)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(*.f64 -9 x)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
Outputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (fma.f64 x -9 6))
6
(+.f64 (*.f64 -9 x) 6)
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 (*.f64 -9 x) 6)
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 (*.f64 -9 x) 6)
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(*.f64 -9 x)
(*.f64 x -9)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(*.f64 -9 x)
(*.f64 x -9)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)

eval30.0ms (0.6%)

Compiler

Compiled 1326 to 1034 computations (22% saved)

prune59.0ms (1.2%)

Pruning

17 alts after pruning (16 fresh and 1 done)

PrunedKeptTotal
New10416120
Fresh000
Picked101
Done011
Total10517122
Error
0.0b
Counts
122 → 17
Alt Table
Click to see full alt table
StatusErrorProgram
41.4b
(*.f64 (*.f64 3 (*.f64 -3 x)) x)
41.3b
(*.f64 -9 (pow.f64 x 2))
0.3b
(*.f64 (*.f64 3 (/.f64 (-.f64 4 (*.f64 9 (*.f64 x x))) (+.f64 2 (*.f64 3 x)))) x)
44.1b
(exp.f64 (log.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))))
10.9b
(*.f64 (pow.f64 (sqrt.f64 (*.f64 3 (+.f64 2 (*.f64 x -3)))) 2) x)
41.3b
(cbrt.f64 (pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3))
0.2b
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
0.3b
(*.f64 (/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x))) x)
1.4b
(pow.f64 (cbrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 3)
0.2b
(*.f64 x (+.f64 6 (*.f64 x -9)))
41.3b
(*.f64 x (*.f64 -9 x))
21.5b
(*.f64 x 6)
8.2b
(*.f64 (cbrt.f64 (pow.f64 (*.f64 3 (+.f64 2 (*.f64 x -3))) 3)) x)
41.3b
(cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (*.f64 3 (+.f64 2 (*.f64 x -3))) 3)))
0.2b
(+.f64 (*.f64 x (*.f64 x -9)) (*.f64 x 6))
42.4b
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 2)
39.1b
(-.f64 (+.f64 1 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 1)
Compiler

Compiled 378 to 306 computations (19% saved)

localize40.0ms (0.8%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (*.f64 x -9))
0.0b
(+.f64 (*.f64 x (*.f64 x -9)) (*.f64 x 6))
0.0b
(+.f64 (*.f64 x (*.f64 x -9)) (*.f64 x 6))
0.1b
(*.f64 x (*.f64 x -9))
Compiler

Compiled 24 to 16 computations (33.3% saved)

series2.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 x (*.f64 x -9))
0.0ms
x
@inf
(+.f64 (*.f64 x (*.f64 x -9)) (*.f64 x 6))
0.0ms
x
@inf
(*.f64 x (*.f64 x -9))
0.0ms
x
@0
(+.f64 (*.f64 x (*.f64 x -9)) (*.f64 x 6))
0.0ms
x
@-inf
(+.f64 (*.f64 x (*.f64 x -9)) (*.f64 x 6))

rewrite45.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
897×pow1_binary64
841×add-log-exp_binary64
841×log1p-expm1-u_binary64
841×expm1-log1p-u_binary64
826×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0817
117615
2229715
Stop Event
node limit
Counts
2 → 53
Calls
Call 1
Inputs
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 x (*.f64 x -9)) (*.f64 x 6))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (*.f64 x -9))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 x -9)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 x -9))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 -9)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (*.f64 x x) 3) -729) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (*.f64 x -9)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 x x) 3) -729))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 x -9))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 x -9))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 x -9))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (fma.f64 x -9 6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 2) (*.f64 x (-.f64 (*.f64 x -9) 6))) (/.f64 (*.f64 (*.f64 x x) 36) (*.f64 x (-.f64 (*.f64 x -9) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (fma.f64 x -9 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (fma.f64 x -9 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (fma.f64 x -9 6))) (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -9 6))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -9 6))) 2) (cbrt.f64 (*.f64 x (fma.f64 x -9 6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (fma.f64 x -9 6))) (sqrt.f64 (*.f64 x (fma.f64 x -9 6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (pow.f64 (*.f64 x x) 3) -729) (*.f64 (pow.f64 x 3) 216)) (/.f64 1 (+.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 2) (*.f64 (*.f64 x 6) (-.f64 (*.f64 x 6) (*.f64 x (*.f64 x -9)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 2) (*.f64 (*.f64 x x) 36)) (/.f64 1 (*.f64 x (-.f64 (*.f64 x -9) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x -9 6) x)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 2) (*.f64 (*.f64 x 6) (-.f64 (*.f64 x 6) (*.f64 x (*.f64 x -9))))) (+.f64 (*.f64 (pow.f64 (*.f64 x x) 3) -729) (*.f64 (pow.f64 x 3) 216))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 x (-.f64 (*.f64 x -9) 6)) (-.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 2) (*.f64 (*.f64 x x) 36))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (pow.f64 (*.f64 x x) 3) -729) (*.f64 (pow.f64 x 3) 216)) (+.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 2) (*.f64 (*.f64 x 6) (-.f64 (*.f64 x 6) (*.f64 x (*.f64 x -9))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (pow.f64 (*.f64 x x) 3) -729) (*.f64 (pow.f64 x 3) 216)) (+.f64 (*.f64 (*.f64 x x) 36) (-.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 2) (*.f64 (*.f64 x -9) (*.f64 x (*.f64 x 6))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 2) (*.f64 (*.f64 x x) 36)) (*.f64 x (-.f64 (*.f64 x -9) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (*.f64 (pow.f64 (*.f64 x x) 3) -729) (*.f64 (pow.f64 x 3) 216))) (neg.f64 (+.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 2) (*.f64 (*.f64 x 6) (-.f64 (*.f64 x 6) (*.f64 x (*.f64 x -9)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 2) (*.f64 (*.f64 x x) 36))) (neg.f64 (*.f64 x (-.f64 (*.f64 x -9) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x x) 36) (pow.f64 (*.f64 x (*.f64 x -9)) 2)) (-.f64 (*.f64 x 6) (*.f64 x (*.f64 x -9))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (fma.f64 x -9 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (fma.f64 x -9 6)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -9 6))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (fma.f64 x -9 6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (fma.f64 x -9 6)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (fma.f64 x -9 6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (fma.f64 x -9 6))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (fma.f64 x -9 6))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (fma.f64 x -9 6))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 x -9) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 6 (*.f64 x (*.f64 x -9)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x -9) x (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 6 x (*.f64 x (*.f64 x -9)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x (*.f64 x -9)) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x 6) (*.f64 x (*.f64 x -9)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) -9 (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x (*.f64 x -9))) 2) (cbrt.f64 (*.f64 x (*.f64 x -9))) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x 6)) 2) (cbrt.f64 (*.f64 x 6)) (*.f64 x (*.f64 x -9)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 -9)) (*.f64 x (sqrt.f64 -9)) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x 6)) (sqrt.f64 (*.f64 x 6)) (*.f64 x (*.f64 x -9)))))))

simplify140.0ms (2.9%)

Algorithm
egg-herbie
Rules
801×sqr-pow_binary64
567×fabs-mul_binary64
565×cube-prod_binary64
541×pow-sqr_binary64
540×associate-*l*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
09201
118201
232192
369174
4166174
5472174
61680174
72915174
83119174
93332174
103552174
113857174
124259174
134767174
145330174
156022174
166859174
177253174
187543174
197821174
207899174
217933174
Stop Event
node limit
Counts
77 → 59
Calls
Call 1
Inputs
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
Outputs
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 6 x)
(*.f64 x 6)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))

localize39.0ms (0.8%)

Compiler

Compiled 6 to 4 computations (33.3% saved)

localize20.0ms (0.4%)

Local error

Found 8 expressions with local error:

NewErrorProgram
4.0b
(-.f64 (+.f64 1 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 1)
0.1b
(*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))
0.1b
(*.f64 x (+.f64 2 (*.f64 x -3)))
0.0b
(+.f64 2 (*.f64 x -3))
0.0b
(+.f64 2 (*.f64 x -3))
0.1b
(*.f64 x (+.f64 2 (*.f64 x -3)))
0.1b
(*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))
4.0b
(-.f64 (+.f64 1 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 1)
Compiler

Compiled 54 to 43 computations (20.4% saved)

series3.0ms (0.1%)

Counts
4 → 48
Calls

12 calls:

TimeVariablePointExpression
0.0ms
x
@0
(-.f64 (+.f64 1 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 1)
0.0ms
x
@-inf
(*.f64 x (+.f64 2 (*.f64 x -3)))
0.0ms
x
@-inf
(-.f64 (+.f64 1 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 1)
0.0ms
x
@inf
(*.f64 x (+.f64 2 (*.f64 x -3)))
0.0ms
x
@inf
(-.f64 (+.f64 1 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 1)

rewrite99.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
893×prod-diff_binary64
622×fma-def_binary64
546×log-prod_binary64
253×fma-neg_binary64
207×expm1-udef_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01255
127435
2365535
Stop Event
node limit
Counts
4 → 279
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 1)
(*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))
(*.f64 x (+.f64 2 (*.f64 x -3)))
(+.f64 2 (*.f64 x -3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x 2) 3) (*.f64 (*.f64 -3 (*.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (*.f64 3 x)) (*.f64 (*.f64 x -3) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x -3) (*.f64 3 x)) (*.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 (*.f64 x 2)) (*.f64 3 (*.f64 -3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3 x) 2) (*.f64 (*.f64 3 x) (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3 x) (*.f64 x -3)) (*.f64 (*.f64 3 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2)))) (cbrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2)))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 x (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (fma.f64 x -3 2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x -3 2) (*.f64 3 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (fma.f64 x -3 2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 2) (*.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) (pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2) (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) (*.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 3) -1) (/.f64 1 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) -1) (/.f64 1 (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 x) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) 1) (-.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (fma.f64 x -3 2)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 2)) (cbrt.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (sqrt.f64 (*.f64 x (fma.f64 x -3 2)))) (sqrt.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 x) 1) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 x) (cbrt.f64 (pow.f64 (fma.f64 x -3 2) 2))) (cbrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 x) (sqrt.f64 (fma.f64 x -3 2))) (sqrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2)) (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 3) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2) (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 3) -1) (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 3) -1) (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (-.f64 1 (*.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) -1) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 3) -1)) (neg.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) -1)) (neg.f64 (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) 3)) (+.f64 1 (-.f64 (*.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1)) (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (*.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1))) (-.f64 1 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (fma.f64 -27 (pow.f64 x 3) 8)) (fma.f64 (*.f64 x -3) (fma.f64 x -3 -2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (*.f64 (log1p.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 3 (*.f64 x 2) (*.f64 3 (*.f64 -3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 (fma.f64 x -3 2) 3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 2 (*.f64 3 x) (*.f64 (*.f64 x -3) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x -3) (*.f64 3 x) (*.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (fma.f64 x -3 2)) 3 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) (cbrt.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2)) (cbrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2)) (*.f64 (cbrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 2) (*.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) (pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2) (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) (*.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) (*.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) 3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 3) -1) (/.f64 1 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 3) 27 1) (/.f64 1 (fma.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) -1) (/.f64 1 (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2)) (/.f64 1 (-.f64 1 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x 2) 3 (*.f64 (*.f64 -3 (*.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) 2 (*.f64 (*.f64 3 x) (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) (*.f64 x -3) (*.f64 (*.f64 3 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) (fma.f64 x -3 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1)) (cbrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1))) (cbrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1)) (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) 1) (-.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) 1) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 1) (fma.f64 (sqrt.f64 (*.f64 3 x)) (sqrt.f64 (fma.f64 x -3 2)) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 (fma.f64 x -3 2)) x 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 2)) (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 (sqrt.f64 (*.f64 x (fma.f64 x -3 2)))) (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 3 x) 1) (fma.f64 x -3 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 3 x) (cbrt.f64 (pow.f64 (fma.f64 x -3 2) 2))) (cbrt.f64 (fma.f64 x -3 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 3 x) (sqrt.f64 (fma.f64 x -3 2))) (sqrt.f64 (fma.f64 x -3 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) (sqrt.f64 (*.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x 2) 3) (*.f64 (*.f64 -3 (*.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (*.f64 3 x)) (*.f64 (*.f64 x -3) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x -3) (*.f64 3 x)) (*.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 (*.f64 x 2)) (*.f64 3 (*.f64 -3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3 x) 2) (*.f64 (*.f64 3 x) (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3 x) (*.f64 x -3)) (*.f64 (*.f64 3 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2)))) (cbrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2)))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 3) (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2))) (/.f64 1 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2)) (/.f64 1 (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2)) (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 3) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2) (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 3) -1) (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 3) -1) (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (-.f64 1 (*.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) -1) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 3) -1)) (neg.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) -1)) (neg.f64 (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) 3)) (+.f64 1 (-.f64 (*.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1)) (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (*.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1))) (-.f64 1 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (fma.f64 -27 (pow.f64 x 3) 8)) (fma.f64 (*.f64 x -3) (fma.f64 x -3 -2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (*.f64 (log1p.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 3 (*.f64 x 2) (*.f64 3 (*.f64 -3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 (fma.f64 x -3 2) 3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 2 (*.f64 3 x) (*.f64 (*.f64 x -3) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x -3) (*.f64 3 x) (*.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (fma.f64 x -3 2)) 3 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) (cbrt.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2)) (cbrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2)) (*.f64 (cbrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 2) (*.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) (pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2) (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) (*.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) (*.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) 3) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 3) -1) (/.f64 1 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (fma.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 3) 27 1) (/.f64 1 (fma.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (pow.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1) 2) -1) (/.f64 1 (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2)) (/.f64 1 (-.f64 1 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x 2) 3 (*.f64 (*.f64 -3 (*.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) 2 (*.f64 (*.f64 3 x) (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) (*.f64 x -3) (*.f64 (*.f64 3 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) (fma.f64 x -3 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1)) (cbrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1))) (cbrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1)) (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) 1) (-.f64 (sqrt.f64 (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) 1)) 1) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 1) (fma.f64 (sqrt.f64 (*.f64 3 x)) (sqrt.f64 (fma.f64 x -3 2)) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 (fma.f64 x -3 2)) x 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 2)) (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 (sqrt.f64 (*.f64 x (fma.f64 x -3 2)))) (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 3 x) 1) (fma.f64 x -3 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 3 x) (cbrt.f64 (pow.f64 (fma.f64 x -3 2) 2))) (cbrt.f64 (fma.f64 x -3 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 3 x) (sqrt.f64 (fma.f64 x -3 2))) (sqrt.f64 (fma.f64 x -3 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) (sqrt.f64 (*.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) (fma.f64 3 (*.f64 x (fma.f64 x -3 2)) -1))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x 2) (*.f64 -3 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 -3 (*.f64 x x)) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x 2) 1) (*.f64 (*.f64 -3 (*.f64 x x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 x -3 2)) x)) (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 x -3 2)) x)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 x -3 2)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 x -3 2)) x))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 x -3 2)) x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (fma.f64 x -3 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x 2) 3) (pow.f64 (*.f64 -3 (*.f64 x x)) 3)) (fma.f64 (*.f64 x 2) (*.f64 x 2) (-.f64 (*.f64 (*.f64 -3 (*.f64 x x)) (*.f64 -3 (*.f64 x x))) (*.f64 (*.f64 x 2) (*.f64 -3 (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x 2) (*.f64 x 2)) (*.f64 (*.f64 -3 (*.f64 x x)) (*.f64 -3 (*.f64 x x)))) (-.f64 (*.f64 x 2) (*.f64 -3 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 -27 (pow.f64 x 3) 8) x) (fma.f64 (*.f64 x -3) (fma.f64 x -3 -2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 4 (*.f64 9 (*.f64 x x))) x) (+.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (fma.f64 -27 (pow.f64 x 3) 8)) (fma.f64 (*.f64 x -3) (fma.f64 x -3 -2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (fma.f64 x -3 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (fma.f64 x -3 2)) x))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (fma.f64 x -3 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (*.f64 -3 (*.f64 x x))) (exp.f64 (*.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (fma.f64 x -3 2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 x -3 2) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (fma.f64 x -3 2))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x 2) (*.f64 -3 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 -3 (*.f64 x x)) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 2 (*.f64 -3 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 x -3) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 2 x (*.f64 -3 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -3 (*.f64 x x) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x -3) x (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) -3 (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 9 (*.f64 x x))) (*.f64 (cbrt.f64 (*.f64 x -3)) x) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (*.f64 x -3)) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) 2) (*.f64 -3 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x -3)) (*.f64 (sqrt.f64 (*.f64 x -3)) x) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (*.f64 x -3)) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) 2) (*.f64 -3 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x 2) 1 (*.f64 (*.f64 -3 (*.f64 x x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 -3 (*.f64 x x))) (cbrt.f64 (*.f64 -3 (*.f64 x x)))) (cbrt.f64 (*.f64 -3 (*.f64 x x))) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (cbrt.f64 (*.f64 x 2)) (cbrt.f64 (*.f64 x 2))) (cbrt.f64 (*.f64 x 2)) (*.f64 -3 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 -3 (*.f64 x x))) (sqrt.f64 (*.f64 -3 (*.f64 x x))) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x 2)) (sqrt.f64 (*.f64 x 2)) (*.f64 -3 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x -3))) (*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x -3))) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (sqrt.f64 (*.f64 x -3)) (sqrt.f64 x)) (*.f64 (sqrt.f64 (*.f64 x -3)) (sqrt.f64 x)) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (cbrt.f64 (*.f64 9 (*.f64 x x)))) (cbrt.f64 (*.f64 x -3)) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 (*.f64 x -3))) (sqrt.f64 (*.f64 x -3)) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 x -3) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (*.f64 x -3) (sqrt.f64 x)) (sqrt.f64 x) (*.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 -3 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 2 (sqrt.f64 x)) (sqrt.f64 x) (*.f64 -3 (*.f64 x x)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 x -3 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 4 (+.f64 2 (*.f64 3 x))) (/.f64 (*.f64 9 (*.f64 x x)) (+.f64 2 (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x -3 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x -3 2)) (cbrt.f64 (pow.f64 (fma.f64 x -3 2) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (fma.f64 x -3 2) 2)) (cbrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x -3 2)) (sqrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 -27 (pow.f64 x 3) 8) (/.f64 1 (fma.f64 (*.f64 x -3) (fma.f64 x -3 -2) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 4 (*.f64 9 (*.f64 x x))) (/.f64 1 (+.f64 2 (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 x -3) (fma.f64 x -3 -2) 4) (fma.f64 -27 (pow.f64 x 3) 8)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 2 (*.f64 3 x)) (-.f64 4 (*.f64 9 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 -27 (pow.f64 x 3) 8) (fma.f64 (*.f64 x -3) (fma.f64 x -3 -2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 -27 (pow.f64 x 3) 8) (fma.f64 9 (*.f64 x x) (-.f64 4 (*.f64 -6 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 4 (*.f64 9 (*.f64 x x))) (+.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 -27 (pow.f64 x 3) 8)) (neg.f64 (fma.f64 (*.f64 x -3) (fma.f64 x -3 -2) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 4 (*.f64 9 (*.f64 x x)))) (neg.f64 (+.f64 2 (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 9 (*.f64 x x) -4) (fma.f64 x -3 -2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x -3 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x -3 2) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x -3 2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x -3 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x -3 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x -3 2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 x -3 2)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x -3) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x -3 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -3 x 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x -3) 1 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 x -3)) (cbrt.f64 (*.f64 9 (*.f64 x x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 9 (*.f64 x x))) (cbrt.f64 (*.f64 x -3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) -3) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x -3)) (sqrt.f64 (*.f64 x -3)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) -3) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -3 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -3 (sqrt.f64 x)) (sqrt.f64 x) 2)))))

simplify145.0ms (2.9%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1104×sqr-pow_binary64
641×fabs-mul_binary64
628×pow-sqr_binary64
611×cube-prod_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
016405
131405
251360
3102324
4266324
5806324
61241324
71705324
81813324
91946324
102118324
112361324
122674324
133046324
143505324
154092324
164800324
175658324
186084324
196400324
206706324
216784324
226818324
Stop Event
node limit
Counts
327 → 215
Calls
Call 1
Inputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 2 x)
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(*.f64 -3 (pow.f64 x 2))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(*.f64 -3 (pow.f64 x 2))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
2
(+.f64 (*.f64 -3 x) 2)
(+.f64 (*.f64 -3 x) 2)
(+.f64 (*.f64 -3 x) 2)
(*.f64 -3 x)
(+.f64 2 (*.f64 -3 x))
(+.f64 2 (*.f64 -3 x))
(+.f64 2 (*.f64 -3 x))
(*.f64 -3 x)
(+.f64 2 (*.f64 -3 x))
(+.f64 2 (*.f64 -3 x))
(+.f64 2 (*.f64 -3 x))
Outputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 2 x)
(*.f64 x 2)
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(fma.f64 2 x (*.f64 (*.f64 x x) -3))
(fma.f64 x 2 (*.f64 (*.f64 x x) -3))
(*.f64 x (fma.f64 x -3 2))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(fma.f64 2 x (*.f64 (*.f64 x x) -3))
(fma.f64 x 2 (*.f64 (*.f64 x x) -3))
(*.f64 x (fma.f64 x -3 2))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(fma.f64 2 x (*.f64 (*.f64 x x) -3))
(fma.f64 x 2 (*.f64 (*.f64 x x) -3))
(*.f64 x (fma.f64 x -3 2))
(*.f64 -3 (pow.f64 x 2))
(*.f64 (*.f64 x x) -3)
(*.f64 x (*.f64 x -3))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(fma.f64 2 x (*.f64 (*.f64 x x) -3))
(fma.f64 x 2 (*.f64 (*.f64 x x) -3))
(*.f64 x (fma.f64 x -3 2))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(fma.f64 2 x (*.f64 (*.f64 x x) -3))
(fma.f64 x 2 (*.f64 (*.f64 x x) -3))
(*.f64 x (fma.f64 x -3 2))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(fma.f64 2 x (*.f64 (*.f64 x x) -3))
(fma.f64 x 2 (*.f64 (*.f64 x x) -3))
(*.f64 x (fma.f64 x -3 2))
(*.f64 -3 (pow.f64 x 2))
(*.f64 (*.f64 x x) -3)
(*.f64 x (*.f64 x -3))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(fma.f64 2 x (*.f64 (*.f64 x x) -3))
(fma.f64 x 2 (*.f64 (*.f64 x x) -3))
(*.f64 x (fma.f64 x -3 2))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(fma.f64 2 x (*.f64 (*.f64 x x) -3))
(fma.f64 x 2 (*.f64 (*.f64 x x) -3))
(*.f64 x (fma.f64 x -3 2))
(+.f64 (*.f64 2 x) (*.f64 -3 (pow.f64 x 2)))
(fma.f64 2 x (*.f64 (*.f64 x x) -3))
(fma.f64 x 2 (*.f64 (*.f64 x x) -3))
(*.f64 x (fma.f64 x -3 2))
2
(+.f64 (*.f64 -3 x) 2)
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 (*.f64 -3 x) 2)
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 (*.f64 -3 x) 2)
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(*.f64 -3 x)
(*.f64 x -3)
(+.f64 2 (*.f64 -3 x))
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 2 (*.f64 -3 x))
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 2 (*.f64 -3 x))
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(*.f64 -3 x)
(*.f64 x -3)
(+.f64 2 (*.f64 -3 x))
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 2 (*.f64 -3 x))
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 2 (*.f64 -3 x))
(fma.f64 -3 x 2)
(fma.f64 x -3 2)

localize21.0ms (0.4%)

Local error

Found 8 expressions with local error:

NewErrorProgram
1.9b
(exp.f64 (log.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))))
0.1b
(*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))
0.1b
(*.f64 x (+.f64 2 (*.f64 x -3)))
0.0b
(+.f64 2 (*.f64 x -3))
0.0b
(+.f64 2 (*.f64 x -3))
0.1b
(*.f64 x (+.f64 2 (*.f64 x -3)))
0.1b
(*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))
1.9b
(exp.f64 (log.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))))
Compiler

Compiled 50 to 39 computations (22% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(exp.f64 (log.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))))
0.0ms
x
@inf
(exp.f64 (log.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))))
0.0ms
x
@-inf
(exp.f64 (log.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))))

rewrite49.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
487×log-prod_binary64
367×exp-prod_binary64
332×prod-exp_binary64
300×pow-prod-down_binary64
286×prod-diff_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01113
122411
2272611
Stop Event
node limit
Counts
1 → 71
Calls
Call 1
Inputs
(exp.f64 (log.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x 2) 3) (*.f64 (*.f64 x (*.f64 x -3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (*.f64 3 x)) (*.f64 (*.f64 x -3) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x -3) (*.f64 3 x)) (*.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 (*.f64 x 2)) (*.f64 3 (*.f64 x (*.f64 x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3 x) 2) (*.f64 (*.f64 3 x) (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3 x) (*.f64 x -3)) (*.f64 (*.f64 3 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (pow.f64 (exp.f64 x) 2) (fma.f64 x -3 2))) (*.f64 x (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 x (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (fma.f64 x -3 2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x -3 2) (*.f64 3 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (fma.f64 x -3 2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (fma.f64 x -3 2)) (pow.f64 (exp.f64 1) (log.f64 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) (pow.f64 (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 2) (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 2) (*.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) (*.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 x) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (fma.f64 x -3 2)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 2)) (cbrt.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (sqrt.f64 (*.f64 x (fma.f64 x -3 2)))) (sqrt.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 x) 1) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 x) (pow.f64 (cbrt.f64 (fma.f64 x -3 2)) 2)) (cbrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 x) (sqrt.f64 (fma.f64 x -3 2))) (sqrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 1) (log.f64 3)) (*.f64 x (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 1) (*.f64 2 (log.f64 (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))) (pow.f64 (exp.f64 1) (log.f64 (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 1) (log.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) (pow.f64 (exp.f64 1) (log.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 1) (log.f64 (*.f64 3 x))) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (exp.f64 1) (*.f64 (log.f64 3) 1)) (pow.f64 (exp.f64 1) (*.f64 (log.f64 (*.f64 x (fma.f64 x -3 2))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (fma.f64 -27 (pow.f64 x 3) 8)) (fma.f64 (*.f64 x -3) (fma.f64 x -3 -2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (exp.f64 1) (exp.f64 (log1p.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))) (pow.f64 (exp.f64 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 2) 9) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) (*.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 2)) (*.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 1 (fma.f64 (fma.f64 x -3 2) (*.f64 3 x) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 1) 1) (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) 1) (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) (cbrt.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) (sqrt.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))) (sqrt.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) (sqrt.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 2))) (sqrt.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 2)) 1) (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 2)) (pow.f64 (cbrt.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) 2)) (cbrt.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 2)) (cbrt.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))) (cbrt.f64 (sqrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 2))) (cbrt.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 2)) (sqrt.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))) (sqrt.f64 (cbrt.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 2) 9))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 3 (*.f64 x 2) (*.f64 3 (*.f64 x (*.f64 x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 2 (*.f64 3 x) (*.f64 (*.f64 x -3) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x -3) (*.f64 3 x) (*.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x 2) 3 (*.f64 (*.f64 x (*.f64 x -3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) 2 (*.f64 (*.f64 3 x) (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) (*.f64 x -3) (*.f64 (*.f64 3 x) 2))))))

simplify144.0ms (2.9%)

Algorithm
egg-herbie
Rules
802×sqr-pow_binary64
565×cube-prod_binary64
561×fabs-mul_binary64
542×associate-*l*_binary64
541×pow-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
09117
118117
232108
36990
416690
547890
6169090
7294390
8314790
9336090
10358090
11388790
12428790
13479790
14535690
15604290
16688190
17727390
18756590
19784390
20791590
21794990
Stop Event
node limit
Counts
83 → 76
Calls
Call 1
Inputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
Outputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))

localize22.0ms (0.4%)

Local error

Found 8 expressions with local error:

NewErrorProgram
0.3b
(pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3)
0.1b
(*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))
0.1b
(*.f64 x (+.f64 2 (*.f64 x -3)))
0.0b
(+.f64 2 (*.f64 x -3))
0.1b
(*.f64 x (+.f64 2 (*.f64 x -3)))
0.1b
(*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))
0.3b
(pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3)
40.3b
(cbrt.f64 (pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3))
Compiler

Compiled 52 to 41 computations (21.2% saved)

series3.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(cbrt.f64 (pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3))
0.0ms
x
@0
(pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3)
0.0ms
x
@inf
(pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3)
0.0ms
x
@-inf
(pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3)
0.0ms
x
@0
(cbrt.f64 (pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3))

rewrite54.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
519×log-prod_binary64
372×exp-prod_binary64
326×pow-prod-down_binary64
275×prod-diff_binary64
262×pow2_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01129
124825
2287725
Stop Event
node limit
Counts
2 → 101
Calls
Call 1
Inputs
(cbrt.f64 (pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3))
(pow.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x 2) 3) (*.f64 (*.f64 x (*.f64 x -3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (*.f64 3 x)) (*.f64 (*.f64 x -3) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x -3) (*.f64 3 x)) (*.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 (*.f64 x 2)) (*.f64 3 (*.f64 x (*.f64 x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3 x) 2) (*.f64 (*.f64 3 x) (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3 x) (*.f64 x -3)) (*.f64 (*.f64 3 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (pow.f64 (exp.f64 x) 2) (fma.f64 x -3 2))) (*.f64 x (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 x (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (fma.f64 x -3 2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x -3 2) (*.f64 3 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (fma.f64 x -3 2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 2) (*.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) (pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2) (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) (*.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 x) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (fma.f64 x -3 2)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 2)) (cbrt.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (sqrt.f64 (*.f64 x (fma.f64 x -3 2)))) (sqrt.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 x) 1) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 x) (pow.f64 (cbrt.f64 (fma.f64 x -3 2)) 2)) (cbrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 x) (sqrt.f64 (fma.f64 x -3 2))) (sqrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (fma.f64 -27 (pow.f64 x 3) 8)) (fma.f64 (*.f64 x -3) (fma.f64 x -3 -2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 729 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 6)) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 9) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3/2) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1/3) (*.f64 3 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) 2)) (cbrt.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))) (sqrt.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) 1/3) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) 1) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 3 (*.f64 x 2) (*.f64 3 (*.f64 x (*.f64 x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 2 (*.f64 3 x) (*.f64 (*.f64 x -3) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x -3) (*.f64 3 x) (*.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x 2) 3 (*.f64 (*.f64 x (*.f64 x -3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) 2 (*.f64 (*.f64 3 x) (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) (*.f64 x -3) (*.f64 (*.f64 3 x) 2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 3)) 27)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 3)) 27))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 3)) 27))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 3)) 27))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 (*.f64 x (fma.f64 x -3 2)) (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (fma.f64 x -3 2)) (*.f64 3 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 27 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2) (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 2) (*.f64 (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 5/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 3) 27)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3/2) (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 x) (*.f64 (fma.f64 x -3 2) (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 3 x) 3) (pow.f64 (fma.f64 x -3 2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 5/2) (sqrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2) 3) (*.f64 x (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2) (*.f64 x (fma.f64 x -3 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2) 1) (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) 2) (cbrt.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 2) (*.f64 3 x)) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 729 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (pow.f64 (*.f64 x (fma.f64 x -3 2)) 3)) 27))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 9))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 9)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3/2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 1) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) 1/3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x))) 3/2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (*.f64 (fma.f64 x -3 2) (*.f64 3 x)) 3)))))))

simplify93.0ms (1.9%)

Algorithm
egg-herbie
Rules
581×distribute-rgt-out_binary64
492×unswap-sqr_binary64
453×*-commutative_binary64
450×associate-*l*_binary64
441×fma-def_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
039362
196353
2225338
3662315
42369311
54644311
64942311
75398311
86224311
97163311
107879311
Stop Event
node limit
Counts
125 → 122
Calls
Call 1
Inputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 3 (*.f64 (pow.f64 x 2) (cbrt.f64 -27)))
(+.f64 (*.f64 -2 (*.f64 x (cbrt.f64 -27))) (*.f64 3 (*.f64 (pow.f64 x 2) (cbrt.f64 -27))))
(+.f64 (*.f64 -2 (*.f64 x (cbrt.f64 -27))) (*.f64 3 (*.f64 (pow.f64 x 2) (cbrt.f64 -27))))
(+.f64 (*.f64 -2 (*.f64 x (cbrt.f64 -27))) (*.f64 3 (*.f64 (pow.f64 x 2) (cbrt.f64 -27))))
(*.f64 216 (pow.f64 x 3))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (*.f64 216 (pow.f64 x 3)))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (+.f64 (*.f64 216 (pow.f64 x 3)) (*.f64 1458 (pow.f64 x 5))))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (+.f64 (*.f64 216 (pow.f64 x 3)) (+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6)))))
(*.f64 -729 (pow.f64 x 6))
(+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6)))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6))))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (+.f64 (*.f64 216 (pow.f64 x 3)) (+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6)))))
(*.f64 -729 (pow.f64 x 6))
(+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6)))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6))))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (+.f64 (*.f64 216 (pow.f64 x 3)) (+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6)))))
Outputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 3 (*.f64 (pow.f64 x 2) (cbrt.f64 -27)))
(*.f64 3 (*.f64 (*.f64 x x) (cbrt.f64 -27)))
(*.f64 (*.f64 x x) (*.f64 (cbrt.f64 -27) 3))
(*.f64 (cbrt.f64 -27) (*.f64 x (*.f64 x 3)))
(*.f64 x (*.f64 (cbrt.f64 -27) (*.f64 x 3)))
(*.f64 x (*.f64 3 (*.f64 x (cbrt.f64 -27))))
(+.f64 (*.f64 -2 (*.f64 x (cbrt.f64 -27))) (*.f64 3 (*.f64 (pow.f64 x 2) (cbrt.f64 -27))))
(fma.f64 -2 (*.f64 x (cbrt.f64 -27)) (*.f64 3 (*.f64 (*.f64 x x) (cbrt.f64 -27))))
(*.f64 (cbrt.f64 -27) (+.f64 (*.f64 (*.f64 x x) 3) (*.f64 x -2)))
(*.f64 (cbrt.f64 -27) (*.f64 x (+.f64 (*.f64 x 3) -2)))
(*.f64 (*.f64 x (cbrt.f64 -27)) (fma.f64 x 3 -2))
(+.f64 (*.f64 -2 (*.f64 x (cbrt.f64 -27))) (*.f64 3 (*.f64 (pow.f64 x 2) (cbrt.f64 -27))))
(fma.f64 -2 (*.f64 x (cbrt.f64 -27)) (*.f64 3 (*.f64 (*.f64 x x) (cbrt.f64 -27))))
(*.f64 (cbrt.f64 -27) (+.f64 (*.f64 (*.f64 x x) 3) (*.f64 x -2)))
(*.f64 (cbrt.f64 -27) (*.f64 x (+.f64 (*.f64 x 3) -2)))
(*.f64 (*.f64 x (cbrt.f64 -27)) (fma.f64 x 3 -2))
(+.f64 (*.f64 -2 (*.f64 x (cbrt.f64 -27))) (*.f64 3 (*.f64 (pow.f64 x 2) (cbrt.f64 -27))))
(fma.f64 -2 (*.f64 x (cbrt.f64 -27)) (*.f64 3 (*.f64 (*.f64 x x) (cbrt.f64 -27))))
(*.f64 (cbrt.f64 -27) (+.f64 (*.f64 (*.f64 x x) 3) (*.f64 x -2)))
(*.f64 (cbrt.f64 -27) (*.f64 x (+.f64 (*.f64 x 3) -2)))
(*.f64 (*.f64 x (cbrt.f64 -27)) (fma.f64 x 3 -2))
(*.f64 216 (pow.f64 x 3))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (*.f64 216 (pow.f64 x 3)))
(fma.f64 -972 (pow.f64 x 4) (*.f64 216 (pow.f64 x 3)))
(fma.f64 216 (pow.f64 x 3) (*.f64 -972 (pow.f64 x 4)))
(*.f64 (pow.f64 x 3) (+.f64 216 (*.f64 x -972)))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (+.f64 (*.f64 216 (pow.f64 x 3)) (*.f64 1458 (pow.f64 x 5))))
(fma.f64 -972 (pow.f64 x 4) (fma.f64 216 (pow.f64 x 3) (*.f64 1458 (pow.f64 x 5))))
(fma.f64 216 (pow.f64 x 3) (fma.f64 -972 (pow.f64 x 4) (*.f64 1458 (pow.f64 x 5))))
(fma.f64 1458 (pow.f64 x 5) (*.f64 (pow.f64 x 3) (+.f64 216 (*.f64 x -972))))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (+.f64 (*.f64 216 (pow.f64 x 3)) (+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6)))))
(fma.f64 -972 (pow.f64 x 4) (fma.f64 216 (pow.f64 x 3) (fma.f64 1458 (pow.f64 x 5) (*.f64 -729 (pow.f64 x 6)))))
(fma.f64 216 (pow.f64 x 3) (fma.f64 -972 (pow.f64 x 4) (fma.f64 1458 (pow.f64 x 5) (*.f64 -729 (pow.f64 x 6)))))
(fma.f64 1458 (pow.f64 x 5) (fma.f64 -729 (pow.f64 x 6) (*.f64 (pow.f64 x 3) (+.f64 216 (*.f64 x -972)))))
(fma.f64 -972 (pow.f64 x 4) (fma.f64 216 (pow.f64 x 3) (*.f64 (pow.f64 x 5) (+.f64 1458 (*.f64 x -729)))))
(fma.f64 216 (pow.f64 x 3) (fma.f64 -972 (pow.f64 x 4) (*.f64 (pow.f64 x 5) (+.f64 1458 (*.f64 x -729)))))
(*.f64 -729 (pow.f64 x 6))
(+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6)))
(fma.f64 1458 (pow.f64 x 5) (*.f64 -729 (pow.f64 x 6)))
(*.f64 (pow.f64 x 5) (+.f64 1458 (*.f64 x -729)))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6))))
(fma.f64 -972 (pow.f64 x 4) (fma.f64 1458 (pow.f64 x 5) (*.f64 -729 (pow.f64 x 6))))
(fma.f64 -972 (pow.f64 x 4) (*.f64 (pow.f64 x 5) (+.f64 1458 (*.f64 x -729))))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (+.f64 (*.f64 216 (pow.f64 x 3)) (+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6)))))
(fma.f64 -972 (pow.f64 x 4) (fma.f64 216 (pow.f64 x 3) (fma.f64 1458 (pow.f64 x 5) (*.f64 -729 (pow.f64 x 6)))))
(fma.f64 216 (pow.f64 x 3) (fma.f64 -972 (pow.f64 x 4) (fma.f64 1458 (pow.f64 x 5) (*.f64 -729 (pow.f64 x 6)))))
(fma.f64 1458 (pow.f64 x 5) (fma.f64 -729 (pow.f64 x 6) (*.f64 (pow.f64 x 3) (+.f64 216 (*.f64 x -972)))))
(fma.f64 -972 (pow.f64 x 4) (fma.f64 216 (pow.f64 x 3) (*.f64 (pow.f64 x 5) (+.f64 1458 (*.f64 x -729)))))
(fma.f64 216 (pow.f64 x 3) (fma.f64 -972 (pow.f64 x 4) (*.f64 (pow.f64 x 5) (+.f64 1458 (*.f64 x -729)))))
(*.f64 -729 (pow.f64 x 6))
(+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6)))
(fma.f64 1458 (pow.f64 x 5) (*.f64 -729 (pow.f64 x 6)))
(*.f64 (pow.f64 x 5) (+.f64 1458 (*.f64 x -729)))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6))))
(fma.f64 -972 (pow.f64 x 4) (fma.f64 1458 (pow.f64 x 5) (*.f64 -729 (pow.f64 x 6))))
(fma.f64 -972 (pow.f64 x 4) (*.f64 (pow.f64 x 5) (+.f64 1458 (*.f64 x -729))))
(+.f64 (*.f64 -972 (pow.f64 x 4)) (+.f64 (*.f64 216 (pow.f64 x 3)) (+.f64 (*.f64 1458 (pow.f64 x 5)) (*.f64 -729 (pow.f64 x 6)))))
(fma.f64 -972 (pow.f64 x 4) (fma.f64 216 (pow.f64 x 3) (fma.f64 1458 (pow.f64 x 5) (*.f64 -729 (pow.f64 x 6)))))
(fma.f64 216 (pow.f64 x 3) (fma.f64 -972 (pow.f64 x 4) (fma.f64 1458 (pow.f64 x 5) (*.f64 -729 (pow.f64 x 6)))))
(fma.f64 1458 (pow.f64 x 5) (fma.f64 -729 (pow.f64 x 6) (*.f64 (pow.f64 x 3) (+.f64 216 (*.f64 x -972)))))
(fma.f64 -972 (pow.f64 x 4) (fma.f64 216 (pow.f64 x 3) (*.f64 (pow.f64 x 5) (+.f64 1458 (*.f64 x -729)))))
(fma.f64 216 (pow.f64 x 3) (fma.f64 -972 (pow.f64 x 4) (*.f64 (pow.f64 x 5) (+.f64 1458 (*.f64 x -729)))))

eval262.0ms (5.3%)

Compiler

Compiled 10576 to 8320 computations (21.3% saved)

prune97.0ms (2%)

Pruning

16 alts after pruning (14 fresh and 2 done)

PrunedKeptTotal
New6378645
Fresh5611
Picked101
Done325
Total64616662
Error
0.0b
Counts
662 → 16
Alt Table
Click to see full alt table
StatusErrorProgram
1.0b
(*.f64 (*.f64 x (cbrt.f64 -27)) (fma.f64 x 3 -2))
21.5b
(*.f64 x 6)
0.1b
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
0.2b
(+.f64 (*.f64 -9 (*.f64 x x)) (*.f64 x 6))
10.9b
(*.f64 (pow.f64 (sqrt.f64 (*.f64 3 (+.f64 2 (*.f64 x -3)))) 2) x)
0.2b
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
0.3b
(*.f64 (/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x))) x)
41.5b
(-.f64 (+.f64 1 (*.f64 3 (*.f64 x (*.f64 x -3)))) 1)
1.4b
(pow.f64 (cbrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 3)
0.3b
(+.f64 (*.f64 2 (*.f64 3 x)) (*.f64 (*.f64 x -3) (*.f64 3 x)))
41.4b
(*.f64 (*.f64 3 (*.f64 -3 x)) x)
41.3b
(*.f64 x (*.f64 x -9))
11.0b
(*.f64 (*.f64 (*.f64 3 x) (sqrt.f64 (fma.f64 x -3 2))) (sqrt.f64 (fma.f64 x -3 2)))
7.4b
(/.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))
42.4b
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 2)
0.2b
(*.f64 x (+.f64 6 (*.f64 x -9)))
Compiler

Compiled 350 to 275 computations (21.4% saved)

localize8.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (*.f64 x -9))
0.1b
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
0.1b
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
0.1b
(*.f64 x (*.f64 x -9))
Compiler

Compiled 20 to 13 computations (35% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
0.0ms
x
@0
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
0.0ms
x
@inf
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))

rewrite42.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
635×pow1_binary64
591×add-log-exp_binary64
591×log1p-expm1-u_binary64
591×expm1-log1p-u_binary64
581×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0711
114310
2158910
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 x -9)) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x 6) (*.f64 x (*.f64 x -9)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x 6) 1) (*.f64 x (*.f64 x -9)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (+.f64 6 (*.f64 x -9)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 6 (*.f64 x -9)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 6 (*.f64 x -9))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (+.f64 6 (*.f64 x -9))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (+.f64 6 (*.f64 x -9)))) (pow.f64 (cbrt.f64 (*.f64 x (+.f64 6 (*.f64 x -9)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (+.f64 6 (*.f64 x -9)))) 2) (cbrt.f64 (*.f64 x (+.f64 6 (*.f64 x -9)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (+.f64 6 (*.f64 x -9)))) (sqrt.f64 (*.f64 x (+.f64 6 (*.f64 x -9)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x 6) 3) (pow.f64 (*.f64 x (*.f64 x -9)) 3)) (+.f64 (*.f64 (*.f64 x 6) (*.f64 x 6)) (-.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 2) (*.f64 (*.f64 x 6) (*.f64 x (*.f64 x -9))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x 6) (*.f64 x 6)) (pow.f64 (*.f64 x (*.f64 x -9)) 2)) (-.f64 (*.f64 x 6) (*.f64 x (*.f64 x -9))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 6 (*.f64 x -9))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (+.f64 6 (*.f64 x -9))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (+.f64 6 (*.f64 x -9)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (+.f64 6 (*.f64 x -9)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (+.f64 6 (*.f64 x -9))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 x (+.f64 6 (*.f64 x -9)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (+.f64 6 (*.f64 x -9))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (+.f64 6 (*.f64 x -9)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (+.f64 6 (*.f64 x -9)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (+.f64 6 (*.f64 x -9)))))))))

simplify136.0ms (2.8%)

Algorithm
egg-herbie
Rules
802×sqr-pow_binary64
565×cube-prod_binary64
561×fabs-mul_binary64
542×associate-*l*_binary64
541×pow-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
09117
118117
232108
36990
416690
547890
6169090
7294390
8314790
9336090
10358090
11388790
12428790
13479790
14535690
15604290
16688190
17727390
18756590
19784390
20791590
21794990
Stop Event
node limit
Counts
34 → 27
Calls
Call 1
Inputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
Outputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))

localize4.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (*.f64 x -9))
0.1b
(*.f64 x (*.f64 x -9))
Compiler

Compiled 11 to 7 computations (36.4% saved)

rewrite0.0ms (0%)

Counts
0 → 0

simplify19.0ms (0.4%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
0 → 0
Calls
Call 1
Inputs
Outputs

localize8.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 -9 (*.f64 x x))
0.0b
(+.f64 (*.f64 -9 (*.f64 x x)) (*.f64 x 6))
0.0b
(+.f64 (*.f64 -9 (*.f64 x x)) (*.f64 x 6))
0.2b
(*.f64 -9 (*.f64 x x))
Compiler

Compiled 24 to 13 computations (45.8% saved)

series1.0ms (0%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
x
@0
(*.f64 -9 (*.f64 x x))
0.0ms
x
@inf
(*.f64 -9 (*.f64 x x))
0.0ms
x
@inf
(+.f64 (*.f64 -9 (*.f64 x x)) (*.f64 x 6))
0.0ms
x
@-inf
(+.f64 (*.f64 -9 (*.f64 x x)) (*.f64 x 6))
0.0ms
x
@0
(+.f64 (*.f64 -9 (*.f64 x x)) (*.f64 x 6))

rewrite53.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
866×pow1_binary64
814×add-log-exp_binary64
814×log1p-expm1-u_binary64
814×expm1-log1p-u_binary64
798×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0818
117517
2225917
Stop Event
node limit
Counts
2 → 51
Calls
Call 1
Inputs
(*.f64 -9 (*.f64 x x))
(+.f64 (*.f64 -9 (*.f64 x x)) (*.f64 x 6))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 -9 (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -9 (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 -9 (*.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 -9)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -729 (pow.f64 (*.f64 x x) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 81 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 -9) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 -729 (pow.f64 (*.f64 x x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -9 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 -9 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -9 (*.f64 x x))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (+.f64 (*.f64 -9 x) 6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 81 (pow.f64 x 4)) (*.f64 x (-.f64 (*.f64 -9 x) 6))) (/.f64 (*.f64 (*.f64 x x) 36) (*.f64 x (-.f64 (*.f64 -9 x) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 (*.f64 -9 x) 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 6 (*.f64 -9 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (+.f64 (*.f64 -9 x) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6))) (pow.f64 (cbrt.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6))) 2) (cbrt.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6))) (sqrt.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 -729 (pow.f64 (*.f64 x x) 3)) (*.f64 216 (pow.f64 x 3))) (/.f64 1 (+.f64 (*.f64 81 (pow.f64 x 4)) (*.f64 (*.f64 x 6) (-.f64 (*.f64 x 6) (*.f64 -9 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 81 (pow.f64 x 4)) (*.f64 (*.f64 x x) 36)) (/.f64 1 (*.f64 x (-.f64 (*.f64 -9 x) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (*.f64 81 (pow.f64 x 4)) (*.f64 (*.f64 x 6) (-.f64 (*.f64 x 6) (*.f64 -9 (*.f64 x x))))) (+.f64 (*.f64 -729 (pow.f64 (*.f64 x x) 3)) (*.f64 216 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 x (-.f64 (*.f64 -9 x) 6)) (-.f64 (*.f64 81 (pow.f64 x 4)) (*.f64 (*.f64 x x) 36))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 -729 (pow.f64 (*.f64 x x) 3)) (*.f64 216 (pow.f64 x 3))) (+.f64 (*.f64 81 (pow.f64 x 4)) (*.f64 (*.f64 x 6) (-.f64 (*.f64 x 6) (*.f64 -9 (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 -729 (pow.f64 (*.f64 x x) 3)) (*.f64 216 (pow.f64 x 3))) (+.f64 (*.f64 (*.f64 x x) 36) (-.f64 (*.f64 81 (pow.f64 x 4)) (*.f64 (*.f64 x x) (*.f64 -9 (*.f64 x 6))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 81 (pow.f64 x 4)) (*.f64 (*.f64 x x) 36)) (*.f64 x (-.f64 (*.f64 -9 x) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (*.f64 -729 (pow.f64 (*.f64 x x) 3)) (*.f64 216 (pow.f64 x 3)))) (neg.f64 (+.f64 (*.f64 81 (pow.f64 x 4)) (*.f64 (*.f64 x 6) (-.f64 (*.f64 x 6) (*.f64 -9 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 81 (pow.f64 x 4)) (*.f64 (*.f64 x x) 36))) (neg.f64 (*.f64 x (-.f64 (*.f64 -9 x) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x x) 36) (*.f64 81 (pow.f64 x 4))) (-.f64 (*.f64 x 6) (*.f64 -9 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (+.f64 (*.f64 -9 x) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -9 (*.f64 x x) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 6 (*.f64 -9 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x x) -9 (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 6 x (*.f64 -9 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 -9 (*.f64 x x)) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x 6) (*.f64 -9 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 81 (pow.f64 x 4))) (cbrt.f64 (*.f64 -9 (*.f64 x x))) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x 6)) 2) (cbrt.f64 (*.f64 x 6)) (*.f64 -9 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (sqrt.f64 -9)) (*.f64 x (sqrt.f64 -9)) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x 6)) (sqrt.f64 (*.f64 x 6)) (*.f64 -9 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -9 x) x (*.f64 x 6))))))

simplify141.0ms (2.9%)

Algorithm
egg-herbie
Rules
801×sqr-pow_binary64
567×fabs-mul_binary64
565×cube-prod_binary64
541×pow-sqr_binary64
540×associate-*l*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
09201
118201
232192
369174
4166174
5472174
61680174
72915174
83119174
93332174
103552174
113857174
124259174
134767174
145330174
156022174
166859174
177253174
187543174
197821174
207899174
217933174
Stop Event
node limit
Counts
75 → 57
Calls
Call 1
Inputs
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (pow.f64 x 2))
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
Outputs
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 6 x)
(*.f64 x 6)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (fma.f64 -9 x 6))

localize47.0ms (1%)

Local error

Found 8 expressions with local error:

NewErrorProgram
6.8b
(/.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))
0.2b
(*.f64 9 (*.f64 x x))
0.1b
(*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x))))
0.0b
(+.f64 2 (*.f64 3 x))
0.0b
(+.f64 2 (*.f64 3 x))
0.1b
(*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x))))
0.2b
(*.f64 9 (*.f64 x x))
6.8b
(/.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))
Compiler

Compiled 57 to 37 computations (35.1% saved)

series5.0ms (0.1%)

Counts
4 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
x
@0
(/.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))
1.0ms
x
@inf
(/.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))
1.0ms
x
@-inf
(/.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))
0.0ms
x
@inf
(*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x))))
0.0ms
x
@inf
(*.f64 9 (*.f64 x x))

rewrite64.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
698×log-prod_binary64
449×prod-diff_binary64
264×fma-def_binary64
236×expm1-udef_binary64
236×log1p-udef_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01355
129544
2398842
Stop Event
node limit
Counts
4 → 139
Calls
Call 1
Inputs
(/.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))
(*.f64 9 (*.f64 x x))
(*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x))))
(+.f64 2 (*.f64 3 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x))))) (cbrt.f64 (exp.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x))))))) (log.f64 (cbrt.f64 (exp.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))))) (log.f64 (sqrt.f64 (exp.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (/.f64 (*.f64 x (fma.f64 (*.f64 x x) -9 4)) (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 (*.f64 x (fma.f64 (*.f64 x x) -9 4)) (/.f64 1 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 x) (/.f64 1 (/.f64 1 (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 x) (*.f64 (fma.f64 (*.f64 x x) -9 4) (/.f64 1 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (*.f64 x x) -9 4) (*.f64 (*.f64 3 x) (/.f64 1 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))) (/.f64 1 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))) (pow.f64 (cbrt.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))) 2) (cbrt.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) 2) (*.f64 (cbrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) (/.f64 1 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))) (sqrt.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) (*.f64 (sqrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) (/.f64 1 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))) (/.f64 1 (neg.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (fma.f64 3 x 2)) (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 (*.f64 x x) -9 4) 1) (/.f64 (*.f64 3 x) (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 3 x) (fma.f64 3 x 2)) (fma.f64 (*.f64 x x) -9 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) 2) 1) (/.f64 (cbrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) 1) (/.f64 (sqrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 3 (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2)) (/.f64 (*.f64 x (fma.f64 (*.f64 x x) -9 4)) (cbrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 3 x) (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2)) (/.f64 (fma.f64 (*.f64 x x) -9 4) (cbrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 (*.f64 x x) -9 4) (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2)) (/.f64 (*.f64 3 x) (cbrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2)) (/.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))) (cbrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) 2) (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2)) (cbrt.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2)) (/.f64 (sqrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) (cbrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 3 (sqrt.f64 (fma.f64 3 x 2))) (/.f64 (*.f64 x (fma.f64 (*.f64 x x) -9 4)) (sqrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 3 x) (sqrt.f64 (fma.f64 3 x 2))) (/.f64 (fma.f64 (*.f64 x x) -9 4) (sqrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 (*.f64 x x) -9 4) (sqrt.f64 (fma.f64 3 x 2))) (/.f64 (*.f64 3 x) (sqrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (fma.f64 3 x 2))) (/.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))) (sqrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) 2) (sqrt.f64 (fma.f64 3 x 2))) (/.f64 (cbrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) (sqrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))) (fma.f64 27 (pow.f64 x 3) 8)) (fma.f64 (*.f64 3 x) (fma.f64 3 x -2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))) (fma.f64 (*.f64 x x) -9 4)) (+.f64 2 (*.f64 -3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 1 (+.f64 2 (*.f64 -3 x))) (*.f64 3 x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (/.f64 1 (+.f64 2 (*.f64 -3 x))) (*.f64 3 x)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))) (neg.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))) 3) (pow.f64 (fma.f64 3 x 2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 x 9)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 9) (*.f64 x x))) (cbrt.f64 (pow.f64 (exp.f64 9) (*.f64 x x))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 9) (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 9) (*.f64 x x)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 9) (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (*.f64 x 9)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 x 9)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (*.f64 3 x)) 2) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 729 (pow.f64 (*.f64 x x) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 81 (pow.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 9) (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (*.f64 x 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 729 (pow.f64 (*.f64 x x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 x 9))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 2 (log.f64 x) (log.f64 9)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 2 (log.f64 x) (log.f64 9)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 x 9))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 4 (*.f64 3 x)) (*.f64 (*.f64 (*.f64 x x) -9) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3 x) 4) (*.f64 (*.f64 3 x) (*.f64 (*.f64 x x) -9)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 x) 3) (fma.f64 (*.f64 x x) -9 4))) (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 x) 3) (fma.f64 (*.f64 x x) -9 4))))) (log.f64 (cbrt.f64 (pow.f64 (pow.f64 (exp.f64 x) 3) (fma.f64 (*.f64 x x) -9 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 x) 3) (fma.f64 (*.f64 x x) -9 4)))) (log.f64 (sqrt.f64 (pow.f64 (pow.f64 (exp.f64 x) 3) (fma.f64 (*.f64 x x) -9 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 64 (*.f64 729 (pow.f64 (*.f64 x x) 3))) (*.f64 3 x)) (+.f64 16 (fma.f64 36 (*.f64 x x) (*.f64 81 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 16 (*.f64 81 (pow.f64 x 4))) (*.f64 3 x)) (fma.f64 x (*.f64 x 9) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (-.f64 64 (*.f64 729 (pow.f64 (*.f64 x x) 3)))) (+.f64 16 (fma.f64 36 (*.f64 x x) (*.f64 81 (pow.f64 x 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (-.f64 16 (*.f64 81 (pow.f64 x 4)))) (fma.f64 x (*.f64 x 9) 4))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 x) 3) (fma.f64 (*.f64 x x) -9 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 27 (pow.f64 x 3)) (pow.f64 (fma.f64 (*.f64 x x) -9 4) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 (*.f64 x x) -9 4) 3) (*.f64 27 (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (*.f64 x (fma.f64 (*.f64 x x) -9 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) 4 (*.f64 (*.f64 3 x) (*.f64 (*.f64 x x) -9)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 4 (*.f64 3 x) (*.f64 (*.f64 (*.f64 x x) -9) (*.f64 3 x)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 3 x 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 4 (+.f64 2 (*.f64 -3 x))) (/.f64 (*.f64 x (*.f64 x 9)) (+.f64 2 (*.f64 -3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (*.f64 x x) -9 4) (/.f64 1 (+.f64 2 (*.f64 -3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 3 x 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 3 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 3 x 2)) (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2) (cbrt.f64 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 3 x 2)) (sqrt.f64 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 27 (pow.f64 x 3) 8) (/.f64 1 (fma.f64 (*.f64 3 x) (fma.f64 3 x -2) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (*.f64 x x) -9 4) (+.f64 2 (*.f64 -3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 3 x) (fma.f64 3 x -2) 4) (fma.f64 27 (pow.f64 x 3) 8)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 2 (*.f64 -3 x)) (fma.f64 (*.f64 x x) -9 4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 27 (pow.f64 x 3) 8) (fma.f64 (*.f64 3 x) (fma.f64 3 x -2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 27 (pow.f64 x 3) 8) (fma.f64 x (*.f64 x 9) (-.f64 4 (*.f64 6 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (*.f64 x x) -9 4)) (neg.f64 (+.f64 2 (*.f64 -3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 27 (pow.f64 x 3) 8)) (neg.f64 (fma.f64 (*.f64 3 x) (fma.f64 3 x -2) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 x (*.f64 x 9) -4) (fma.f64 3 x -2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 3 x 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 3 x 2) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 3 x 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (*.f64 3 x) (fma.f64 3 x -2) 4) (fma.f64 27 (pow.f64 x 3) 8)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 2 (*.f64 -3 x)) (fma.f64 (*.f64 x x) -9 4)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 3 x 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 3 x 2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 3 x 2)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 3 x 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x 3 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) 1 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 3 x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) 3) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 3 x)) (pow.f64 (cbrt.f64 (*.f64 3 x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 3 x)) 2) (cbrt.f64 (*.f64 3 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) 3) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 3 x)) (sqrt.f64 (*.f64 3 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x 9)) (sqrt.f64 x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (cbrt.f64 (*.f64 81 (pow.f64 x 4)))) (sqrt.f64 (pow.f64 (cbrt.f64 (*.f64 3 x)) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 (sqrt.f64 x)) (sqrt.f64 x) 2)))))

simplify98.0ms (2%)

Algorithm
egg-herbie
Rules
852×fma-def_binary64
568×distribute-lft-in_binary64
568×distribute-rgt-in_binary64
547×associate-*l*_binary64
536×unswap-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
021372
145372
284363
3198345
4512345
51880345
63215345
73493345
84065345
95140345
107123345
117636345
Stop Event
node limit
Counts
187 → 156
Calls
Call 1
Inputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 9 (pow.f64 x 2))
(*.f64 9 (pow.f64 x 2))
(*.f64 9 (pow.f64 x 2))
(*.f64 9 (pow.f64 x 2))
(*.f64 9 (pow.f64 x 2))
(*.f64 9 (pow.f64 x 2))
(*.f64 9 (pow.f64 x 2))
(*.f64 9 (pow.f64 x 2))
(*.f64 9 (pow.f64 x 2))
(*.f64 9 (pow.f64 x 2))
(*.f64 9 (pow.f64 x 2))
(*.f64 9 (pow.f64 x 2))
(*.f64 12 x)
(+.f64 (*.f64 -27 (pow.f64 x 3)) (*.f64 12 x))
(+.f64 (*.f64 -27 (pow.f64 x 3)) (*.f64 12 x))
(+.f64 (*.f64 -27 (pow.f64 x 3)) (*.f64 12 x))
(*.f64 -27 (pow.f64 x 3))
(+.f64 (*.f64 12 x) (*.f64 -27 (pow.f64 x 3)))
(+.f64 (*.f64 12 x) (*.f64 -27 (pow.f64 x 3)))
(+.f64 (*.f64 12 x) (*.f64 -27 (pow.f64 x 3)))
(*.f64 -27 (pow.f64 x 3))
(+.f64 (*.f64 12 x) (*.f64 -27 (pow.f64 x 3)))
(+.f64 (*.f64 12 x) (*.f64 -27 (pow.f64 x 3)))
(+.f64 (*.f64 12 x) (*.f64 -27 (pow.f64 x 3)))
2
(+.f64 (*.f64 3 x) 2)
(+.f64 (*.f64 3 x) 2)
(+.f64 (*.f64 3 x) 2)
(*.f64 3 x)
(+.f64 (*.f64 3 x) 2)
(+.f64 (*.f64 3 x) 2)
(+.f64 (*.f64 3 x) 2)
(*.f64 3 x)
(+.f64 (*.f64 3 x) 2)
(+.f64 (*.f64 3 x) 2)
(+.f64 (*.f64 3 x) 2)
Outputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(*.f64 9 (pow.f64 x 2))
(*.f64 (*.f64 x x) 9)
(*.f64 x (*.f64 x 9))
(*.f64 9 (pow.f64 x 2))
(*.f64 (*.f64 x x) 9)
(*.f64 x (*.f64 x 9))
(*.f64 9 (pow.f64 x 2))
(*.f64 (*.f64 x x) 9)
(*.f64 x (*.f64 x 9))
(*.f64 9 (pow.f64 x 2))
(*.f64 (*.f64 x x) 9)
(*.f64 x (*.f64 x 9))
(*.f64 9 (pow.f64 x 2))
(*.f64 (*.f64 x x) 9)
(*.f64 x (*.f64 x 9))
(*.f64 9 (pow.f64 x 2))
(*.f64 (*.f64 x x) 9)
(*.f64 x (*.f64 x 9))
(*.f64 9 (pow.f64 x 2))
(*.f64 (*.f64 x x) 9)
(*.f64 x (*.f64 x 9))
(*.f64 9 (pow.f64 x 2))
(*.f64 (*.f64 x x) 9)
(*.f64 x (*.f64 x 9))
(*.f64 9 (pow.f64 x 2))
(*.f64 (*.f64 x x) 9)
(*.f64 x (*.f64 x 9))
(*.f64 9 (pow.f64 x 2))
(*.f64 (*.f64 x x) 9)
(*.f64 x (*.f64 x 9))
(*.f64 9 (pow.f64 x 2))
(*.f64 (*.f64 x x) 9)
(*.f64 x (*.f64 x 9))
(*.f64 9 (pow.f64 x 2))
(*.f64 (*.f64 x x) 9)
(*.f64 x (*.f64 x 9))
(*.f64 12 x)
(*.f64 x 12)
(+.f64 (*.f64 -27 (pow.f64 x 3)) (*.f64 12 x))
(fma.f64 12 x (*.f64 -27 (pow.f64 x 3)))
(fma.f64 x 12 (*.f64 -27 (pow.f64 x 3)))
(*.f64 x (fma.f64 (*.f64 x x) -27 12))
(fma.f64 -27 (pow.f64 x 3) (*.f64 x 12))
(*.f64 x (fma.f64 x (*.f64 x -27) 12))
(+.f64 (*.f64 -27 (pow.f64 x 3)) (*.f64 12 x))
(fma.f64 12 x (*.f64 -27 (pow.f64 x 3)))
(fma.f64 x 12 (*.f64 -27 (pow.f64 x 3)))
(*.f64 x (fma.f64 (*.f64 x x) -27 12))
(fma.f64 -27 (pow.f64 x 3) (*.f64 x 12))
(*.f64 x (fma.f64 x (*.f64 x -27) 12))
(+.f64 (*.f64 -27 (pow.f64 x 3)) (*.f64 12 x))
(fma.f64 12 x (*.f64 -27 (pow.f64 x 3)))
(fma.f64 x 12 (*.f64 -27 (pow.f64 x 3)))
(*.f64 x (fma.f64 (*.f64 x x) -27 12))
(fma.f64 -27 (pow.f64 x 3) (*.f64 x 12))
(*.f64 x (fma.f64 x (*.f64 x -27) 12))
(*.f64 -27 (pow.f64 x 3))
(+.f64 (*.f64 12 x) (*.f64 -27 (pow.f64 x 3)))
(fma.f64 12 x (*.f64 -27 (pow.f64 x 3)))
(fma.f64 x 12 (*.f64 -27 (pow.f64 x 3)))
(*.f64 x (fma.f64 (*.f64 x x) -27 12))
(fma.f64 -27 (pow.f64 x 3) (*.f64 x 12))
(*.f64 x (fma.f64 x (*.f64 x -27) 12))
(+.f64 (*.f64 12 x) (*.f64 -27 (pow.f64 x 3)))
(fma.f64 12 x (*.f64 -27 (pow.f64 x 3)))
(fma.f64 x 12 (*.f64 -27 (pow.f64 x 3)))
(*.f64 x (fma.f64 (*.f64 x x) -27 12))
(fma.f64 -27 (pow.f64 x 3) (*.f64 x 12))
(*.f64 x (fma.f64 x (*.f64 x -27) 12))
(+.f64 (*.f64 12 x) (*.f64 -27 (pow.f64 x 3)))
(fma.f64 12 x (*.f64 -27 (pow.f64 x 3)))
(fma.f64 x 12 (*.f64 -27 (pow.f64 x 3)))
(*.f64 x (fma.f64 (*.f64 x x) -27 12))
(fma.f64 -27 (pow.f64 x 3) (*.f64 x 12))
(*.f64 x (fma.f64 x (*.f64 x -27) 12))
(*.f64 -27 (pow.f64 x 3))
(+.f64 (*.f64 12 x) (*.f64 -27 (pow.f64 x 3)))
(fma.f64 12 x (*.f64 -27 (pow.f64 x 3)))
(fma.f64 x 12 (*.f64 -27 (pow.f64 x 3)))
(*.f64 x (fma.f64 (*.f64 x x) -27 12))
(fma.f64 -27 (pow.f64 x 3) (*.f64 x 12))
(*.f64 x (fma.f64 x (*.f64 x -27) 12))
(+.f64 (*.f64 12 x) (*.f64 -27 (pow.f64 x 3)))
(fma.f64 12 x (*.f64 -27 (pow.f64 x 3)))
(fma.f64 x 12 (*.f64 -27 (pow.f64 x 3)))
(*.f64 x (fma.f64 (*.f64 x x) -27 12))
(fma.f64 -27 (pow.f64 x 3) (*.f64 x 12))
(*.f64 x (fma.f64 x (*.f64 x -27) 12))
(+.f64 (*.f64 12 x) (*.f64 -27 (pow.f64 x 3)))
(fma.f64 12 x (*.f64 -27 (pow.f64 x 3)))
(fma.f64 x 12 (*.f64 -27 (pow.f64 x 3)))
(*.f64 x (fma.f64 (*.f64 x x) -27 12))
(fma.f64 -27 (pow.f64 x 3) (*.f64 x 12))
(*.f64 x (fma.f64 x (*.f64 x -27) 12))
2
(+.f64 (*.f64 3 x) 2)
(fma.f64 3 x 2)
(fma.f64 x 3 2)
(+.f64 (*.f64 3 x) 2)
(fma.f64 3 x 2)
(fma.f64 x 3 2)
(+.f64 (*.f64 3 x) 2)
(fma.f64 3 x 2)
(fma.f64 x 3 2)
(*.f64 3 x)
(*.f64 x 3)
(+.f64 (*.f64 3 x) 2)
(fma.f64 3 x 2)
(fma.f64 x 3 2)
(+.f64 (*.f64 3 x) 2)
(fma.f64 3 x 2)
(fma.f64 x 3 2)
(+.f64 (*.f64 3 x) 2)
(fma.f64 3 x 2)
(fma.f64 x 3 2)
(*.f64 3 x)
(*.f64 x 3)
(+.f64 (*.f64 3 x) 2)
(fma.f64 3 x 2)
(fma.f64 x 3 2)
(+.f64 (*.f64 3 x) 2)
(fma.f64 3 x 2)
(fma.f64 x 3 2)
(+.f64 (*.f64 3 x) 2)
(fma.f64 3 x 2)
(fma.f64 x 3 2)

localize48.0ms (1%)

Local error

Found 8 expressions with local error:

NewErrorProgram
0.1b
(*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))
0.1b
(*.f64 x (+.f64 2 (*.f64 x -3)))
0.1b
(sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))))
0.0b
(+.f64 2 (*.f64 x -3))
0.1b
(sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))))
0.1b
(*.f64 x (+.f64 2 (*.f64 x -3)))
0.1b
(*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))
0.2b
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 2)
Compiler

Compiled 51 to 40 computations (21.6% saved)

series5.0ms (0.1%)

Counts
2 → 16
Calls

6 calls:

TimeVariablePointExpression
2.0ms
x
@0
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 2)
1.0ms
x
@inf
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 2)
1.0ms
x
@-inf
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 2)
1.0ms
x
@0
(sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))))
0.0ms
x
@-inf
(sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))))

rewrite51.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
498×log-prod_binary64
364×exp-prod_binary64
316×pow-prod-down_binary64
275×prod-diff_binary64
258×pow2_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01128
124424
2279024
Stop Event
node limit
Counts
2 → 94
Calls
Call 1
Inputs
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3))))) 2)
(sqrt.f64 (*.f64 3 (*.f64 x (+.f64 2 (*.f64 x -3)))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x 2) 3) (*.f64 (*.f64 x (*.f64 x -3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (*.f64 3 x)) (*.f64 (*.f64 x -3) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x -3) (*.f64 3 x)) (*.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 3 (*.f64 x 2)) (*.f64 3 (*.f64 x (*.f64 x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3 x) 2) (*.f64 (*.f64 3 x) (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 3 x) (*.f64 x -3)) (*.f64 (*.f64 3 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (pow.f64 (exp.f64 x) 2) (fma.f64 x -3 2))) (*.f64 x (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 x (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 (fma.f64 x -3 2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x -3 2) (*.f64 3 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (fma.f64 x -3 2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 2) (*.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) (pow.f64 (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 2) (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) (*.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 3) (pow.f64 (*.f64 (*.f64 x (fma.f64 x -3 2)) (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1/4) (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 3/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 x) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 3/4) (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (fma.f64 x -3 2)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -3 2))) 2)) (cbrt.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (sqrt.f64 (*.f64 x (fma.f64 x -3 2)))) (sqrt.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 5/6) (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 3) 1/2) (sqrt.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 x) 1) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 x) (pow.f64 (cbrt.f64 (fma.f64 x -3 2)) 2)) (cbrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 3 x) (sqrt.f64 (fma.f64 x -3 2))) (sqrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (fma.f64 -27 (pow.f64 x 3) 8)) (fma.f64 (*.f64 x -3) (fma.f64 x -3 -2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 3) (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 1/2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 3 (*.f64 x 2) (*.f64 3 (*.f64 x (*.f64 x -3))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 2 (*.f64 3 x) (*.f64 (*.f64 x -3) (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x -3) (*.f64 3 x) (*.f64 2 (*.f64 3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x 2) 3 (*.f64 (*.f64 x (*.f64 x -3)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) 2 (*.f64 (*.f64 3 x) (*.f64 x -3)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) (*.f64 x -3) (*.f64 (*.f64 3 x) 2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1/6) (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (fma.f64 x -3 2))) (sqrt.f64 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 3) (sqrt.f64 (*.f64 x (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1/4) (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 3 x)) (sqrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 2) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1/6) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1/2) (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))) 2)) (cbrt.f64 (log.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))) (sqrt.f64 (log.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3/2 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)) 1/6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/4 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3))) 1/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (*.f64 x (*.f64 (fma.f64 x -3 2) 3)))))))))

simplify37.0ms (0.7%)

Algorithm
egg-herbie
Rules
939×associate-/l*_binary64
475×fma-neg_binary64
415×fma-def_binary64
380×associate-*l/_binary64
283×associate-/l/_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
080498
1244340
2904314
33226302
Stop Event
node limit
Counts
110 → 119
Calls
Call 1
Inputs
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2)))
(+.f64 (*.f64 2 (*.f64 (pow.f64 (sqrt.f64 3) 2) x)) (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2))))
(+.f64 (*.f64 2 (*.f64 (pow.f64 (sqrt.f64 3) 2) x)) (+.f64 (*.f64 -1 (/.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2))) (+.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2))) (/.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2)))))
(+.f64 (*.f64 2 (*.f64 (pow.f64 (sqrt.f64 3) 2) x)) (+.f64 (*.f64 -1 (/.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2))) (+.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2))) (+.f64 (*.f64 -1 (/.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 4) x))) (+.f64 (/.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2)) (/.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 4) x)))))))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2)))
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2))) (*.f64 -2 (*.f64 (pow.f64 (sqrt.f64 -3) 2) x)))
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2))) (+.f64 (/.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 (sqrt.f64 3) 2)) (+.f64 (*.f64 -2 (*.f64 (pow.f64 (sqrt.f64 -3) 2) x)) (*.f64 -1 (/.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 (sqrt.f64 3) 2))))))
(+.f64 (*.f64 -1 (/.f64 (+.f64 (/.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 (sqrt.f64 3) 4)) (*.f64 -1 (/.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 (sqrt.f64 3) 4)))) x)) (+.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2))) (+.f64 (/.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 (sqrt.f64 3) 2)) (+.f64 (*.f64 -2 (*.f64 (pow.f64 (sqrt.f64 -3) 2) x)) (*.f64 -1 (/.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 (sqrt.f64 3) 2)))))))
(*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))
(+.f64 (/.f64 (sqrt.f64 3) (sqrt.f64 -3)) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)))
(+.f64 (/.f64 (sqrt.f64 3) (sqrt.f64 -3)) (+.f64 (*.f64 -1/2 (/.f64 (sqrt.f64 3) (*.f64 (pow.f64 (sqrt.f64 -3) 3) x))) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))))
(+.f64 (/.f64 (sqrt.f64 3) (sqrt.f64 -3)) (+.f64 (*.f64 1/2 (/.f64 (sqrt.f64 3) (*.f64 (pow.f64 (sqrt.f64 -3) 5) (pow.f64 x 2)))) (+.f64 (*.f64 -1/2 (/.f64 (sqrt.f64 3) (*.f64 (pow.f64 (sqrt.f64 -3) 3) x))) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)))))
(*.f64 -1 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)))
(+.f64 (/.f64 (sqrt.f64 -3) (sqrt.f64 3)) (*.f64 -1 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))))
(+.f64 (/.f64 (sqrt.f64 -3) (sqrt.f64 3)) (+.f64 (*.f64 -1 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))) (*.f64 1/2 (/.f64 (sqrt.f64 -3) (*.f64 (pow.f64 (sqrt.f64 3) 3) x)))))
(+.f64 (*.f64 1/2 (/.f64 (sqrt.f64 -3) (*.f64 (pow.f64 (sqrt.f64 3) 5) (pow.f64 x 2)))) (+.f64 (/.f64 (sqrt.f64 -3) (sqrt.f64 3)) (+.f64 (*.f64 -1 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))) (*.f64 1/2 (/.f64 (sqrt.f64 -3) (*.f64 (pow.f64 (sqrt.f64 3) 3) x))))))
Outputs
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2)))
(*.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2)) (*.f64 x x))
(*.f64 (*.f64 x x) -9)
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 2 (*.f64 (pow.f64 (sqrt.f64 3) 2) x)) (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2))))
(fma.f64 2 (*.f64 (pow.f64 (sqrt.f64 3) 2) x) (*.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2)) (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(+.f64 (*.f64 2 (*.f64 (pow.f64 (sqrt.f64 3) 2) x)) (+.f64 (*.f64 -1 (/.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2))) (+.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2))) (/.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2)))))
(fma.f64 2 (*.f64 (pow.f64 (sqrt.f64 3) 2) x) (*.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2)) (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(+.f64 (*.f64 2 (*.f64 (pow.f64 (sqrt.f64 3) 2) x)) (+.f64 (*.f64 -1 (/.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2))) (+.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2))) (+.f64 (*.f64 -1 (/.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 4) x))) (+.f64 (/.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2)) (/.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 4) x)))))))
(fma.f64 2 (*.f64 (pow.f64 (sqrt.f64 3) 2) x) (*.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2)) (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2)))
(*.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2)) (*.f64 x x))
(*.f64 (*.f64 x x) -9)
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2))) (*.f64 -2 (*.f64 (pow.f64 (sqrt.f64 -3) 2) x)))
(fma.f64 2 (*.f64 (pow.f64 (sqrt.f64 3) 2) x) (*.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2)) (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(+.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2))) (+.f64 (/.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 (sqrt.f64 3) 2)) (+.f64 (*.f64 -2 (*.f64 (pow.f64 (sqrt.f64 -3) 2) x)) (*.f64 -1 (/.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 (sqrt.f64 3) 2))))))
(fma.f64 2 (*.f64 (pow.f64 (sqrt.f64 3) 2) x) (*.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2)) (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(+.f64 (*.f64 -1 (/.f64 (+.f64 (/.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 (sqrt.f64 3) 4)) (*.f64 -1 (/.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 (sqrt.f64 3) 4)))) x)) (+.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 x 2))) (+.f64 (/.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 (sqrt.f64 3) 2)) (+.f64 (*.f64 -2 (*.f64 (pow.f64 (sqrt.f64 -3) 2) x)) (*.f64 -1 (/.f64 (pow.f64 (sqrt.f64 -3) 2) (pow.f64 (sqrt.f64 3) 2)))))))
(fma.f64 2 (*.f64 (pow.f64 (sqrt.f64 3) 2) x) (*.f64 (*.f64 (pow.f64 (sqrt.f64 3) 2) (pow.f64 (sqrt.f64 -3) 2)) (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 x 6))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))
(*.f64 (*.f64 (sqrt.f64 3) x) (sqrt.f64 -3))
(+.f64 (/.f64 (sqrt.f64 3) (sqrt.f64 -3)) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)))
(+.f64 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)) (/.f64 (sqrt.f64 3) (sqrt.f64 -3)))
(fma.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x) (/.f64 (sqrt.f64 3) (sqrt.f64 -3)))
(+.f64 (/.f64 (sqrt.f64 3) (sqrt.f64 -3)) (+.f64 (*.f64 -1/2 (/.f64 (sqrt.f64 3) (*.f64 (pow.f64 (sqrt.f64 -3) 3) x))) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))))
(+.f64 (/.f64 (sqrt.f64 3) (sqrt.f64 -3)) (fma.f64 -1/2 (/.f64 (sqrt.f64 3) (*.f64 x (pow.f64 (sqrt.f64 -3) 3))) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))))
(+.f64 (/.f64 (sqrt.f64 3) (sqrt.f64 -3)) (fma.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x) (*.f64 -1/2 (/.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) (*.f64 -3 x))))))
(fma.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x) (fma.f64 (/.f64 1/6 (sqrt.f64 -3)) (/.f64 (sqrt.f64 3) x) (/.f64 (sqrt.f64 3) (sqrt.f64 -3))))
(fma.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x) (*.f64 (+.f64 (/.f64 -1/2 (*.f64 -3 x)) 1) (/.f64 (sqrt.f64 3) (sqrt.f64 -3))))
(+.f64 (/.f64 (sqrt.f64 3) (sqrt.f64 -3)) (+.f64 (*.f64 1/2 (/.f64 (sqrt.f64 3) (*.f64 (pow.f64 (sqrt.f64 -3) 5) (pow.f64 x 2)))) (+.f64 (*.f64 -1/2 (/.f64 (sqrt.f64 3) (*.f64 (pow.f64 (sqrt.f64 -3) 3) x))) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)))))
(+.f64 (/.f64 (sqrt.f64 3) (sqrt.f64 -3)) (fma.f64 1/2 (/.f64 (sqrt.f64 3) (*.f64 (*.f64 x x) (pow.f64 (sqrt.f64 -3) 5))) (fma.f64 -1/2 (/.f64 (sqrt.f64 3) (*.f64 x (pow.f64 (sqrt.f64 -3) 3))) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)))))
(+.f64 (/.f64 (sqrt.f64 3) (sqrt.f64 -3)) (fma.f64 1/2 (/.f64 (sqrt.f64 3) (*.f64 (*.f64 x x) (pow.f64 (sqrt.f64 -3) 5))) (fma.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x) (*.f64 -1/2 (/.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) (*.f64 -3 x)))))))
(fma.f64 1/2 (/.f64 (sqrt.f64 3) (*.f64 (*.f64 x x) (pow.f64 (sqrt.f64 -3) 5))) (fma.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x) (fma.f64 (/.f64 1/6 (sqrt.f64 -3)) (/.f64 (sqrt.f64 3) x) (/.f64 (sqrt.f64 3) (sqrt.f64 -3)))))
(+.f64 (*.f64 (/.f64 (sqrt.f64 3) x) (+.f64 (/.f64 1/6 (sqrt.f64 -3)) (/.f64 1/2 (*.f64 x (pow.f64 (sqrt.f64 -3) 5))))) (fma.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x) (/.f64 (sqrt.f64 3) (sqrt.f64 -3))))
(*.f64 -1 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)))
(neg.f64 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)))
(neg.f64 (*.f64 (*.f64 (sqrt.f64 3) x) (sqrt.f64 -3)))
(*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) (neg.f64 x)))
(+.f64 (/.f64 (sqrt.f64 -3) (sqrt.f64 3)) (*.f64 -1 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))))
(+.f64 (neg.f64 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))) (/.f64 (sqrt.f64 -3) (sqrt.f64 3)))
(-.f64 (/.f64 (sqrt.f64 -3) (sqrt.f64 3)) (*.f64 (*.f64 (sqrt.f64 3) x) (sqrt.f64 -3)))
(-.f64 (/.f64 (sqrt.f64 -3) (sqrt.f64 3)) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)))
(+.f64 (/.f64 (sqrt.f64 -3) (sqrt.f64 3)) (+.f64 (*.f64 -1 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))) (*.f64 1/2 (/.f64 (sqrt.f64 -3) (*.f64 (pow.f64 (sqrt.f64 3) 3) x)))))
(+.f64 (/.f64 (sqrt.f64 -3) (sqrt.f64 3)) (fma.f64 -1 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)) (/.f64 (*.f64 1/2 (sqrt.f64 -3)) (*.f64 x (pow.f64 (sqrt.f64 3) 3)))))
(+.f64 (/.f64 (sqrt.f64 -3) (sqrt.f64 3)) (-.f64 (*.f64 1/2 (/.f64 (sqrt.f64 -3) (*.f64 (sqrt.f64 3) (*.f64 3 x)))) (*.f64 (*.f64 (sqrt.f64 3) x) (sqrt.f64 -3))))
(-.f64 (fma.f64 (/.f64 1/6 (sqrt.f64 3)) (/.f64 (sqrt.f64 -3) x) (/.f64 (sqrt.f64 -3) (sqrt.f64 3))) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)))
(-.f64 (*.f64 (+.f64 (/.f64 1/2 (*.f64 3 x)) 1) (/.f64 (sqrt.f64 -3) (sqrt.f64 3))) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)))
(+.f64 (*.f64 1/2 (/.f64 (sqrt.f64 -3) (*.f64 (pow.f64 (sqrt.f64 3) 5) (pow.f64 x 2)))) (+.f64 (/.f64 (sqrt.f64 -3) (sqrt.f64 3)) (+.f64 (*.f64 -1 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))) (*.f64 1/2 (/.f64 (sqrt.f64 -3) (*.f64 (pow.f64 (sqrt.f64 3) 3) x))))))
(fma.f64 1/2 (/.f64 (sqrt.f64 -3) (*.f64 (*.f64 x x) (pow.f64 (sqrt.f64 3) 5))) (+.f64 (/.f64 (sqrt.f64 -3) (sqrt.f64 3)) (fma.f64 -1 (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x)) (/.f64 (*.f64 1/2 (sqrt.f64 -3)) (*.f64 x (pow.f64 (sqrt.f64 3) 3))))))
(+.f64 (-.f64 (*.f64 1/2 (/.f64 (sqrt.f64 -3) (*.f64 (sqrt.f64 3) (*.f64 3 x)))) (*.f64 (*.f64 (sqrt.f64 3) x) (sqrt.f64 -3))) (fma.f64 1/2 (/.f64 (sqrt.f64 -3) (*.f64 (*.f64 x x) (pow.f64 (sqrt.f64 3) 5))) (/.f64 (sqrt.f64 -3) (sqrt.f64 3))))
(fma.f64 1/2 (/.f64 (sqrt.f64 -3) (*.f64 (*.f64 x x) (pow.f64 (sqrt.f64 3) 5))) (-.f64 (fma.f64 (/.f64 1/6 (sqrt.f64 3)) (/.f64 (sqrt.f64 -3) x) (/.f64 (sqrt.f64 -3) (sqrt.f64 3))) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))))
(+.f64 (*.f64 (/.f64 (sqrt.f64 -3) x) (+.f64 (/.f64 1/6 (sqrt.f64 3)) (/.f64 1/2 (*.f64 x (pow.f64 (sqrt.f64 3) 5))))) (-.f64 (/.f64 (sqrt.f64 -3) (sqrt.f64 3)) (*.f64 (sqrt.f64 3) (*.f64 (sqrt.f64 -3) x))))

eval157.0ms (3.2%)

Compiler

Compiled 7697 to 5949 computations (22.7% saved)

prune93.0ms (1.9%)

Pruning

17 alts after pruning (12 fresh and 5 done)

PrunedKeptTotal
New4418449
Fresh549
Picked101
Done156
Total44817465
Error
0b
Counts
465 → 17
Alt Table
Click to see full alt table
StatusErrorProgram
1.0b
(*.f64 (*.f64 x (cbrt.f64 -27)) (fma.f64 x 3 -2))
21.5b
(*.f64 x 6)
41.4b
(*.f64 (*.f64 3 (*.f64 -3 x)) x)
11.0b
(*.f64 (*.f64 (*.f64 3 x) (sqrt.f64 (fma.f64 x -3 2))) (sqrt.f64 (fma.f64 x -3 2)))
0.3b
(*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))
41.3b
(*.f64 -9 (*.f64 x x))
0.1b
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
0.2b
(+.f64 (*.f64 -9 (*.f64 x x)) (*.f64 x 6))
42.7b
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x 2))) 2)
11.7b
(*.f64 (/.f64 (fma.f64 (*.f64 x x) -9 4) (sqrt.f64 (fma.f64 3 x 2))) (/.f64 (*.f64 3 x) (sqrt.f64 (fma.f64 3 x 2))))
10.9b
(*.f64 (pow.f64 (sqrt.f64 (*.f64 3 (+.f64 2 (*.f64 x -3)))) 2) x)
0.2b
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
49.3b
(/.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (*.f64 3 x))
41.3b
(*.f64 x (*.f64 x -9))
0.3b
(*.f64 (/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x))) x)
0.4b
(pow.f64 (/.f64 (/.f64 1 (+.f64 2 (*.f64 -3 x))) (*.f64 3 x)) -1)
0.2b
(*.f64 x (+.f64 (*.f64 -9 x) 6))
Compiler

Compiled 345 to 272 computations (21.2% saved)

localize9.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 x (+.f64 (*.f64 -9 x) 6))
0.0b
(+.f64 (*.f64 -9 x) 6)
0.0b
(+.f64 (*.f64 -9 x) 6)
0.1b
(*.f64 x (+.f64 (*.f64 -9 x) 6))
Compiler

Compiled 19 to 14 computations (26.3% saved)

series2.0ms (0%)

Counts
2 → 21
Calls

6 calls:

TimeVariablePointExpression
0.0ms
x
@0
(*.f64 x (+.f64 (*.f64 -9 x) 6))
0.0ms
x
@inf
(*.f64 x (+.f64 (*.f64 -9 x) 6))
0.0ms
x
@-inf
(*.f64 x (+.f64 (*.f64 -9 x) 6))
0.0ms
x
@-inf
(+.f64 (*.f64 -9 x) 6)
0.0ms
x
@0
(+.f64 (*.f64 -9 x) 6)

rewrite54.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
804×pow1_binary64
757×add-log-exp_binary64
757×log1p-expm1-u_binary64
757×expm1-log1p-u_binary64
744×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
115913
2204213
Stop Event
node limit
Counts
2 → 56
Calls
Call 1
Inputs
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(+.f64 (*.f64 -9 x) 6)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 x -9)) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x 6) (*.f64 x (*.f64 x -9)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 x (*.f64 x -9)) 1) (*.f64 (*.f64 x 6) 1))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (fma.f64 x -9 6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x (*.f64 x -9)) 3) (pow.f64 (*.f64 x 6) 3)) (+.f64 (*.f64 (*.f64 x (*.f64 x -9)) (*.f64 x (*.f64 x -9))) (-.f64 (*.f64 (*.f64 x 6) (*.f64 x 6)) (*.f64 (*.f64 x (*.f64 x -9)) (*.f64 x 6)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x (*.f64 x -9)) (*.f64 x (*.f64 x -9))) (*.f64 (*.f64 x 6) (*.f64 x 6))) (-.f64 (*.f64 x (*.f64 x -9)) (*.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 216 (*.f64 -729 (pow.f64 x 3))) x) (+.f64 (pow.f64 (*.f64 x -9) 2) (-.f64 36 (*.f64 x -54))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (pow.f64 (*.f64 x -9) 2) -36) x) (fma.f64 x -9 -6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 216 (*.f64 -729 (pow.f64 x 3)))) (+.f64 (pow.f64 (*.f64 x -9) 2) (-.f64 36 (*.f64 x -54))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 (pow.f64 (*.f64 x -9) 2) -36)) (fma.f64 x -9 -6))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (fma.f64 x -9 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (fma.f64 x -9 6)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (fma.f64 x -9 6))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (fma.f64 x -9 6))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (fma.f64 x -9 6)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (fma.f64 x -9 6)) x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (fma.f64 x -9 6)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (fma.f64 x -9 6) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 x -9 6) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (fma.f64 x -9 6))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (fma.f64 x -9 6))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (fma.f64 x -9 6))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 x -9) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x -9) x (*.f64 x 6))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (fma.f64 x -9 6)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (pow.f64 (*.f64 x -9) 2) (fma.f64 x -9 -6)) (/.f64 36 (fma.f64 x -9 -6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x -9 6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x -9 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x -9 6)) (pow.f64 (cbrt.f64 (fma.f64 x -9 6)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x -9 6)) 2) (cbrt.f64 (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x -9 6)) (sqrt.f64 (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 216 (*.f64 -729 (pow.f64 x 3))) (/.f64 1 (+.f64 (pow.f64 (*.f64 x -9) 2) (-.f64 36 (*.f64 x -54)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (pow.f64 (*.f64 x -9) 2) -36) (/.f64 1 (fma.f64 x -9 -6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (*.f64 x -9) 2) (-.f64 36 (*.f64 x -54))) (+.f64 216 (*.f64 -729 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 x -9 -6) (+.f64 (pow.f64 (*.f64 x -9) 2) -36)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 216 (*.f64 -729 (pow.f64 x 3))) (+.f64 (pow.f64 (*.f64 x -9) 2) (-.f64 36 (*.f64 x -54))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 216 (*.f64 -729 (pow.f64 x 3))) (+.f64 36 (-.f64 (pow.f64 (*.f64 x -9) 2) (*.f64 x -54))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x -9) 2) -36) (fma.f64 x -9 -6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 216 (*.f64 -729 (pow.f64 x 3)))) (neg.f64 (+.f64 (pow.f64 (*.f64 x -9) 2) (-.f64 36 (*.f64 x -54)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 (pow.f64 (*.f64 x -9) 2) -36)) (neg.f64 (fma.f64 x -9 -6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 36 (pow.f64 (*.f64 x -9) 2)) (-.f64 6 (*.f64 x -9)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x -9 6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x -9 6) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x -9 6)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x -9 6)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x -9 6) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x -9 6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x -9 6)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x -9 6)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -9 x 6)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 x -9) 6)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x -9)) 2) (cbrt.f64 (*.f64 x -9)) 6)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x -9)) (sqrt.f64 (*.f64 x -9)) 6)))))

simplify140.0ms (2.9%)

Algorithm
egg-herbie
Rules
803×sqr-pow_binary64
565×cube-prod_binary64
564×fabs-mul_binary64
542×associate-*l*_binary64
541×pow-sqr_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
011168
122156
236129
362129
4154129
5471129
61686129
72944129
83148129
93361129
103581129
113887129
124287129
134795129
145356129
156046129
166881129
177277129
187567129
197845129
207919129
217955129
Stop Event
node limit
Counts
77 → 65
Calls
Call 1
Inputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
6
(*.f64 -9 x)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(*.f64 -9 x)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
Outputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 6 x (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
6
(*.f64 -9 x)
(*.f64 x -9)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 x -9))
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 x -9))
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 x -9))
(fma.f64 x -9 6)
(*.f64 -9 x)
(*.f64 x -9)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 x -9))
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 x -9))
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 x -9))
(fma.f64 x -9 6)

localize6.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(*.f64 -9 (*.f64 x x))
0.2b
(*.f64 -9 (*.f64 x x))
Compiler

Compiled 11 to 5 computations (54.5% saved)

rewrite0.0ms (0%)

Counts
0 → 0

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
0 → 0
Calls
Call 1
Inputs
Outputs

localize14.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))
0.0b
(+.f64 2 (*.f64 -3 x))
0.0b
(+.f64 2 (*.f64 -3 x))
0.2b
(*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))
Compiler

Compiled 33 to 26 computations (21.2% saved)

series1.0ms (0%)

Counts
2 → 18
Calls

6 calls:

TimeVariablePointExpression
0.0ms
x
@0
(*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))
0.0ms
x
@inf
(*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))
0.0ms
x
@-inf
(*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))
0.0ms
x
@inf
(+.f64 2 (*.f64 -3 x))
0.0ms
x
@-inf
(+.f64 2 (*.f64 -3 x))

rewrite86.0ms (1.8%)

Algorithm
batch-egg-rewrite
Rules
911×pow1_binary64
855×add-log-exp_binary64
854×log1p-expm1-u_binary64
854×expm1-log1p-u_binary64
107×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01120
124416
2296516
Stop Event
node limit
Counts
2 → 82
Calls
Call 1
Inputs
(*.f64 (/.f64 (*.f64 3 x) 1) (+.f64 2 (*.f64 -3 x)))
(+.f64 2 (*.f64 -3 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 9 (*.f64 x x)) (*.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x 6) (*.f64 9 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 1 (*.f64 3 (*.f64 x (fma.f64 x -3 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 x) (/.f64 1 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 x -3 2) (/.f64 1/3 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2)))) 2) (/.f64 1 (cbrt.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2)))) (/.f64 1 (sqrt.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 8 (*.f64 -27 (pow.f64 x 3))) (*.f64 (/.f64 1/3 x) (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 (/.f64 1/3 x) (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (+.f64 8 (*.f64 -27 (pow.f64 x 3)))) (*.f64 (/.f64 1 x) (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (+.f64 8 (*.f64 -27 (pow.f64 x 3)))) (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (+.f64 8 (*.f64 -27 (pow.f64 x 3)))) (*.f64 -1 (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (+.f64 4 (*.f64 9 (*.f64 x x)))) (*.f64 (/.f64 1 x) (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (+.f64 4 (*.f64 9 (*.f64 x x)))) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 3 x) (+.f64 4 (*.f64 9 (*.f64 x x)))) (*.f64 -1 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 8 (*.f64 -27 (pow.f64 x 3))) 3) (*.f64 (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6)) (/.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) 3) (*.f64 (fma.f64 x -3 2) (/.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 8 (*.f64 -27 (pow.f64 x 3))) (*.f64 3 x)) (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 8 (*.f64 -27 (pow.f64 x 3))) (*.f64 3 x)) (*.f64 (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 8 (*.f64 -27 (pow.f64 x 3))) (*.f64 3 x)) (*.f64 (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 3 x)) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 3 x)) (*.f64 (fma.f64 x -3 2) -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 8 (*.f64 -27 (pow.f64 x 3))) 1) (*.f64 (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6)) (/.f64 1/3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) 1) (*.f64 (fma.f64 x -3 2) (/.f64 1/3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 x 6) 3) (pow.f64 (*.f64 9 (*.f64 x x)) 3)) (+.f64 (*.f64 (*.f64 x 6) (*.f64 x 6)) (-.f64 (*.f64 (*.f64 9 (*.f64 x x)) (*.f64 9 (*.f64 x x))) (*.f64 (*.f64 x 6) (*.f64 9 (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (*.f64 x 6) (*.f64 x 6)) (*.f64 (*.f64 9 (*.f64 x x)) (*.f64 9 (*.f64 x x)))) (-.f64 (*.f64 x 6) (*.f64 9 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (fma.f64 x -3 2)) (/.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (fma.f64 x -3 2) 3) (/.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 3) x) (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (*.f64 -27 (pow.f64 x 3)) (pow.f64 (fma.f64 x -3 2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (fma.f64 x -3 2) 3) (*.f64 -27 (pow.f64 x 3))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (*.f64 x (fma.f64 x -3 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 2 (*.f64 3 x) (*.f64 9 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 3 x) 2 (*.f64 9 (*.f64 x x)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 2 (*.f64 3 x))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 x -3 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 4 (fma.f64 x -3 2)) (/.f64 (*.f64 9 (*.f64 x x)) (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 x -3 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 x -3 2)) (pow.f64 (cbrt.f64 (fma.f64 x -3 2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 x -3 2)) 2) (cbrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 x -3 2)) (sqrt.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 8 (*.f64 -27 (pow.f64 x 3))) (/.f64 1 (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (/.f64 1 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6)) (+.f64 8 (*.f64 -27 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 x -3 2) (+.f64 4 (*.f64 9 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 8 (*.f64 -27 (pow.f64 x 3))) (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 8 (*.f64 -27 (pow.f64 x 3))) (+.f64 (*.f64 9 (*.f64 x x)) (-.f64 4 (*.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (fma.f64 x -3 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 8 (*.f64 -27 (pow.f64 x 3)))) (neg.f64 (-.f64 (+.f64 4 (*.f64 9 (*.f64 x x))) (*.f64 x 6))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 4 (*.f64 9 (*.f64 x x)))) (neg.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 8 (*.f64 -27 (pow.f64 x 3))) (+.f64 4 (*.f64 3 (*.f64 x (fma.f64 x -3 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 9 (*.f64 x x)) 4) (-.f64 (*.f64 3 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 x -3 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 x -3 2) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 x -3 2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 x -3 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 x -3 2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 x -3 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 x -3 2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 x -3 2)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x -3 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 3 x) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -3 x 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 9 (*.f64 x x))) (cbrt.f64 (*.f64 3 x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 3 x)) (sqrt.f64 (*.f64 3 x)) 2)))))

simplify109.0ms (2.2%)

Algorithm
egg-herbie
Rules
800×sqr-pow_binary64
605×associate-*l*_binary64
540×cube-prod_binary64
535×fabs-mul_binary64
434×unswap-sqr_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
012141
124141
239132
379114
4191114
5532114
61905114
73173114
83377114
93591114
103811114
114117114
124519114
135029114
145590114
156278114
167115114
177507114
187797114
Stop Event
node limit
Counts
100 → 91
Calls
Call 1
Inputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
2
(+.f64 (*.f64 -3 x) 2)
(+.f64 (*.f64 -3 x) 2)
(+.f64 (*.f64 -3 x) 2)
(*.f64 -3 x)
(*.f64 -3 x)
Outputs
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 -9 (*.f64 x x))
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 -9 (*.f64 x x)))
(fma.f64 -9 (*.f64 x x) (*.f64 6 x))
(*.f64 x (+.f64 (*.f64 x -9) 6))
(*.f64 x (fma.f64 x -9 6))
2
(+.f64 (*.f64 -3 x) 2)
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 (*.f64 -3 x) 2)
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(+.f64 (*.f64 -3 x) 2)
(fma.f64 -3 x 2)
(fma.f64 x -3 2)
(*.f64 -3 x)
(*.f64 x -3)
(*.f64 -3 x)
(*.f64 x -3)

localize81.0ms (1.7%)

Local error

Found 8 expressions with local error:

NewErrorProgram
0.1b
(*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x))))
0.1b
(/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))
0.1b
(*.f64 (/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x))) x)
0.0b
(+.f64 2 (*.f64 3 x))
0.1b
(*.f64 (/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x))) x)
0.1b
(/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))
0.1b
(*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x))))
0.2b
(*.f64 9 (*.f64 x x))
Compiler

Compiled 70 to 47 computations (32.9% saved)

series3.0ms (0.1%)

Counts
3 → 36
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@0
(*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x))))
1.0ms
x
@-inf
(*.f64 (/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x))) x)
0.0ms
x
@0
(/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))
0.0ms
x
@inf
(/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))
0.0ms
x
@-inf
(/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))

rewrite70.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
750×log-prod_binary64
449×prod-diff_binary64
266×fma-def_binary64
254×expm1-udef_binary64
254×log1p-udef_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01460
131536
2421934
Stop Event
node limit
Counts
3 → 99
Calls
Call 1
Inputs
(*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x))))
(/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x)))
(*.f64 (/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x))) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 12 (*.f64 (*.f64 (*.f64 x x) -9) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 12 (*.f64 3 (*.f64 (*.f64 x x) -9)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 (*.f64 x x) -9 4)) 3)) (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 (*.f64 x x) -9 4)) 3)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (fma.f64 (*.f64 x x) -9 4)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 (*.f64 x x) -9 4)) 3))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (fma.f64 (*.f64 x x) -9 4)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 64 (*.f64 (pow.f64 (*.f64 x x) 3) 729)) 3) (+.f64 16 (fma.f64 (pow.f64 x 4) 81 (*.f64 36 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 16 (*.f64 (pow.f64 x 4) 81)) 3) (fma.f64 9 (*.f64 x x) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (-.f64 64 (*.f64 (pow.f64 (*.f64 x x) 3) 729))) (+.f64 16 (fma.f64 (pow.f64 x 4) 81 (*.f64 36 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (-.f64 16 (*.f64 (pow.f64 x 4) 81))) (fma.f64 9 (*.f64 x x) 4))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 9 (pow.f64 (fma.f64 (*.f64 x x) -9 4) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (fma.f64 (*.f64 x x) -9 4)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 3 (+.f64 2 (*.f64 -3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (exp.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x))))) (cbrt.f64 (exp.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x))))))) (log.f64 (cbrt.f64 (exp.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))))) (log.f64 (sqrt.f64 (exp.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (+.f64 2 (*.f64 -3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (/.f64 1 (/.f64 1 (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 (fma.f64 (*.f64 x x) -9 4) (/.f64 1 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (*.f64 x x) -9 4) (*.f64 3 (/.f64 1 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)) (/.f64 1 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 3 (+.f64 2 (*.f64 -3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) 2) (*.f64 (cbrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) (/.f64 1 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))) (pow.f64 (cbrt.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))) 2) (cbrt.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) (*.f64 (sqrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) (/.f64 1 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))) (sqrt.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (fma.f64 (*.f64 x x) -9 4) -3) (/.f64 1 (neg.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (fma.f64 3 x 2)) (*.f64 3 (fma.f64 (*.f64 x x) -9 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 (*.f64 x x) -9 4) 1) (/.f64 3 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 3 (fma.f64 3 x 2)) (fma.f64 (*.f64 x x) -9 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) 2) 1) (/.f64 (cbrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) 1) (/.f64 (sqrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 3 (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2)) (/.f64 (fma.f64 (*.f64 x x) -9 4) (cbrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 (*.f64 x x) -9 4) (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2)) (/.f64 3 (cbrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2)) (/.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)) (cbrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) 2) (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2)) (cbrt.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2)) (/.f64 (sqrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) (cbrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 3 (sqrt.f64 (fma.f64 3 x 2))) (/.f64 (fma.f64 (*.f64 x x) -9 4) (sqrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (fma.f64 (*.f64 x x) -9 4) (sqrt.f64 (fma.f64 3 x 2))) (/.f64 3 (sqrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (fma.f64 3 x 2))) (/.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)) (sqrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) 2) (sqrt.f64 (fma.f64 3 x 2))) (/.f64 (cbrt.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4))) (sqrt.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)) (fma.f64 (pow.f64 x 3) 27 8)) (fma.f64 (*.f64 3 x) (fma.f64 3 x -2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)) (fma.f64 (*.f64 x x) -9 4)) (+.f64 2 (*.f64 -3 x)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/3 (/.f64 1 (+.f64 2 (*.f64 -3 x)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)) (neg.f64 (fma.f64 3 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)) 3) (pow.f64 (fma.f64 3 x 2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (*.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 3 (+.f64 2 (*.f64 -3 x))))) (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 3 (+.f64 2 (*.f64 -3 x))))))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (*.f64 3 (+.f64 2 (*.f64 -3 x)))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 x) (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x)))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 x (*.f64 1/3 (/.f64 1 (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (fma.f64 (*.f64 x x) -9 4)) (/.f64 (fma.f64 3 x 2) x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 x) (/.f64 1 (+.f64 2 (*.f64 -3 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 3 x 2) (*.f64 3 (*.f64 (fma.f64 (*.f64 x x) -9 4) x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 3 (*.f64 (fma.f64 (*.f64 x x) -9 4) x)) (fma.f64 3 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 3 (*.f64 (fma.f64 (*.f64 x x) -9 4) x))) (neg.f64 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 3 (*.f64 (fma.f64 (*.f64 x x) -9 4) x)) 1) (fma.f64 3 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 3 (*.f64 (fma.f64 (*.f64 x x) -9 4) x)) (pow.f64 (cbrt.f64 (fma.f64 3 x 2)) 2)) (cbrt.f64 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 3 (*.f64 (fma.f64 (*.f64 x x) -9 4) x)) (sqrt.f64 (fma.f64 3 x 2))) (sqrt.f64 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (fma.f64 (*.f64 x x) -9 4) -3) x) (neg.f64 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (fma.f64 (*.f64 x x) -9 4) -3)) (neg.f64 (fma.f64 3 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x)))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x))))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x))) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 3 (+.f64 2 (*.f64 -3 x))) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x))))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (*.f64 3 (+.f64 2 (*.f64 -3 x))))))))))

simplify123.0ms (2.5%)

Algorithm
egg-herbie
Rules
2020×unswap-sqr_binary64
1104×sqr-pow_binary64
634×fabs-mul_binary64
628×pow-sqr_binary64
611×cube-prod_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
016276
129258
248231
387231
4219231
5649231
6974231
71413231
81516231
91649231
101821231
112066231
122379231
132749231
143206231
153785231
164495231
175349231
185771231
196083231
206391231
216471231
226507231
Stop Event
node limit
Counts
135 → 116
Calls
Call 1
Inputs
12
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(*.f64 -27 (pow.f64 x 2))
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(*.f64 -27 (pow.f64 x 2))
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
6
(+.f64 (*.f64 -9 x) 6)
(+.f64 (*.f64 -9 x) 6)
(+.f64 (*.f64 -9 x) 6)
(*.f64 -9 x)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(*.f64 -9 x)
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(+.f64 6 (*.f64 -9 x))
(*.f64 6 x)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(*.f64 -9 (pow.f64 x 2))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
Outputs
12
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (*.f64 x x)))
(fma.f64 -27 (*.f64 x x) 12)
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (*.f64 x x)))
(fma.f64 -27 (*.f64 x x) 12)
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (*.f64 x x)))
(fma.f64 -27 (*.f64 x x) 12)
(*.f64 -27 (pow.f64 x 2))
(*.f64 -27 (*.f64 x x))
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (*.f64 x x)))
(fma.f64 -27 (*.f64 x x) 12)
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (*.f64 x x)))
(fma.f64 -27 (*.f64 x x) 12)
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (*.f64 x x)))
(fma.f64 -27 (*.f64 x x) 12)
(*.f64 -27 (pow.f64 x 2))
(*.f64 -27 (*.f64 x x))
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (*.f64 x x)))
(fma.f64 -27 (*.f64 x x) 12)
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (*.f64 x x)))
(fma.f64 -27 (*.f64 x x) 12)
(+.f64 12 (*.f64 -27 (pow.f64 x 2)))
(+.f64 12 (*.f64 -27 (*.f64 x x)))
(fma.f64 -27 (*.f64 x x) 12)
6
(+.f64 (*.f64 -9 x) 6)
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 (*.f64 -9 x) 6)
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 (*.f64 -9 x) 6)
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(*.f64 -9 x)
(*.f64 x -9)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(*.f64 -9 x)
(*.f64 x -9)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(+.f64 6 (*.f64 -9 x))
(fma.f64 -9 x 6)
(fma.f64 x -9 6)
(*.f64 6 x)
(*.f64 x 6)
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 (*.f64 x x) -9))
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 (*.f64 x x) -9))
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 (*.f64 x x) -9))
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 (*.f64 x x) -9)
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 (*.f64 x x) -9))
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 (*.f64 x x) -9))
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 (*.f64 x x) -9))
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(*.f64 -9 (pow.f64 x 2))
(*.f64 (*.f64 x x) -9)
(*.f64 x (*.f64 x -9))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 (*.f64 x x) -9))
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 (*.f64 x x) -9))
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))
(+.f64 (*.f64 6 x) (*.f64 -9 (pow.f64 x 2)))
(fma.f64 6 x (*.f64 (*.f64 x x) -9))
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
(*.f64 x (fma.f64 x -9 6))

localize11.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x 2))) 2)
0.1b
(sqrt.f64 (*.f64 3 (*.f64 x 2)))
0.1b
(sqrt.f64 (*.f64 3 (*.f64 x 2)))
0.3b
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x 2))) 2)
Compiler

Compiled 26 to 21 computations (19.2% saved)

series6.0ms (0.1%)

Counts
2 → 0
Calls

6 calls:

TimeVariablePointExpression
2.0ms
x
@inf
(sqrt.f64 (*.f64 3 (*.f64 x 2)))
1.0ms
x
@0
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x 2))) 2)
1.0ms
x
@-inf
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x 2))) 2)
1.0ms
x
@inf
(pow.f64 (sqrt.f64 (*.f64 3 (*.f64 x 2))) 2)
0.0ms
x
@0
(sqrt.f64 (*.f64 3 (*.f64 x 2)))

rewrite40.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
599×pow1_binary64
558×add-log-exp_binary64
557×log1p-expm1-u_binary64
557×expm1-log1p-u_binary64
546×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify8.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
53 → 53
Calls
Call 1
Inputs
Outputs

eval191.0ms (3.9%)

Compiler

Compiled 5055 to 3896 computations (22.9% saved)

prune78.0ms (1.6%)

Pruning

17 alts after pruning (9 fresh and 8 done)

PrunedKeptTotal
New3497356
Fresh527
Picked101
Done189
Total35617373
Error
0b
Counts
373 → 17
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(/.f64 (*.f64 3 (fma.f64 x -3 2)) (/.f64 1 x))
41.4b
(*.f64 (/.f64 (*.f64 3 x) 1) (*.f64 -3 x))
41.3b
(*.f64 -9 (*.f64 x x))
40.7b
(/.f64 (-.f64 (*.f64 (*.f64 x 6) (*.f64 x 6)) (*.f64 (*.f64 9 (*.f64 x x)) (*.f64 9 (*.f64 x x)))) (-.f64 (*.f64 x 6) (*.f64 9 (*.f64 x x))))
41.3b
(*.f64 x (*.f64 x -9))
0.4b
(/.f64 x (*.f64 1/3 (/.f64 1 (+.f64 2 (*.f64 -3 x)))))
0.1b
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
0.2b
(+.f64 (*.f64 -9 (*.f64 x x)) (*.f64 x 6))
0.2b
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
49.3b
(/.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (*.f64 3 x))
0.3b
(*.f64 (/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x))) x)
22.0b
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x 2))
0.4b
(/.f64 (fma.f64 x -3 2) (/.f64 1/3 x))
21.5b
(*.f64 x 6)
41.4b
(*.f64 (*.f64 3 (*.f64 -3 x)) x)
42.7b
(pow.f64 (pow.f64 (*.f64 x 6) 1/2) 2)
0.2b
(*.f64 x (+.f64 (*.f64 -9 x) 6))
Compiler

Compiled 184 to 138 computations (25% saved)

regimes33.0ms (0.7%)

Counts
17 → 1
Calls
Call 1
Inputs
(*.f64 x 6)
(*.f64 x (*.f64 x -9))
(*.f64 -9 (*.f64 x x))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 (*.f64 3 (*.f64 -3 x)) x)
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
(+.f64 (*.f64 -9 (*.f64 x x)) (*.f64 x 6))
(*.f64 (/.f64 (*.f64 3 x) 1) (*.f64 -3 x))
(/.f64 x (*.f64 1/3 (/.f64 1 (+.f64 2 (*.f64 -3 x)))))
(/.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (*.f64 3 x))
(*.f64 (/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x))) x)
(/.f64 (-.f64 (*.f64 (*.f64 x 6) (*.f64 x 6)) (*.f64 (*.f64 9 (*.f64 x x)) (*.f64 9 (*.f64 x x)))) (-.f64 (*.f64 x 6) (*.f64 9 (*.f64 x x))))
(/.f64 (fma.f64 x -3 2) (/.f64 1/3 x))
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
(/.f64 (*.f64 3 (fma.f64 x -3 2)) (/.f64 1 x))
(pow.f64 (pow.f64 (*.f64 x 6) 1/2) 2)
(*.f64 (pow.f64 (sqrt.f64 3) 2) (*.f64 x 2))
Outputs
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
Calls

2 calls:

19.0ms
x
8.0ms
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
Results
ErrorSegmentsBranch
0.1b1x
0.1b1(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
Compiler

Compiled 180 to 127 computations (29.4% saved)

regimes20.0ms (0.4%)

Counts
13 → 1
Calls
Call 1
Inputs
(*.f64 x 6)
(*.f64 x (*.f64 x -9))
(*.f64 -9 (*.f64 x x))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 (*.f64 3 (*.f64 -3 x)) x)
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
(+.f64 (*.f64 -9 (*.f64 x x)) (*.f64 x 6))
(*.f64 (/.f64 (*.f64 3 x) 1) (*.f64 -3 x))
(/.f64 x (*.f64 1/3 (/.f64 1 (+.f64 2 (*.f64 -3 x)))))
(/.f64 (*.f64 (*.f64 3 x) (-.f64 4 (*.f64 9 (*.f64 x x)))) (*.f64 3 x))
(*.f64 (/.f64 (*.f64 3 (-.f64 4 (*.f64 9 (*.f64 x x)))) (+.f64 2 (*.f64 3 x))) x)
(/.f64 (-.f64 (*.f64 (*.f64 x 6) (*.f64 x 6)) (*.f64 (*.f64 9 (*.f64 x x)) (*.f64 9 (*.f64 x x)))) (-.f64 (*.f64 x 6) (*.f64 9 (*.f64 x x))))
(/.f64 (fma.f64 x -3 2) (/.f64 1/3 x))
Outputs
(*.f64 x (+.f64 (*.f64 -9 x) 6))
Calls

2 calls:

9.0ms
x
8.0ms
(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
Results
ErrorSegmentsBranch
0.2b1x
0.2b1(*.f64 (*.f64 3 (-.f64 2 (*.f64 x 3))) x)
Compiler

Compiled 147 to 101 computations (31.3% saved)

regimes11.0ms (0.2%)

Counts
3 → 3
Calls
Call 1
Inputs
(*.f64 x 6)
(*.f64 x (*.f64 x -9))
(*.f64 -9 (*.f64 x x))
Outputs
(*.f64 x (*.f64 x -9))
(*.f64 x 6)
(*.f64 -9 (*.f64 x x))
Calls

1 calls:

10.0ms
x
Results
ErrorSegmentsBranch
2.1b3x
Compiler

Compiled 16 to 10 computations (37.5% saved)

bsearch53.0ms (1.1%)

Algorithm
binary-search
Steps
TimeLeftRight
39.0ms
0.0029421815227809534
3.226869379285251
15.0ms
-3640.325933075684
-0.0057880256772278186
Compiler

Compiled 14 to 11 computations (21.4% saved)

regimes10.0ms (0.2%)

Accuracy

Total -58.7b remaining (-2835.8%)

Threshold costs -58.7b (-2835.8%)

Counts
2 → 3
Calls
Call 1
Inputs
(*.f64 x 6)
(*.f64 x (*.f64 x -9))
Outputs
(*.f64 x (*.f64 x -9))
(*.f64 x 6)
(*.f64 x (*.f64 x -9))
Calls

1 calls:

9.0ms
x
Results
ErrorSegmentsBranch
2.1b3x
Compiler

Compiled 11 to 7 computations (36.4% saved)

bsearch42.0ms (0.9%)

Algorithm
binary-search
Steps
TimeLeftRight
14.0ms
0.0029421815227809534
3.226869379285251
29.0ms
-3640.325933075684
-0.0057880256772278186
Compiler

Compiled 14 to 11 computations (21.4% saved)

simplify3.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02285
12885
Stop Event
saturated
Calls
Call 1
Inputs
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(if (<=.f64 x -8005161384622463/2199023255552) (*.f64 x (*.f64 x -9)) (if (<=.f64 x 3392104348071081/1152921504606846976) (*.f64 x 6) (*.f64 -9 (*.f64 x x))))
(if (<=.f64 x -8005161384622463/2199023255552) (*.f64 x (*.f64 x -9)) (if (<=.f64 x 3392104348071081/1152921504606846976) (*.f64 x 6) (*.f64 x (*.f64 x -9))))
(*.f64 x 6)
Outputs
(fma.f64 x 6 (*.f64 x (*.f64 x -9)))
(*.f64 x (+.f64 (*.f64 -9 x) 6))
(*.f64 x (+.f64 6 (*.f64 x -9)))
(if (<=.f64 x -8005161384622463/2199023255552) (*.f64 x (*.f64 x -9)) (if (<=.f64 x 3392104348071081/1152921504606846976) (*.f64 x 6) (*.f64 -9 (*.f64 x x))))
(if (<=.f64 x -8005161384622463/2199023255552) (*.f64 x (*.f64 x -9)) (if (<=.f64 x 3392104348071081/1152921504606846976) (*.f64 x 6) (*.f64 x (*.f64 x -9))))
(*.f64 x 6)

end42.0ms (0.9%)

Stop Event
fuel
Compiler

Compiled 126 to 86 computations (31.7% saved)

Profiling

Loading profile data...