Details

Time bar (total: 5.2s)

analyze1.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
50%50%50%0.1%0%0%0%2
100%99.9%0%0.1%0%0%0%3
Compiler

Compiled 9 to 7 computations (22.2% saved)

sample1.3s (24.4%)

Results
1.3s8256×body256valid
Bogosity

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

prune1.0ms (0%)

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)

series36.0ms (0.7%)

Counts
1 → 0
Calls

6 calls:

TimeVariablePointExpression
24.0ms
im
@0
(/.f64 (atan2.f64 im re) (log.f64 10))
9.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
re
@-inf
(/.f64 (atan2.f64 im re) (log.f64 10))

rewrite57.0ms (1.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

eval7.0ms (0.1%)

Compiler

Compiled 360 to 227 computations (36.9% saved)

prune15.0ms (0.3%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New25631
Fresh000
Picked011
Done000
Total25732
Error
0.0b
Counts
32 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
0.8b
(*.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))
31.6b
(exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))
7.0b
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
0.9b
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)
1.6b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
Compiler

Compiled 140 to 114 computations (18.6% saved)

localize20.0ms (0.4%)

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)

series28.0ms (0.5%)

Counts
2 → 0
Calls

6 calls:

TimeVariablePointExpression
16.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
im
@-inf
(/.f64 (atan2.f64 im re) (log.f64 1/10))

rewrite51.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

localize14.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(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
re
@-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
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
re
@inf
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)

rewrite88.0ms (1.7%)

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

simplify9.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.5b
(exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
3.3b
(log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
Compiler

Compiled 31 to 18 computations (41.9% saved)

series108.0ms (2.1%)

Counts
2 → 24
Calls

12 calls:

TimeVariablePointExpression
38.0ms
im
@inf
(log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
17.0ms
re
@-inf
(log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
14.0ms
im
@-inf
(log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
14.0ms
im
@0
(log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
14.0ms
re
@inf
(log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))

rewrite58.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
759×pow1_binary64
703×add-log-exp_binary64
703×log1p-expm1-u_binary64
703×expm1-log1p-u_binary64
687×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0920
116620
2189820
Stop Event
node limit
Counts
2 → 70
Calls
Call 1
Inputs
(log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
(exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (atan2.f64 im re)) (neg.f64 (log.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)) (log.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) (log.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (atan2.f64 im re)) (log.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 (atan2.f64 im re))) (log.f64 (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) (pow.f64 (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2) (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) (sqrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log.f64 (atan2.f64 im re)) 3) (pow.f64 (log.f64 (log.f64 10)) 3)) (+.f64 (*.f64 (log.f64 (atan2.f64 im re)) (log.f64 (atan2.f64 im re))) (+.f64 (*.f64 (log.f64 (log.f64 10)) (log.f64 (log.f64 10))) (*.f64 (log.f64 (atan2.f64 im re)) (log.f64 (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (log.f64 (atan2.f64 im re)) (log.f64 (atan2.f64 im re))) (*.f64 (log.f64 (log.f64 10)) (log.f64 (log.f64 10)))) (+.f64 (log.f64 (atan2.f64 im re)) (log.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (-.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 1))))) (#(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 (cbrt.f64 (pow.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 (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 (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 (cbrt.f64 (pow.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 (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 (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 (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 -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 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 pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2)) (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))) (sqrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (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))))))))

simplify9.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07216
Stop Event
saturated
Counts
94 → 70
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))

localize29.0ms (0.5%)

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.3b
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))
Compiler

Compiled 34 to 21 computations (38.2% saved)

series6.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
im
@0
(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)
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)

rewrite83.0ms (1.6%)

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

simplify232.0ms (4.4%)

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)

localize41.0ms (0.8%)

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.7b
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
Compiler

Compiled 33 to 20 computations (39.4% saved)

series32.0ms (0.6%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
4.0ms
im
@0
(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)))
3.0ms
im
@inf
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))
3.0ms
re
@0
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))

rewrite89.0ms (1.7%)

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

simplify287.0ms (5.5%)

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

eval307.0ms (5.9%)

Compiler

Compiled 5690 to 3777 computations (33.6% saved)

prune120.0ms (2.3%)

Pruning

7 alts after pruning (5 fresh and 2 done)

PrunedKeptTotal
New4285433
Fresh101
Picked101
Done325
Total4337440
Error
0b
Counts
440 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(neg.f64 (pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1))
0.8b
(*.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
7.1b
(cbrt.f64 (/.f64 1 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)))
0.9b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
31.4b
(/.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
Compiler

Compiled 143 to 111 computations (22.4% saved)

localize18.0ms (0.4%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(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)

series70.0ms (1.3%)

Counts
2 → 24
Calls

12 calls:

TimeVariablePointExpression
63.0ms
im
@0
(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
@-inf
(pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1)
1.0ms
im
@0
(/.f64 (log.f64 1/10) (atan2.f64 im re))
1.0ms
re
@inf
(pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1)

rewrite66.0ms (1.3%)

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

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

localize46.0ms (0.9%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(/.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)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.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)))

rewrite56.0ms (1.1%)

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

simplify8.0ms (0.2%)

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

localize31.0ms (0.6%)

Local error

Found 4 expressions with local error:

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

Compiled 47 to 31 computations (34% saved)

series14.0ms (0.3%)

Counts
3 → 72
Calls

18 calls:

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

rewrite133.0ms (2.6%)

Algorithm
batch-egg-rewrite
Rules
499×log-prod_binary64
379×exp-prod_binary64
278×pow-prod-down_binary64
277×pow2_binary64
209×pow-to-exp_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01236
125533
2293833
Stop Event
node limit
Counts
3 → 178
Calls
Call 1
Inputs
(cbrt.f64 (/.f64 1 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 1 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.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 (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 (/.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 (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 (pow.f64 (log.f64 10) -1/2) (/.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 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 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 (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 (log.f64 10) (cbrt.f64 (atan2.f64 im re))))))) (#(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 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (cbrt.f64 (neg.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3))))))) (#(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 (atan2.f64 im re)) (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 1 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))))) (#(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 (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 pow.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) -1/3)))) (#(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 (/.f64 (atan2.f64 im re) (log.f64 10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 9) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 9) -1/9)))) (#(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 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2) 2/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 pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) -3/2) -2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1/3) (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2)) (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))) (sqrt.f64 (log.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 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 log.f64 (+.f64 1 (expm1.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 exp.f64 (*.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)) -1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))) -3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 1) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)) 1) -1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -3) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)) -1) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 1) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 1/3) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3))) 1)))) (#(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 (log.f64 10) (*.f64 (/.f64 1 (atan2.f64 im re)) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2) (/.f64 (log.f64 10) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2)) (*.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 5/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) -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 (*.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2) 1) (/.f64 (log.f64 10) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2) (log.f64 10)) (/.f64 1 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 5/2) (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) (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 1 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2) (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) -3/2) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (log.f64 1/10) 3) (pow.f64 (neg.f64 (atan2.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (log.f64 10) 3)) (neg.f64 (pow.f64 (atan2.f64 im re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 10) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 1/10) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2)) (neg.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2) 1) (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2) (log.f64 10)) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2) (log.f64 1/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)) 6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 9))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 9)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) -3/2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 1) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 3/2) 2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.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)) 3) 1)))) (#(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)) 2) (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (/.f64 1 (neg.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -6) (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 10) -3) (pow.f64 (atan2.f64 im re) 3))))) (#(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 (pow.f64 (*.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) (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 (/.f64 (atan2.f64 im re) (log.f64 10)) 5/2) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.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)) 3) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 9) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 2) -3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 6) -1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 9) -1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) -3/2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 -1) (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 -3) (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (neg.f64 (neg.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))) 2)) (cbrt.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))) (sqrt.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -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 log.f64 (+.f64 1 (expm1.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 9))))) (#(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)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 9)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 1) -3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)) 1) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -3) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 1/3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1) 3))))))

simplify160.0ms (3.1%)

Algorithm
egg-herbie
Rules
870×sqr-pow_binary64
609×associate-/l*_binary64
477×associate-/r*_binary64
394×unswap-sqr_binary64
386×associate-/l/_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
012936
125936
285936
3270792
4975792
54292792
65066792
75261792
85462792
95685792
105978792
116364792
126857792
137473792
Stop Event
node limit
Counts
250 → 180
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 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 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))
(/.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 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)
(/.f64 (pow.f64 (log.f64 10) 3) (pow.f64 (atan2.f64 im re) 3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 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)
(/.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)

localize14.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))
0.2b
(/.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))
3.3b
(sqrt.f64 (atan2.f64 im re))
Compiler

Compiled 33 to 14 computations (57.6% saved)

series9.0ms (0.2%)

Counts
3 → 48
Calls

18 calls:

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

rewrite71.0ms (1.4%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
0936
118726
2240126
Stop Event
node limit
Counts
3 → 90
Calls
Call 1
Inputs
(sqrt.f64 (atan2.f64 im re))
(/.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))
(/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (atan2.f64 im re))) (cbrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (atan2.f64 im re) 1/4) (pow.f64 (atan2.f64 im re) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (sqrt.f64 (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) 1/2) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (atan2.f64 im re) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (atan2.f64 im re) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (atan2.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (atan2.f64 im re) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (atan2.f64 im re) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (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 (sqrt.f64 (atan2.f64 im re)) (/.f64 (sqrt.f64 (atan2.f64 im re)) (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 (cbrt.f64 (atan2.f64 im re)) (*.f64 (cbrt.f64 (sqrt.f64 (atan2.f64 im re))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (atan2.f64 im re) 1/4) (*.f64 (pow.f64 (atan2.f64 im re) 1/4) (/.f64 (sqrt.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 (neg.f64 (sqrt.f64 (atan2.f64 im re))) (/.f64 1 (/.f64 (log.f64 1/10) (sqrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10)) (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 10)) (/.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (atan2.f64 im re) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 10)) (/.f64 (cbrt.f64 (sqrt.f64 (atan2.f64 im re))) (pow.f64 (atan2.f64 im re) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (atan2.f64 im re) 1/4) (log.f64 10)) (/.f64 (pow.f64 (atan2.f64 im re) 1/4) (pow.f64 (atan2.f64 im re) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (atan2.f64 im re)) 1) (/.f64 (cbrt.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 (/.f64 (pow.f64 (atan2.f64 im re) 1/4) 1) (/.f64 (pow.f64 (atan2.f64 im re) 1/4) (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (/.f64 (pow.f64 (log.f64 10) 2) (atan2.f64 im re)))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (/.f64 (pow.f64 (log.f64 10) 2) (atan2.f64 im re)))) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (atan2.f64 im re) 1/4) (cbrt.f64 (/.f64 (pow.f64 (log.f64 10) 2) (atan2.f64 im re)))) (/.f64 (pow.f64 (atan2.f64 im re) 1/4) (cbrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (atan2.f64 im re)) (sqrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))) (/.f64 (cbrt.f64 (sqrt.f64 (atan2.f64 im re))) (sqrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))))))) (#(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 (sqrt.f64 (atan2.f64 im re)) (log.f64 1/10)) (neg.f64 (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10)) 1) (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10)) (cbrt.f64 (atan2.f64 im re))) (cbrt.f64 (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10)) (pow.f64 (atan2.f64 im re) 1/4)) (pow.f64 (atan2.f64 im re) 1/4))))) (#(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 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 1/10) (sqrt.f64 (atan2.f64 im re)))))))) (#(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/2) (pow.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))) 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))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 10) (pow.f64 (atan2.f64 im re) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))) (cbrt.f64 (/.f64 (pow.f64 (log.f64 10) 2) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (pow.f64 (log.f64 10) 2) (atan2.f64 im re))) (cbrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 10)) 2) (*.f64 (cbrt.f64 (log.f64 10)) (pow.f64 (atan2.f64 im re) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))) (sqrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 10)) (*.f64 (sqrt.f64 (log.f64 10)) (pow.f64 (atan2.f64 im re) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 1/10) (/.f64 1 (neg.f64 (sqrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (atan2.f64 im re) -1/2) (log.f64 10))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (atan2.f64 im re))) (/.f64 (log.f64 10) (cbrt.f64 (sqrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (atan2.f64 im re) 1/4)) (/.f64 (log.f64 10) (pow.f64 (atan2.f64 im re) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (log.f64 10)) 2) 1) (/.f64 (cbrt.f64 (log.f64 10)) (sqrt.f64 (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)) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (log.f64 10)) 2) (cbrt.f64 (atan2.f64 im re))) (cbrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (log.f64 10)) (cbrt.f64 (atan2.f64 im re))) (/.f64 (sqrt.f64 (log.f64 10)) (cbrt.f64 (sqrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (log.f64 10)) 2) (pow.f64 (atan2.f64 im re) 1/4)) (/.f64 (cbrt.f64 (log.f64 10)) (pow.f64 (atan2.f64 im re) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (log.f64 10) (neg.f64 (sqrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 (pow.f64 (log.f64 10) 2) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 10 (pow.f64 (atan2.f64 im re) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (sqrt.f64 (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/2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (pow.f64 10 (pow.f64 (atan2.f64 im re) -1/2)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re)))))))))

simplify16.0ms (0.3%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
1-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
011552
114552
Stop Event
saturated
Counts
138 → 92
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 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
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 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))
(*.f64 (log.f64 10) (sqrt.f64 (/.f64 1 (atan2.f64 im re))))

localize23.0ms (0.4%)

Local error

Found 2 expressions with local error:

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

Compiled 39 to 29 computations (25.6% saved)

series5.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite73.0ms (1.4%)

Algorithm
batch-egg-rewrite
Rules
503×log-prod_binary64
388×prod-exp_binary64
387×exp-prod_binary64
292×pow-prod-down_binary64
259×pow2_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01120
122220
2271820
Stop Event
node limit
Counts
2 → 153
Calls
Call 1
Inputs
(*.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))
(/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (atan2.f64 im re) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (*.f64 (sqrt.f64 (log.f64 10)) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (*.f64 (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)) (sqrt.f64 (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 (sqrt.f64 (log.f64 10)) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (log.f64 10) -1/2) (/.f64 (sqrt.f64 (log.f64 10)) (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 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (sqrt.f64 (log.f64 10)))))) (#(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 (cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 2) (log.f64 10))) (/.f64 (sqrt.f64 (log.f64 10)) (cbrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))))) (#(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 (sqrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (/.f64 (sqrt.f64 (log.f64 10)) (sqrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (*.f64 (neg.f64 (sqrt.f64 (log.f64 10))) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (*.f64 (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)) (neg.f64 (sqrt.f64 (log.f64 10)))))))) (#(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 (neg.f64 (atan2.f64 im re)) (*.f64 (neg.f64 (sqrt.f64 (log.f64 10))) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (log.f64 10)) (neg.f64 (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (neg.f64 (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1 (neg.f64 (atan2.f64 im re))) (pow.f64 (neg.f64 (sqrt.f64 (log.f64 10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 (atan2.f64 im re)) 1) (*.f64 (neg.f64 (sqrt.f64 (log.f64 10))) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (atan2.f64 im re) -1) (*.f64 (sqrt.f64 (log.f64 10)) (neg.f64 (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 (atan2.f64 im re)) -1) (pow.f64 (neg.f64 (sqrt.f64 (log.f64 10))) 2))))) (#(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 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (pow.f64 (log.f64 10) 1/4)) (pow.f64 (log.f64 10) 1/4))))) (#(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 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) 1) (sqrt.f64 (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (cbrt.f64 (log.f64 10))) (pow.f64 (log.f64 10) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -1 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (neg.f64 (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 (atan2.f64 im re)) (pow.f64 (log.f64 10) -1/2)) (neg.f64 (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (log.f64 10) -1/2) (neg.f64 (atan2.f64 im re))) (neg.f64 (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) -1) (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)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 2) 1/2)))) (#(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 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) 3) (pow.f64 (log.f64 10) 3/2)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 (log.f64 10)) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)) (sqrt.f64 (log.f64 10))) -1)))) (#(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 (sqrt.f64 (log.f64 10)) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (log.f64 10) -1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2)) (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))) (sqrt.f64 (log.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 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 log.f64 (+.f64 1 (expm1.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 cbrt.f64 (/.f64 (pow.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) 3) (pow.f64 (log.f64 10) 3/2)))))) (#(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 exp.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) -1) (log.f64 (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (*.f64 -1/2 (log.f64 (log.f64 10))) 1) (log.f64 (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) (log.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (atan2.f64 im re)) (*.f64 (log.f64 (log.f64 10)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) (*.f64 (log.f64 (log.f64 10)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 1) (log.f64 (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (*.f64 (log.f64 (log.f64 10)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 1) (*.f64 (log.f64 (log.f64 10)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 1) (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) -1) (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (*.f64 -1/2 (log.f64 (log.f64 10))) 1) (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 -1/2 (log.f64 (log.f64 10))) (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) -1) (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (*.f64 -1/2 (log.f64 (log.f64 10))) 1) (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) (neg.f64 (log.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 1) (*.f64 -1/2 (log.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 1) (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (*.f64 (*.f64 -1/2 (log.f64 (log.f64 10))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 1) (*.f64 (*.f64 -1/2 (log.f64 (log.f64 10))) 1)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 10) -1/2) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (pow.f64 (log.f64 10) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (pow.f64 (log.f64 10) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 1 (log.f64 10))) (*.f64 (pow.f64 (log.f64 10) -1/6) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 2) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 2) (log.f64 10))) (cbrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (log.f64 10) -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 10) -1/4) (/.f64 (atan2.f64 im re) (pow.f64 (log.f64 10) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 10) -1/4) (*.f64 (pow.f64 (log.f64 10) -1/4) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (sqrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (atan2.f64 im re)) (/.f64 1 (neg.f64 (sqrt.f64 (log.f64 10)))))))) (#(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)) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (sqrt.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 (log.f64 10))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (log.f64 10) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (pow.f64 (log.f64 10) 1/6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (cbrt.f64 (log.f64 10))) (cbrt.f64 (/.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) (pow.f64 (log.f64 10) 1/4)) (/.f64 (cbrt.f64 (atan2.f64 im re)) (pow.f64 (log.f64 10) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (log.f64 10) -1/2) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (log.f64 10) -1/2) (sqrt.f64 (atan2.f64 im re))) (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (atan2.f64 im re) (cbrt.f64 (/.f64 1 (log.f64 10)))) (pow.f64 (log.f64 10) -1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 10) -1/4)) (pow.f64 (log.f64 10) -1/4))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (atan2.f64 im re) 2) (log.f64 10)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 10) 3/2)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (log.f64 10) -1/6) (cbrt.f64 (atan2.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))) 2)) (cbrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))))) (sqrt.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 2) (log.f64 10)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (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/2)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) (log.f64 (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (atan2.f64 im re)) (*.f64 (log.f64 (log.f64 10)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) (*.f64 (log.f64 (log.f64 10)) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (log.f64 (atan2.f64 im re)) (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (-.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) -1) (log.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (*.f64 -1/2 (log.f64 (log.f64 10))) 1) (log.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 -1/2 (log.f64 (log.f64 10))) (*.f64 (log.f64 (atan2.f64 im re)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) -1) (*.f64 (log.f64 (atan2.f64 im re)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (*.f64 -1/2 (log.f64 (log.f64 10))) 1) (*.f64 (log.f64 (atan2.f64 im re)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) (*.f64 -1/2 (log.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (atan2.f64 im re)) (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) (*.f64 (log.f64 (sqrt.f64 (log.f64 10))) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (atan2.f64 im re)) (*.f64 (*.f64 -1/2 (log.f64 (log.f64 10))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) (*.f64 (*.f64 -1/2 (log.f64 (log.f64 10))) 1)))))))

simplify15.0ms (0.3%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
1-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
011552
114552
Stop Event
saturated
Counts
201 → 155
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 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
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 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (sqrt.f64 (/.f64 1 (log.f64 10))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))

eval234.0ms (4.5%)

Compiler

Compiled 9182 to 6187 computations (32.6% saved)

prune162.0ms (3.1%)

Pruning

7 alts after pruning (4 fresh and 3 done)

PrunedKeptTotal
New6284632
Fresh000
Picked101
Done336
Total6327639
Error
0b
Counts
639 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
6.9b
(cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3))
0.9b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
0.9b
(/.f64 (pow.f64 (log.f64 10) -1/2) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)))
0.1b
(neg.f64 (/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re))))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
0.2b
(neg.f64 (/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re))))
Compiler

Compiled 76 to 62 computations (18.4% saved)

localize43.0ms (0.8%)

Local error

Found 3 expressions with local error:

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

Compiled 34 to 21 computations (38.2% saved)

series12.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

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

rewrite106.0ms (2%)

Algorithm
batch-egg-rewrite
Rules
933×pow1_binary64
874×add-log-exp_binary64
874×log1p-expm1-u_binary64
874×expm1-log1p-u_binary64
853×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01026
120624
2239624
Stop Event
node limit
Counts
2 → 37
Calls
Call 1
Inputs
(cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3))
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)) (cbrt.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6))) (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2)) (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6)) 1/3) (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2) 1/3) (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 (/.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) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1) (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6)))))) (#(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 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6)) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 10) -3) (pow.f64 (/.f64 1 (atan2.f64 im re)) -3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) 2) -3) (pow.f64 (cbrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -3) (pow.f64 (sqrt.f64 (/.f64 (log.f64 10) (atan2.f64 im re))) -3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6)) 1) (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6)) (cbrt.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6)))) (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6)) (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2))) (cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 -3 (log.f64 (/.f64 (log.f64 10) (atan2.f64 im re)))))))))

simplify182.0ms (3.5%)

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
85 → 40
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)

localize18.0ms (0.3%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(/.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)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.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
@-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
im
@-inf
(/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))

rewrite56.0ms (1.1%)

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

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

localize21.0ms (0.4%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(/.f64 1 (atan2.f64 im re))
0.8b
(/.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
3 → 24
Calls

12 calls:

TimeVariablePointExpression
0.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)))

rewrite68.0ms (1.3%)

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
01028
120822
2256522
Stop Event
node limit
Counts
3 → 77
Calls
Call 1
Inputs
(/.f64 1 (log.f64 1/10))
(/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re)))
(/.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))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.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 (/.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 -1 (/.f64 -1 (atan2.f64 im re)))))) (#(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 log.f64 (+.f64 1 (expm1.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))))))))

simplify10.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07216
Stop Event
saturated
Counts
101 → 78
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))

localize26.0ms (0.5%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(/.f64 (pow.f64 (log.f64 10) -1/2) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)))
0.8b
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
Compiler

Compiled 37 to 27 computations (27% saved)

series7.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite69.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
555×log-prod_binary64
422×exp-prod_binary64
289×pow2_binary64
288×pow-prod-down_binary64
201×pow1/3_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01130
123623
2299023
Stop Event
node limit
Counts
2 → 104
Calls
Call 1
Inputs
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(/.f64 (pow.f64 (log.f64 10) -1/2) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log1p.f64 9)) (/.f64 1 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))) (cbrt.f64 (*.f64 (log1p.f64 9) (pow.f64 (atan2.f64 im re) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (log1p.f64 9) (pow.f64 (atan2.f64 im re) -2))) (cbrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log1p.f64 9)) (*.f64 (pow.f64 (log1p.f64 9) 1/6) (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))) (sqrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log1p.f64 9) 1/4) (*.f64 (pow.f64 (log1p.f64 9) 1/4) (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (sqrt.f64 (log1p.f64 9))) (/.f64 1 (neg.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log1p.f64 9)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (log1p.f64 9)) 1) (/.f64 (pow.f64 (log1p.f64 9) 1/6) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (log1p.f64 9) 1/4) 1) (/.f64 (pow.f64 (log1p.f64 9) 1/4) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) -2) (/.f64 (sqrt.f64 (log1p.f64 9)) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (log1p.f64 9)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (log1p.f64 9) 1/4) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (/.f64 (pow.f64 (log1p.f64 9) 1/4) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (atan2.f64 im re) -1/2) (/.f64 (sqrt.f64 (log1p.f64 9)) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (log1p.f64 9)) (sqrt.f64 (atan2.f64 im re))) (/.f64 (pow.f64 (log1p.f64 9) 1/6) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (log1p.f64 9) (pow.f64 (atan2.f64 im re) -2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (log1p.f64 9) 3/2) (pow.f64 (atan2.f64 im re) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))) 2)) (cbrt.f64 (log.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))) (sqrt.f64 (log.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (neg.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (log1p.f64 9) (pow.f64 (atan2.f64 im re) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (sqrt.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/2) (pow.f64 (atan2.f64 im re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)) 3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9)))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))) 1) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (atan2.f64 im re)) (/.f64 1 (log1p.f64 9)))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (atan2.f64 im re)) (/.f64 1 (log1p.f64 9))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (atan2.f64 im re)) (/.f64 1 (log1p.f64 9))))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (atan2.f64 im re)) (/.f64 1 (log1p.f64 9))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9))))) 1)))) (#(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 (pow.f64 (log1p.f64 9) -1/2) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (atan2.f64 im re) (/.f64 1 (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 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))) (pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))) 2) (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 1 (log1p.f64 9))) (*.f64 (pow.f64 (log1p.f64 9) -1/6) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (log1p.f64 9) -1/2) (sqrt.f64 (atan2.f64 im re))) (*.f64 (pow.f64 (log1p.f64 9) -1/2) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (pow.f64 (log1p.f64 9) -1/2)) (/.f64 1 (/.f64 (neg.f64 (sqrt.f64 (log1p.f64 9))) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))) (pow.f64 (log1p.f64 9) -1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log1p.f64 9) -1/4) (*.f64 (pow.f64 (log1p.f64 9) -1/4) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log1p.f64 9) -3/4) (/.f64 (pow.f64 (log1p.f64 9) -1/4) (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (/.f64 1 (log1p.f64 9))) (sqrt.f64 (log1p.f64 9))) (/.f64 (pow.f64 (log1p.f64 9) -1/6) (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (/.f64 1 (log1p.f64 9))) 1) (/.f64 (pow.f64 (log1p.f64 9) -1/6) (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (log1p.f64 9) -1/4) 1) (/.f64 (pow.f64 (log1p.f64 9) -1/4) (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re))) -2) (/.f64 (pow.f64 (log1p.f64 9) -1/2) (cbrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (/.f64 1 (log1p.f64 9))) (cbrt.f64 (*.f64 (log1p.f64 9) (pow.f64 (atan2.f64 im re) -2)))) (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (log1p.f64 9) -1/4) (cbrt.f64 (*.f64 (log1p.f64 9) (pow.f64 (atan2.f64 im re) -2)))) (/.f64 (pow.f64 (log1p.f64 9) -1/4) (cbrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)) -1/2) (/.f64 (pow.f64 (log1p.f64 9) -1/2) (sqrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (/.f64 1 (log1p.f64 9))) (sqrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))) (/.f64 (pow.f64 (log1p.f64 9) -1/6) (sqrt.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (log1p.f64 9) -1/2) 1) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (log1p.f64 9) -1/2) (neg.f64 (sqrt.f64 (log1p.f64 9)))) (neg.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1 (log1p.f64 9)) 1) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 1 (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 (/.f64 1 (log1p.f64 9)) (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) (/.f64 1 (log1p.f64 9))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (log1p.f64 9) -2) (pow.f64 (atan2.f64 im re) 2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))) 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 (/.f64 1 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (log1p.f64 9) -3/2) (pow.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 1 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (log1p.f64 9) -1/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9))))) 2)) (cbrt.f64 (log.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))))) (sqrt.f64 (log.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9))))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (pow.f64 (log1p.f64 9) -1/2) (/.f64 (neg.f64 (sqrt.f64 (log1p.f64 9))) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (log1p.f64 9) -2) (pow.f64 (atan2.f64 im re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (atan2.f64 im re)) (/.f64 1 (log1p.f64 9))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (log1p.f64 9) -3/2) (pow.f64 (/.f64 (sqrt.f64 (log1p.f64 9)) (atan2.f64 im re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9))) 3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9))))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 (log1p.f64 9) -1/2) (sqrt.f64 (atan2.f64 im re)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (neg.f64 (log.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9))))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log1p.f64 9)))) 1) 1))))))

simplify23.0ms (0.4%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
*-rgt-identity_binary64
associate-*l*_binary64
associate-*r/_binary64
associate-/r*_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
011552
116480
221480
330480
433480
535480
Stop Event
saturated
Counts
152 → 107
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (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 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (sqrt.f64 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
(/.f64 (sqrt.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))

eval117.0ms (2.2%)

Compiler

Compiled 5172 to 3788 computations (26.8% saved)

prune53.0ms (1%)

Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New3540354
Fresh000
Picked011
Done066
Total3547361
Error
0b
Counts
361 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
6.9b
(cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3))
0.9b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
0.9b
(/.f64 (pow.f64 (log.f64 10) -1/2) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)))
0.1b
(neg.f64 (/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re))))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
0.2b
(neg.f64 (/.f64 (/.f64 1 (log.f64 1/10)) (/.f64 1 (atan2.f64 im re))))
Compiler

Compiled 76 to 62 computations (18.4% saved)

regimes39.0ms (0.7%)

Counts
16 → 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))))
(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))
(exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))
(cbrt.f64 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -3))
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 10)) 3))
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
(cbrt.f64 (/.f64 1 (pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) 3)))
(/.f64 (pow.f64 (log.f64 10) -1/2) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)))
(/.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 10) (sqrt.f64 (atan2.f64 im re))))
(*.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))
(*.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))
Outputs
(neg.f64 (/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re))))
Calls

5 calls:

10.0ms
re
8.0ms
im
6.0ms
(/.f64 (atan2.f64 im re) (log.f64 10))
4.0ms
(/.f64 (atan2.f64 im re) (log.f64 10))
4.0ms
(atan2.f64 im re)
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 183 to 124 computations (32.2% saved)

regimes16.0ms (0.3%)

Accuracy

Total -0.8b remaining (-600.9%)

Threshold costs -0.8b (-600.9%)

Counts
3 → 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)))
Outputs
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
Calls

4 calls:

6.0ms
re
3.0ms
im
2.0ms
(/.f64 (atan2.f64 im re) (log.f64 10))
2.0ms
(atan2.f64 im re)
Results
ErrorSegmentsBranch
0.1b1re
0.1b1im
0.1b1(/.f64 (atan2.f64 im re) (log.f64 10))
0.1b1(atan2.f64 im re)
Compiler

Compiled 42 to 28 computations (33.3% saved)

simplify4.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
01532
12632
23232
33632
43732
Stop Event
done
saturated
Calls
Call 1
Inputs
(neg.f64 (/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re))))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (atan2.f64 im re) (log.f64 10))
Outputs
(neg.f64 (/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re))))
(/.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(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 27 to 21 computations (22.2% saved)

soundness0.0ms (0%)

end26.0ms (0.5%)

Compiler

Compiled 23 to 15 computations (34.8% saved)

Profiling

Loading profile data...