Details

Time bar (total: 5.5s)

analyze1.0ms (0%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
50%50%0.1%2
99.9%0%0.1%3
Compiler

Compiled 9 to 7 computations (22.2% saved)

sample1.2s (22.4%)

Results
1.2s8256×body256valid

preprocess14.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0918
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 re im) (log.f64 10))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 re im) (log.f64 10))
Compiler

Compiled 10 to 8 computations (20% saved)

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
079
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 10))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 10))

eval0.0ms (0%)

Compiler

Compiled 8 to 6 computations (25% saved)

prune3.0ms (0.1%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
0.9b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
Compiler

Compiled 8 to 6 computations (25% saved)

localize9.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
Compiler

Compiled 16 to 9 computations (43.8% saved)

series32.0ms (0.6%)

Counts
1 → 0
Calls

6 calls:

TimeVariablePointExpression
23.0ms
im
@0
(/.f64 (atan2.f64 im re) (log.f64 10))
7.0ms
re
@0
(/.f64 (atan2.f64 im re) (log.f64 10))
1.0ms
re
@inf
(/.f64 (atan2.f64 im re) (log.f64 10))
1.0ms
im
@inf
(/.f64 (atan2.f64 im re) (log.f64 10))
1.0ms
im
@-inf
(/.f64 (atan2.f64 im re) (log.f64 10))

rewrite55.0ms (1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
079
11419
217019
Stop Event
node limit
Counts
1 → 31
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 10))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 1 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 10)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) 1) (/.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (log.f64 10)) 2)) (/.f64 (atan2.f64 im re) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (pow.f64 (cbrt.f64 (log.f64 10)) 2)) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (log.f64 10)) 2)) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (sqrt.f64 (log.f64 10))) (/.f64 (cbrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

eval8.0ms (0.1%)

Compiler

Compiled 360 to 227 computations (36.9% saved)

prune739.0ms (13.5%)

Pruning

8 alts after pruning (7 fresh and 1 done)

PrunedKeptTotal
New24731
Fresh000
Picked011
Done000
Total24832
Error
0.0b
Counts
32 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
1.6b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
7.5b
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))
2.2b
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))
30.5b
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)
0.8b
(*.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))
1.0b
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
Compiler

Compiled 178 to 140 computations (21.3% saved)

localize19.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.9b
(/.f64 (atan2.f64 im re) (log.f64 1/10))
1.0b
(log.f64 1/10)
Compiler

Compiled 23 to 13 computations (43.5% saved)

series30.0ms (0.5%)

Counts
2 → 0
Calls

6 calls:

TimeVariablePointExpression
17.0ms
im
@0
(/.f64 (atan2.f64 im re) (log.f64 1/10))
10.0ms
re
@0
(/.f64 (atan2.f64 im re) (log.f64 1/10))
1.0ms
re
@inf
(/.f64 (atan2.f64 im re) (log.f64 1/10))
1.0ms
im
@inf
(/.f64 (atan2.f64 im re) (log.f64 1/10))
1.0ms
re
@-inf
(/.f64 (atan2.f64 im re) (log.f64 1/10))

rewrite55.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
683×pow1_binary64
634×add-log-exp_binary64
634×log1p-expm1-u_binary64
634×expm1-log1p-u_binary64
620×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0712
114112
2170012
Stop Event
node limit
Counts
2 → 46
Calls
Call 1
Inputs
(log.f64 1/10)
(/.f64 (atan2.f64 im re) (log.f64 1/10))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 1/10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 1/10) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 1/10)) (pow.f64 (cbrt.f64 (log.f64 1/10)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 1/10)) 2) (cbrt.f64 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 1/10)) (sqrt.f64 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 1/10) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 1/10) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 1/10)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 1/10)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 1/10) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 1/10) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 -9/10)))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 1/10)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 1 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 1/10)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) 1) (/.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (log.f64 1/10)) 2)) (/.f64 (atan2.f64 im re) (cbrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (pow.f64 (cbrt.f64 (log.f64 1/10)) 2)) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (log.f64 1/10)) 2)) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (log.f64 1/10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (sqrt.f64 (log.f64 1/10))) (/.f64 (cbrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 1/10) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))))

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize23.0ms (0.4%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)
0.9b
(/.f64 (log.f64 10) (atan2.f64 im re))
Compiler

Compiled 25 to 15 computations (40% saved)

series7.0ms (0.1%)

Counts
2 → 24
Calls

12 calls:

TimeVariablePointExpression
1.0ms
im
@0
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)
1.0ms
im
@-inf
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)
1.0ms
im
@inf
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)
1.0ms
re
@inf
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)
1.0ms
im
@0
(/.f64 (log.f64 10) (atan2.f64 im re))

rewrite62.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
838×pow1_binary64
781×add-log-exp_binary64
781×log1p-expm1-u_binary64
781×expm1-log1p-u_binary64
763×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0921
118318
2216118
Stop Event
node limit
Counts
2 → 71
Calls
Call 1
Inputs
(/.f64 (log.f64 10) (atan2.f64 im re))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 10) (/.f64 1 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (log.f64 10) 2)) (*.f64 (cbrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 2) (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 10)) (*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 1/10) (/.f64 1 (neg.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (log.f64 10) 2)) 1) (/.f64 (cbrt.f64 (log.f64 10)) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (log.f64 10)) 1) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (pow.f64 (atan2.f64 im re) 2))) (/.f64 (log.f64 10) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (log.f64 10) 2)) (cbrt.f64 (pow.f64 (atan2.f64 im re) 2))) (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (log.f64 10)) (cbrt.f64 (pow.f64 (atan2.f64 im re) 2))) (/.f64 (sqrt.f64 (log.f64 10)) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (atan2.f64 im re))) (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (log.f64 10) 2)) (sqrt.f64 (atan2.f64 im re))) (/.f64 (cbrt.f64 (log.f64 10)) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (log.f64 10) (neg.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 10 (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 1 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 10) -1) (pow.f64 (/.f64 1 (atan2.f64 im re)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 2) -1) (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -1) (pow.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) 2)) 1) (/.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (pow.f64 (log.f64 10) 2))) (/.f64 (atan2.f64 im re) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) 2)) (cbrt.f64 (pow.f64 (log.f64 10) 2))) (/.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (pow.f64 (log.f64 10) 2))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) 2)) (sqrt.f64 (log.f64 10))) (/.f64 (cbrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 10)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 1/10)) (neg.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (atan2.f64 im re) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) 2)) (/.f64 (log.f64 10) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (sqrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) 1) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 1 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 1 (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 2)) (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) (cbrt.f64 (pow.f64 (log.f64 10) 2))) (cbrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))

simplify10.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07216
Stop Event
saturated
Counts
95 → 71
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))

localize18.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.8b
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
7.9b
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))
Compiler

Compiled 34 to 21 computations (38.2% saved)

series7.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
re
@-inf
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
1.0ms
im
@0
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
1.0ms
im
@-inf
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
1.0ms
re
@inf
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
1.0ms
im
@inf
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)

rewrite71.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
869×pow1_binary64
817×add-log-exp_binary64
817×log1p-expm1-u_binary64
817×expm1-log1p-u_binary64
796×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01021
121221
2229721
Stop Event
node limit
Counts
2 → 78
Calls
Call 1
Inputs
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 1 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 10)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) 1/3) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3/2) 1/3) (pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3/2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) 1) (/.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (pow.f64 (log.f64 10) 2))) (/.f64 (atan2.f64 im re) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (cbrt.f64 (pow.f64 (log.f64 10) 2))) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (pow.f64 (log.f64 10) 2))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (sqrt.f64 (log.f64 10))) (/.f64 (cbrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (atan2.f64 im re) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (/.f64 (log.f64 10) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (neg.f64 (atan2.f64 im re))) (neg.f64 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (sqrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) 1) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) (cbrt.f64 (pow.f64 (log.f64 10) 2))) (cbrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (*.f64 (/.f64 1 (log.f64 10)) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) (*.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (*.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (/.f64 1 (log.f64 10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (atan2.f64 im re) 3) (/.f64 1 (pow.f64 (log.f64 10) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3/2) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) 3) (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3) (pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) (atan2.f64 im re)) (/.f64 1 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) 1) (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) (/.f64 (log.f64 10) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (neg.f64 (atan2.f64 im re)) 3) (pow.f64 (log.f64 1/10) 3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (atan2.f64 im re) 3)) (neg.f64 (pow.f64 (log.f64 10) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (atan2.f64 im re) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2)) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 (atan2.f64 im re)) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2)) (log.f64 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) (atan2.f64 im re)) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) 1) (/.f64 (log.f64 10) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) (neg.f64 (atan2.f64 im re))) (log.f64 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))))

simplify155.0ms (2.8%)

Algorithm
egg-herbie
Rules
881×times-frac_binary64
637×sqr-pow_binary64
600×unswap-sqr_binary64
508×associate-/l*_binary64
302×associate-/r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
011576
124576
260576
3192504
4714504
54288504
65452504
75603504
85795504
96009504
106291504
116659504
127125504
137702504
Stop Event
node limit
Counts
126 → 79
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)

localize37.0ms (0.7%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
0.9b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
3.3b
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
Compiler

Compiled 33 to 20 computations (39.4% saved)

series31.0ms (0.6%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
5.0ms
re
@-inf
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
4.0ms
im
@0
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
3.0ms
im
@inf
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
3.0ms
re
@inf
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
3.0ms
im
@-inf
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))

rewrite105.0ms (1.9%)

Algorithm
batch-egg-rewrite
Rules
851×pow1_binary64
799×add-log-exp_binary64
799×log1p-expm1-u_binary64
799×expm1-log1p-u_binary64
780×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01020
121020
2222320
Stop Event
node limit
Counts
2 → 72
Calls
Call 1
Inputs
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) (pow.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2) (cbrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (/.f64 1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (atan2.f64 im re)) (pow.f64 (/.f64 1 (log.f64 10)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/6) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) 1/3) (cbrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1/3) (pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (cbrt.f64 (log.f64 10)) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (neg.f64 (atan2.f64 im re))) (cbrt.f64 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (cbrt.f64 (atan2.f64 im re))) (neg.f64 (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 1 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/6) (*.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/6) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 10)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2) 3) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/6) 3) (pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/6) 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) 1) (/.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (log.f64 10)) 2)) (/.f64 (atan2.f64 im re) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (log.f64 10)) 2)) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (sqrt.f64 (log.f64 10))) (/.f64 (cbrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) 1) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) (pow.f64 (cbrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2)) (cbrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/6)) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (atan2.f64 im re) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (/.f64 (log.f64 10) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (neg.f64 (atan2.f64 im re))) (neg.f64 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (sqrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) 1) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) (pow.f64 (cbrt.f64 (log.f64 10)) 2)) (cbrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (cbrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)) (cbrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) (cbrt.f64 (atan2.f64 im re))) (cbrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))

simplify259.0ms (4.7%)

Algorithm
egg-herbie
Rules
1290×sqr-pow_binary64
666×pow-sqr_binary64
625×cube-prod_binary64
558×fabs-mul_binary64
373×unpow3_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
012552
127480
239480
356480
485480
5180480
6555480
71223480
81315480
91452480
101615480
111854480
122181480
132610480
143117480
153721480
164446480
174767480
185051480
195275480
205455480
215537480
226480480
237457480
247923480
Stop Event
node limit
Counts
120 → 74
Calls
Call 1
Inputs
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
Outputs
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 10)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)
(/.f64 (atan2.f64 im re) (log.f64 10))

localize33.0ms (0.6%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.2b
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
2.4b
(sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
Compiler

Compiled 33 to 20 computations (39.4% saved)

series10.0ms (0.2%)

Counts
2 → 24
Calls

12 calls:

TimeVariablePointExpression
1.0ms
re
@inf
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)
1.0ms
im
@inf
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)
1.0ms
re
@-inf
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)
1.0ms
im
@-inf
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)
1.0ms
im
@0
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)

rewrite68.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
838×pow1_binary64
781×add-log-exp_binary64
781×log1p-expm1-u_binary64
781×expm1-log1p-u_binary64
763×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01020
120720
2216020
Stop Event
node limit
Counts
2 → 71
Calls
Call 1
Inputs
(sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (cbrt.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/4) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (/.f64 1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (/.f64 1 (log.f64 10)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 1 (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)) (sqrt.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) 1/2) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (sqrt.f64 (log.f64 10)) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (neg.f64 (atan2.f64 im re))) (sqrt.f64 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (sqrt.f64 (atan2.f64 im re))) (neg.f64 (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 1 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (*.f64 (cbrt.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/4) (*.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/4) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 10)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/4)) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) 1) (/.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (pow.f64 (log.f64 10) 2))) (/.f64 (atan2.f64 im re) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (cbrt.f64 (pow.f64 (log.f64 10) 2))) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (pow.f64 (log.f64 10) 2))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (sqrt.f64 (log.f64 10))) (/.f64 (cbrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) (cbrt.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (atan2.f64 im re) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (/.f64 (log.f64 10) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (neg.f64 (atan2.f64 im re))) (neg.f64 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (sqrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) 1) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) (cbrt.f64 (pow.f64 (log.f64 10) 2))) (cbrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) (sqrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (sqrt.f64 (atan2.f64 im re))) (sqrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))

simplify8.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07216
Stop Event
saturated
Counts
95 → 71
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))

eval233.0ms (4.3%)

Compiler

Compiled 5770 to 3841 computations (33.4% saved)

prune143.0ms (2.6%)

Pruning

9 alts after pruning (5 fresh and 4 done)

PrunedKeptTotal
New4295434
Fresh202
Picked101
Done145
Total4339442
Error
0b
Counts
442 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
1.6b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
0.3b
(neg.f64 (pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1))
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
2.2b
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))
31.7b
(/.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
7.5b
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))
1.0b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
1.0b
(pow.f64 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)) -1)
Compiler

Compiled 175 to 133 computations (24% saved)

localize33.0ms (0.6%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.2b
(pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1)
0.9b
(/.f64 (log.f64 1/10) (atan2.f64 im re))
1.0b
(log.f64 1/10)
Compiler

Compiled 34 to 21 computations (38.2% saved)

series44.0ms (0.8%)

Counts
2 → 24
Calls

12 calls:

TimeVariablePointExpression
31.0ms
im
@-inf
(pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1)
1.0ms
re
@inf
(pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1)
1.0ms
re
@-inf
(pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1)
1.0ms
im
@inf
(pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1)
1.0ms
im
@0
(pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1)

rewrite103.0ms (1.9%)

Algorithm
batch-egg-rewrite
Rules
839×pow1_binary64
782×add-log-exp_binary64
782×log1p-expm1-u_binary64
782×expm1-log1p-u_binary64
764×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0921
118318
2216018
Stop Event
node limit
Counts
2 → 71
Calls
Call 1
Inputs
(/.f64 (log.f64 1/10) (atan2.f64 im re))
(pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 1/10) (/.f64 1 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (log.f64 1/10) 2)) (*.f64 (cbrt.f64 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) (pow.f64 (cbrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) 2) (cbrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 1/10)) (*.f64 (sqrt.f64 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) (sqrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 10) (/.f64 1 (neg.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (log.f64 1/10) 2)) 1) (/.f64 (cbrt.f64 (log.f64 1/10)) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (log.f64 1/10)) 1) (/.f64 (sqrt.f64 (log.f64 1/10)) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (pow.f64 (atan2.f64 im re) 2))) (/.f64 (log.f64 1/10) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (log.f64 1/10) 2)) (cbrt.f64 (pow.f64 (atan2.f64 im re) 2))) (cbrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (log.f64 1/10)) (cbrt.f64 (pow.f64 (atan2.f64 im re) 2))) (/.f64 (sqrt.f64 (log.f64 1/10)) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (atan2.f64 im re))) (/.f64 (log.f64 1/10) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (log.f64 1/10) 2)) (sqrt.f64 (atan2.f64 im re))) (/.f64 (cbrt.f64 (log.f64 1/10)) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (log.f64 1/10) (neg.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 1/10 (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (log.f64 1/10) 3) (pow.f64 (atan2.f64 im re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 1 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 1/10) -1) (pow.f64 (/.f64 1 (atan2.f64 im re)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) 2) -1) (pow.f64 (cbrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) -1) (pow.f64 (sqrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) 2)) 1) (/.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (pow.f64 (log.f64 1/10) 2))) (/.f64 (atan2.f64 im re) (cbrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) 2)) (cbrt.f64 (pow.f64 (log.f64 1/10) 2))) (/.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (pow.f64 (log.f64 1/10) 2))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (log.f64 1/10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) 2)) (sqrt.f64 (log.f64 1/10))) (/.f64 (cbrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 1/10))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 1/10)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 10)) (neg.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (atan2.f64 im re) (log.f64 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) 2)) (/.f64 (log.f64 1/10) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 1/10) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (atan2.f64 im re)) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) (sqrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 1/10))) (sqrt.f64 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) 1) (log.f64 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 1 (pow.f64 (cbrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) 2)) (cbrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (atan2.f64 im re) (cbrt.f64 (pow.f64 (log.f64 1/10) 2))) (cbrt.f64 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 1/10) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))))

simplify16.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07216
Stop Event
saturated
Counts
95 → 71
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))

localize25.0ms (0.5%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.2b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.9b
(/.f64 (log.f64 10) (atan2.f64 im re))
Compiler

Compiled 25 to 15 computations (40% saved)

series3.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
im
@0
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.0ms
im
@-inf
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.0ms
re
@-inf
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.0ms
im
@inf
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.0ms
re
@0
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))

rewrite78.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
839×pow1_binary64
778×add-log-exp_binary64
778×log1p-expm1-u_binary64
778×expm1-log1p-u_binary64
760×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0912
11829
221859
Stop Event
node limit
Counts
1 → 36
Calls
Call 1
Inputs
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 1 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 10)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 10)) (pow.f64 (/.f64 1 (atan2.f64 im re)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 2) -1) (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -1) (pow.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) 1) (/.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (log.f64 10)) 2)) (/.f64 (atan2.f64 im re) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (pow.f64 (cbrt.f64 (log.f64 10)) 2)) (/.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (log.f64 10)) 2)) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (sqrt.f64 (log.f64 10))) (/.f64 (cbrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 1/10)) (neg.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1 (log.f64 10)) 1) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1 (log.f64 10)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1 (log.f64 10)) (sqrt.f64 (atan2.f64 im re))) (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))

simplify16.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07216
Stop Event
saturated
Counts
60 → 37
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))

localize32.0ms (0.6%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(/.f64 1 (atan2.f64 im re))
0.2b
(pow.f64 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)) -1)
0.9b
(*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10))
Compiler

Compiled 35 to 22 computations (37.1% saved)

series21.0ms (0.4%)

Counts
3 → 48
Calls

18 calls:

TimeVariablePointExpression
9.0ms
im
@0
(*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10))
1.0ms
re
@-inf
(/.f64 1 (atan2.f64 im re))
1.0ms
im
@inf
(/.f64 1 (atan2.f64 im re))
1.0ms
re
@inf
(/.f64 1 (atan2.f64 im re))
1.0ms
im
@-inf
(/.f64 1 (atan2.f64 im re))

rewrite122.0ms (2.2%)

Algorithm
batch-egg-rewrite
Rules
931×pow1_binary64
864×add-log-exp_binary64
862×log1p-expm1-u_binary64
862×expm1-log1p-u_binary64
843×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01128
121925
2244125
Stop Event
node limit
Counts
3 → 67
Calls
Call 1
Inputs
(*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10))
(pow.f64 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)) -1)
(/.f64 1 (atan2.f64 im re))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (log1p.f64 9) (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (atan2.f64 im re) (log1p.f64 9)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (log1p.f64 9) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (log1p.f64 9)) 2) (/.f64 (atan2.f64 im re) (cbrt.f64 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (log1p.f64 9)) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (log1p.f64 9)) (neg.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (log1p.f64 9) (sqrt.f64 (atan2.f64 im re))) (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (log1p.f64 9) 1) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (log1p.f64 9) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1 (log1p.f64 9)) (neg.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log1p.f64 9) -1) (neg.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 10 (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (log1p.f64 9) 3) (pow.f64 (atan2.f64 im re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (/.f64 1 (atan2.f64 im re)) 3) (pow.f64 (log1p.f64 9) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (log1p.f64 9) 3) (pow.f64 (/.f64 1 (atan2.f64 im re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log1p.f64 9))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log1p.f64 9)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log1p.f64 9)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))) 2) -1) (pow.f64 (cbrt.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))) -1) (pow.f64 (sqrt.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (log1p.f64 9) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (atan2.f64 im re) (log1p.f64 9))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 1 (log1p.f64 9)) (/.f64 1 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))) (sqrt.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 1 (pow.f64 (cbrt.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))) 2)) (cbrt.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re)) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 1 (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 1 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (/.f64 1 (neg.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (atan2.f64 im re))) (cbrt.f64 (pow.f64 (atan2.f64 im re) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) -2)) (/.f64 1 (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (atan2.f64 im re) -1/2) (pow.f64 (atan2.f64 im re) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) -1) (pow.f64 (cbrt.f64 (atan2.f64 im re)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (atan2.f64 im re)) -1) (pow.f64 (sqrt.f64 (atan2.f64 im re)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (atan2.f64 im re) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 1 (atan2.f64 im re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (cbrt.f64 (atan2.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (atan2.f64 im re) -1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (atan2.f64 im re) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 1 (atan2.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (neg.f64 (log.f64 (atan2.f64 im re))))))))

simplify19.0ms (0.4%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08432
Stop Event
saturated
Counts
115 → 69
Calls
Call 1
Inputs
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
Outputs
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (log.f64 10) (atan2.f64 im re))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))

localize81.0ms (1.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
0.9b
(/.f64 (log.f64 10) (atan2.f64 im re))
1.6b
(sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))
2.4b
(sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
Compiler

Compiled 51 to 29 computations (43.1% saved)

series5.0ms (0.1%)

Counts
1 → 0
Calls

6 calls:

TimeVariablePointExpression
1.0ms
im
@0
(sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))
1.0ms
im
@inf
(sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))
1.0ms
im
@-inf
(sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))
1.0ms
re
@-inf
(sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))
1.0ms
re
@inf
(sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))

rewrite82.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
765×pow1_binary64
712×add-log-exp_binary64
712×log1p-expm1-u_binary64
712×expm1-log1p-u_binary64
695×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0811
116211
2194611
Stop Event
node limit
Counts
1 → 28
Calls
Call 1
Inputs
(sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))) (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) (cbrt.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 1/4) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 10)) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 10)) (pow.f64 (/.f64 1 (atan2.f64 im re)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 2)) (sqrt.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 2) 1/2) (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (log.f64 10)) (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (log.f64 1/10)) (sqrt.f64 (neg.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (sqrt.f64 (log.f64 10))) (neg.f64 (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))))))))

simplify12.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize50.0ms (0.9%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))
0.9b
(pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)
1.0b
(/.f64 1 (log.f64 10))
3.3b
(cbrt.f64 (atan2.f64 im re))
Compiler

Compiled 51 to 28 computations (45.1% saved)

series34.0ms (0.6%)

Counts
4 → 72
Calls

18 calls:

TimeVariablePointExpression
4.0ms
re
@0
(cbrt.f64 (atan2.f64 im re))
3.0ms
im
@-inf
(cbrt.f64 (atan2.f64 im re))
3.0ms
im
@0
(cbrt.f64 (atan2.f64 im re))
3.0ms
re
@inf
(cbrt.f64 (atan2.f64 im re))
3.0ms
re
@-inf
(cbrt.f64 (atan2.f64 im re))

rewrite88.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
530×log-prod_binary64
405×exp-prod_binary64
328×pow-prod-down_binary64
282×pow2_binary64
211×pow-unpow_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01333
126130
2287430
Stop Event
node limit
Counts
4 → 139
Calls
Call 1
Inputs
(cbrt.f64 (atan2.f64 im re))
(/.f64 1 (log.f64 10))
(pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (cbrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (cbrt.f64 (atan2.f64 im re)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (cbrt.f64 (atan2.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 (atan2.f64 im re))))) (log.f64 (sqrt.f64 (exp.f64 (cbrt.f64 (atan2.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (cbrt.f64 (atan2.f64 im re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (cbrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) 2) (cbrt.f64 (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (atan2.f64 im re) 1/6) (pow.f64 (atan2.f64 im re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (atan2.f64 im re) 1/6) (*.f64 (pow.f64 (atan2.f64 im re) 1/6) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) 4)))) (sqrt.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (atan2.f64 im re) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (atan2.f64 im re) 3) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) 2) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (atan2.f64 im re) 1/6) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (atan2.f64 im re)) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1/3) (log.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (cbrt.f64 (atan2.f64 im re)))) 2)) (cbrt.f64 (log.f64 (cbrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (cbrt.f64 (atan2.f64 im re))))) (sqrt.f64 (log.f64 (cbrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (cbrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (cbrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (atan2.f64 im re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2/3 (log.f64 (atan2.f64 im re))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/6 (log.f64 (atan2.f64 im re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1/3) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (cbrt.f64 (atan2.f64 im re))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 2/3 (log.f64 (atan2.f64 im re))) 1) 1/2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 1 (log1p.f64 9)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 1 (log1p.f64 9)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 1 (log1p.f64 9))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 1 (log1p.f64 9))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 1 (log1p.f64 9))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 1 (log1p.f64 9)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 1 (log1p.f64 9)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log1p.f64 9)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (log1p.f64 9))) (cbrt.f64 (pow.f64 (log1p.f64 9) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (log1p.f64 9) -2)) (/.f64 1 (cbrt.f64 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log1p.f64 9) -1/2) (pow.f64 (log1p.f64 9) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (/.f64 1 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log1p.f64 9)) -2) (/.f64 1 (cbrt.f64 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log1p.f64 9) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (log1p.f64 9)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (neg.f64 (log.f64 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log1p.f64 9) 2) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log1p.f64 9) 3) -1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log1p.f64 9) -2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log1p.f64 9) -3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log1p.f64 9)) -3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (cbrt.f64 (log1p.f64 9))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log1p.f64 9)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log1p.f64 9) -1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 -1) (log.f64 (log1p.f64 9)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (neg.f64 (log.f64 (log1p.f64 9)))) 2)) (cbrt.f64 (neg.f64 (log.f64 (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (neg.f64 (log.f64 (log1p.f64 9))))) (sqrt.f64 (neg.f64 (log.f64 (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log1p.f64 9) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 1 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 1 (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log1p.f64 9) -3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 1 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 1 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (neg.f64 (log.f64 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (log1p.f64 9)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (neg.f64 (log.f64 (log1p.f64 9))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (log1p.f64 9) -3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (neg.f64 (log.f64 (cbrt.f64 (log1p.f64 9)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 -1/2 (log.f64 (log1p.f64 9))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log1p.f64 9)) 1) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log1p.f64 9)) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (neg.f64 (log.f64 (log1p.f64 9))) 1) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) 2) (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) 4))) (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (atan2.f64 im re) 1/6) (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (atan2.f64 im re) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) 5) (cbrt.f64 (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (atan2.f64 im re) 2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2/3 (log.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2/3 (log.f64 (atan2.f64 im re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (atan2.f64 im re)) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (atan2.f64 im re))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/3 (*.f64 2/3 (log.f64 (atan2.f64 im re)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) 2/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1/3) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (cbrt.f64 (atan2.f64 im re))) 1) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 2/3 (log.f64 (atan2.f64 im re))) 1) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (atan2.f64 im re) (log1p.f64 9)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (atan2.f64 im re) (log1p.f64 9))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (atan2.f64 im re) -1) (log.f64 1/10))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (log1p.f64 9) -3) (pow.f64 (atan2.f64 im re) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (log1p.f64 9) -1/2) (sqrt.f64 (atan2.f64 im re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)))) 2)) (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))) (sqrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) (log.f64 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (atan2.f64 im re)) (*.f64 (log.f64 (log1p.f64 9)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) (*.f64 (log.f64 (log1p.f64 9)) 1)))))))

simplify116.0ms (2.1%)

Algorithm
egg-herbie
Rules
635×sqr-pow_binary64
593×associate-/l*_binary64
559×associate-*l/_binary64
478×associate-/l/_binary64
457×associate-*l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
012576
125576
239576
367576
4138576
5403576
61634576
72204576
83855576
95793576
106245576
116878576
127887576
Stop Event
node limit
Counts
211 → 142
Calls
Call 1
Inputs
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (atan2.f64 im re) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
Outputs
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (atan2.f64 im re) 1/3)
(cbrt.f64 (atan2.f64 im re))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(pow.f64 (pow.f64 (atan2.f64 im re) 2) 1/3)
(cbrt.f64 (pow.f64 (atan2.f64 im re) 2))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))

eval196.0ms (3.6%)

Compiler

Compiled 8637 to 5409 computations (37.4% saved)

prune102.0ms (1.9%)

Pruning

8 alts after pruning (3 fresh and 5 done)

PrunedKeptTotal
New5223525
Fresh000
Picked011
Done448
Total5268534
Error
0b
Counts
534 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
1.6b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
1.0b
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)))
0.3b
(neg.f64 (/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re))))
1.0b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
2.2b
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
0.3b
(neg.f64 (/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re))))
Compiler

Compiled 92 to 72 computations (21.7% saved)

localize42.0ms (0.8%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.2b
(/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
0.9b
(/.f64 (log.f64 1/10) (atan2.f64 im re))
1.0b
(log.f64 1/10)
Compiler

Compiled 34 to 21 computations (38.2% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
im
@0
(/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
0.0ms
im
@-inf
(/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
0.0ms
re
@0
(/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
0.0ms
re
@inf
(/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
0.0ms
re
@-inf
(/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))

rewrite66.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
840×pow1_binary64
779×add-log-exp_binary64
779×log1p-expm1-u_binary64
779×expm1-log1p-u_binary64
761×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0912
11829
221849
Stop Event
node limit
Counts
1 → 36
Calls
Call 1
Inputs
(/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 1 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 1/10)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 1/10)) (pow.f64 (/.f64 1 (atan2.f64 im re)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) 2) -1) (pow.f64 (cbrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) -1) (pow.f64 (sqrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) 1) (/.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (log.f64 1/10)) 2)) (/.f64 (atan2.f64 im re) (cbrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (pow.f64 (cbrt.f64 (log.f64 1/10)) 2)) (/.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (log.f64 1/10)) 2)) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (log.f64 1/10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (sqrt.f64 (log.f64 1/10))) (/.f64 (cbrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 1/10))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 10)) (neg.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1 (log.f64 1/10)) 1) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1 (log.f64 1/10)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1 (log.f64 1/10)) (sqrt.f64 (atan2.f64 im re))) (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 1/10) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))))

simplify15.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07216
Stop Event
saturated
Counts
60 → 37
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))

localize42.0ms (0.8%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(/.f64 1 (atan2.f64 im re))
0.9b
(/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re)))
1.0b
(/.f64 1 (log.f64 1/10))
1.0b
(log.f64 1/10)
Compiler

Compiled 41 to 28 computations (31.7% saved)

series3.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
im
@0
(/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re)))
0.0ms
re
@inf
(/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re)))
0.0ms
im
@inf
(/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re)))
0.0ms
im
@-inf
(/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re)))
0.0ms
re
@-inf
(/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re)))

rewrite80.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
946×pow1_binary64
876×add-log-exp_binary64
876×log1p-expm1-u_binary64
876×expm1-log1p-u_binary64
102×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01021
120815
2256515
Stop Event
node limit
Counts
2 → 56
Calls
Call 1
Inputs
(/.f64 1 (log.f64 1/10))
(/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 -1 (log.f64 10)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 -1 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 -1 (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 -1 (cbrt.f64 (log.f64 10))) (cbrt.f64 (pow.f64 (log.f64 1/10) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (log.f64 1/10) -2)) (/.f64 -1 (cbrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 1/10) -1/2) (pow.f64 (log.f64 1/10) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (/.f64 1 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (log.f64 1/10)) 2) -1) (pow.f64 (cbrt.f64 (log.f64 1/10)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (log.f64 1/10)) -1) (pow.f64 (sqrt.f64 (log.f64 1/10)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 1/10) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 -1 (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 -1 (log.f64 10)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 -1 (cbrt.f64 (log.f64 10))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 1/10) -1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 1/10) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 -1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 -1 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 -1 (log.f64 10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 -1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 -1 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (neg.f64 (log.f64 (log.f64 1/10))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 -1 (log.f64 10)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 -1 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (log.f64 1/10) -2)) (*.f64 (/.f64 -1 (cbrt.f64 (log.f64 10))) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 1/10) -1/2) (*.f64 (pow.f64 (log.f64 1/10) -1/2) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 10)) (/.f64 1 (/.f64 -1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (log.f64 1/10) -2)) 1) (/.f64 (/.f64 -1 (cbrt.f64 (log.f64 10))) (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (log.f64 1/10) -1/2) 1) (/.f64 (pow.f64 (log.f64 1/10) -1/2) (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (pow.f64 (atan2.f64 im re) -2))) (/.f64 (/.f64 -1 (log.f64 10)) (/.f64 1 (cbrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (log.f64 1/10) -2)) (cbrt.f64 (pow.f64 (atan2.f64 im re) -2))) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (log.f64 1/10) -1/2) (cbrt.f64 (pow.f64 (atan2.f64 im re) -2))) (/.f64 (pow.f64 (log.f64 1/10) -1/2) (/.f64 1 (cbrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (atan2.f64 im re) -1/2)) (/.f64 (/.f64 -1 (log.f64 10)) (pow.f64 (atan2.f64 im re) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 (log.f64 1/10) -2)) (pow.f64 (atan2.f64 im re) -1/2)) (/.f64 (/.f64 -1 (cbrt.f64 (log.f64 10))) (pow.f64 (atan2.f64 im re) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (/.f64 -1 (log.f64 10)) -1) (neg.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 -1 (log.f64 10)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 -1 (log.f64 10)) (sqrt.f64 (atan2.f64 im re))) (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (/.f64 -1 (log.f64 10)) (/.f64 -1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (/.f64 -1 (log.f64 10)) 3) (pow.f64 (/.f64 1 (atan2.f64 im re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))))))

simplify16.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07216
Stop Event
saturated
Counts
80 → 57
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 1/10))

localize32.0ms (0.6%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(/.f64 1 (atan2.f64 im re))
0.2b
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)))
0.9b
(*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10))
Compiler

Compiled 34 to 21 computations (38.2% saved)

series3.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
im
@0
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)))
0.0ms
im
@-inf
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)))
0.0ms
re
@-inf
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)))
0.0ms
im
@inf
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)))
0.0ms
re
@inf
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)))

rewrite66.0ms (1.2%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
01012
12019
223689
Stop Event
node limit
Counts
1 → 24
Calls
Call 1
Inputs
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (pow.f64 (log.f64 10) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 1 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (/.f64 1 (/.f64 (neg.f64 (log.f64 10)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 10) -1) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 2) -1) (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -1) (pow.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 10)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))

simplify14.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07216
Stop Event
saturated
Counts
48 → 25
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))

eval137.0ms (2.5%)

Compiler

Compiled 3231 to 2298 computations (28.9% saved)

prune66.0ms (1.2%)

Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New2441245
Fresh000
Picked011
Done167
Total2458253
Error
0b
Counts
253 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
1.0b
(neg.f64 (/.f64 (-.f64 (exp.f64 (log1p.f64 (/.f64 -1 (log.f64 10)))) 1) (/.f64 1 (atan2.f64 im re))))
1.6b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
1.0b
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)))
0.3b
(neg.f64 (/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re))))
1.0b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
0.3b
(neg.f64 (/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re))))
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
Compiler

Compiled 91 to 75 computations (17.6% saved)

regimes84.0ms (1.5%)

Accuracy

Total -36.0b remaining (-24536.2%)

Threshold costs -36.0b (-24536.2%)

Counts
17 → 1
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
(neg.f64 (/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re))))
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)))
(neg.f64 (/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re))))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)
(neg.f64 (pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1))
(pow.f64 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 10)) -1)
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)
(neg.f64 (/.f64 (-.f64 (exp.f64 (log1p.f64 (/.f64 -1 (log.f64 10)))) 1) (/.f64 1 (atan2.f64 im re))))
(*.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))
(/.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))
Outputs
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
Calls

5 calls:

24.0ms
re
20.0ms
im
10.0ms
(atan2.f64 im re)
10.0ms
(/.f64 (atan2.f64 im re) (log.f64 10))
9.0ms
(/.f64 (atan2.f64 im re) (log.f64 10))
Results
ErrorSegmentsBranch
0.1b1re
0.1b1im
0.1b1(/.f64 (atan2.f64 im re) (log.f64 10))
0.1b1(/.f64 (atan2.f64 im re) (log.f64 10))
0.1b1(atan2.f64 im re)
Compiler

Compiled 209 to 139 computations (33.5% saved)

simplify6.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01120
11720
22120
32420
42520
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (atan2.f64 im re) (log.f64 10))
Outputs
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (atan2.f64 im re) (log.f64 10))
Compiler

Compiled 17 to 13 computations (23.5% saved)

soundness0.0ms (0%)

end38.0ms (0.7%)

Compiler

Compiled 15 to 10 computations (33.3% saved)

Profiling

Loading profile data...