Details

Time bar (total: 4.5s)

analyze1.0ms (0%)

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

Compiled 9 to 7 computations (22.2% saved)

sample965.0ms (21.4%)

Results
954.0ms8256×body256valid

preprocess18.0ms (0.4%)

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)

series35.0ms (0.8%)

Counts
1 → 0
Calls

6 calls:

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

rewrite685.0ms (15.2%)

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

Useful iterations: 0 (0.0ms)

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

simplify6.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

eval8.0ms (0.2%)

Compiler

Compiled 360 to 227 computations (36.9% saved)

prune18.0ms (0.4%)

Pruning

8 alts after pruning (7 fresh and 1 done)

PrunedKeptTotal
New24731
Fresh000
Picked011
Done000
Total24832
Error
0b
Counts
32 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.9b
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)
2.1b
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 10))))
30.4b
(*.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 10)))
0.2b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
29.7b
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)
1.6b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
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))))
Compiler

Compiled 188 to 142 computations (24.5% saved)

localize15.0ms (0.3%)

Local error

Found 2 expressions with local error:

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

Compiled 23 to 13 computations (43.5% saved)

series29.0ms (0.6%)

Counts
2 → 0
Calls

6 calls:

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

rewrite57.0ms (1.3%)

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

simplify7.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

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

series9.0ms (0.2%)

Counts
2 → 24
Calls

12 calls:

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

rewrite61.0ms (1.4%)

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

localize22.0ms (0.5%)

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

Compiled 33 to 20 computations (39.4% saved)

series19.0ms (0.4%)

Counts
2 → 48
Calls

12 calls:

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

rewrite65.0ms (1.4%)

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

simplify222.0ms (4.9%)

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

localize18.0ms (0.4%)

Local error

Found 3 expressions with local error:

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

Compiled 33 to 20 computations (39.4% saved)

series6.0ms (0.1%)

Counts
2 → 24
Calls

12 calls:

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

rewrite63.0ms (1.4%)

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

Useful iterations: 0 (0.0ms)

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

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

localize24.0ms (0.5%)

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)

series6.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)))
1.0ms
im
@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)))

rewrite74.0ms (1.7%)

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

simplify16.0ms (0.4%)

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

eval161.0ms (3.6%)

Compiler

Compiled 6711 to 4704 computations (29.9% saved)

prune75.0ms (1.7%)

Pruning

12 alts after pruning (8 fresh and 4 done)

PrunedKeptTotal
New4718479
Fresh202
Picked101
Done145
Total47512487
Error
0b
Counts
487 → 12
Alt Table
Click to see full alt table
StatusErrorProgram
1.6b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
0.9b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
0.8b
(/.f64 (pow.f64 (log.f64 10) -1/2) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)))
1.3b
(/.f64 (/.f64 1 (log.f64 10)) (/.f64 1 (atan2.f64 im re)))
0.9b
(/.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (sqrt.f64 (log.f64 10)))
0.2b
(pow.f64 (*.f64 (log.f64 1/10) (/.f64 1 (neg.f64 (atan2.f64 im re)))) -1)
0.1b
(neg.f64 (pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1))
0.2b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
29.7b
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)
31.2b
(neg.f64 (exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))))
29.7b
(pow.f64 (sqrt.f64 (neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))) 2)
Compiler

Compiled 231 to 191 computations (17.3% 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)

series9.0ms (0.2%)

Counts
2 → 24
Calls

12 calls:

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

rewrite65.0ms (1.4%)

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

localize13.0ms (0.3%)

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

rewrite53.0ms (1.2%)

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

localize19.0ms (0.4%)

Local error

Found 4 expressions with local error:

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

Compiled 42 to 23 computations (45.2% saved)

series11.0ms (0.2%)

Counts
3 → 72
Calls

18 calls:

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

rewrite69.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
941×pow1_binary64
874×add-log-exp_binary64
872×log1p-expm1-u_binary64
872×expm1-log1p-u_binary64
115×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify42.0ms (0.9%)

Algorithm
egg-herbie
Rules
28×fma-def_binary64
18×sub-neg_binary64
10×+-commutative_binary64
div-sub_binary64
fma-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
012696
120696
231696
342696
453696
569696
684696
7101696
8120696
9150696
10152696
Stop Event
saturated
Counts
143 → 75
Calls
Call 1
Inputs
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
Outputs
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(neg.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(/.f64 (neg.f64 (log.f64 1/10)) (atan2.f64 im re))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))
(/.f64 -1 (atan2.f64 im re))

localize23.0ms (0.5%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(pow.f64 (sqrt.f64 (neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))) 2)
0.9b
(/.f64 (atan2.f64 im re) (log.f64 1/10))
1.0b
(log.f64 1/10)
3.4b
(sqrt.f64 (neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
Compiler

Compiled 42 to 26 computations (38.1% saved)

series9.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

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

rewrite66.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
867×pow1_binary64
808×add-log-exp_binary64
807×log1p-expm1-u_binary64
807×expm1-log1p-u_binary64
790×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify134.0ms (3%)

Algorithm
egg-herbie
Rules
934×associate-*l/_binary64
749×associate-/l/_binary64
583×associate-*r/_binary64
467×associate-*l*_binary64
408×sqr-pow_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
015792
124672
242648
376648
4176648
5570648
62333648
73328648
83548648
93849648
104412648
114712648
125668648
136602648
Stop Event
node limit
Counts
139 → 92
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
Outputs
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 1/10))
(/.f64 (pow.f64 (sqrt.f64 -1) 2) (/.f64 (log.f64 1/10) (atan2.f64 im re)))
(*.f64 (/.f64 -1 (log.f64 1/10)) (atan2.f64 im re))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))

localize26.0ms (0.6%)

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)

series9.0ms (0.2%)

Counts
2 → 48
Calls

12 calls:

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

rewrite73.0ms (1.6%)

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

simplify21.0ms (0.5%)

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

eval172.0ms (3.8%)

Compiler

Compiled 6706 to 4713 computations (29.7% saved)

prune77.0ms (1.7%)

Pruning

10 alts after pruning (4 fresh and 6 done)

PrunedKeptTotal
New4863489
Fresh213
Picked011
Done358
Total49110501
Error
0b
Counts
501 → 10
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(/.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
1.6b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
0.9b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
0.8b
(/.f64 (pow.f64 (log.f64 10) -1/2) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)))
0.9b
(/.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (sqrt.f64 (log.f64 10)))
0.9b
(*.f64 (/.f64 1 (log.f64 10)) (pow.f64 (/.f64 1 (atan2.f64 im re)) -1))
0.2b
(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))))
29.7b
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)
Compiler

Compiled 113 to 93 computations (17.7% saved)

localize21.0ms (0.5%)

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

rewrite64.0ms (1.4%)

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

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

localize21.0ms (0.5%)

Local error

Found 4 expressions with local error:

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

Compiled 40 to 27 computations (32.5% saved)

series6.0ms (0.1%)

Counts
3 → 48
Calls

12 calls:

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

rewrite60.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
945×pow1_binary64
878×add-log-exp_binary64
876×log1p-expm1-u_binary64
876×expm1-log1p-u_binary64
114×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify10.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07312
Stop Event
saturated
Counts
124 → 76
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))
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(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))
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im re)

localize23.0ms (0.5%)

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 25 to 15 computations (40% saved)

series4.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite57.0ms (1.3%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
0912
118411
2223511
Stop Event
node limit
Counts
1 → 27
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 (neg.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 (neg.f64 (atan2.f64 im re)) (log.f64 1/10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))) (pow.f64 (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))) 2) (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))) (sqrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (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 (/.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 (*.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 (neg.f64 (atan2.f64 im re)) (log.f64 1/10)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/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 (/.f64 (log.f64 1/10) (neg.f64 (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 (neg.f64 (atan2.f64 im re)) (log.f64 1/10)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))))))))

simplify21.0ms (0.5%)

Algorithm
egg-herbie
Rules
14×fma-def_binary64
sub-neg_binary64
+-commutative_binary64
fma-neg_binary64
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
09264
113264
220264
326264
432264
540264
648264
758264
866264
980264
Stop Event
saturated
Counts
51 → 28
Calls
Call 1
Inputs
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
Outputs
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))

localize19.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 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (sqrt.f64 (log.f64 10)))
Compiler

Compiled 31 to 21 computations (32.3% saved)

series3.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite54.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
943×pow1_binary64
879×add-log-exp_binary64
879×log1p-expm1-u_binary64
879×expm1-log1p-u_binary64
859×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
099
11869
223949
Stop Event
node limit
Counts
1 → 43
Calls
Call 1
Inputs
(/.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (sqrt.f64 (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 (pow.f64 (log.f64 10) -1/2) (pow.f64 (log.f64 10) -1/2)))))) (#(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) (sqrt.f64 (log.f64 10))) (pow.f64 (log.f64 10) -1/2))))) (#(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 (pow.f64 (atan2.f64 im re) 2) (log.f64 10))) (*.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (pow.f64 (log.f64 10) -1/2)))))) (#(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) (sqrt.f64 (log.f64 10)))) (*.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (pow.f64 (log.f64 10) -1/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 (/.f64 (neg.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 10))) (/.f64 1 (neg.f64 (sqrt.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 (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 (atan2.f64 im re) (cbrt.f64 (log.f64 10))) (/.f64 (pow.f64 (log.f64 10) -1/2) (cbrt.f64 (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 (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 (atan2.f64 im re) 1) (/.f64 (pow.f64 (log.f64 10) -1/2) (sqrt.f64 (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 2) (log.f64 10))) 1) (/.f64 (cbrt.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 (sqrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) 1) (/.f64 (sqrt.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 1 (cbrt.f64 (log.f64 10))) (/.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (cbrt.f64 (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 2) (log.f64 10))) (cbrt.f64 (log.f64 10))) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (cbrt.f64 (log.f64 10))) (/.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (cbrt.f64 (sqrt.f64 (log.f64 10)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (pow.f64 (log.f64 10) 1/4)) (/.f64 (pow.f64 (log.f64 10) -1/2) (pow.f64 (log.f64 10) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (log.f64 10) 1/4)) (/.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (pow.f64 (log.f64 10) 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 2) (log.f64 10))) (pow.f64 (log.f64 10) 1/4)) (/.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10)))) (pow.f64 (log.f64 10) 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 1 (/.f64 (atan2.f64 im re) (log.f64 10))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.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 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 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))))))))

simplify9.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

eval177.0ms (3.9%)

Compiler

Compiled 5283 to 3806 computations (28% saved)

prune108.0ms (2.4%)

Pruning

12 alts after pruning (4 fresh and 8 done)

PrunedKeptTotal
New3754379
Fresh000
Picked011
Done279
Total37712389
Error
0b
Counts
389 → 12
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(/.f64 -1 (/.f64 (log.f64 1/10) (atan2.f64 im re)))
1.6b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
0.9b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.9b
(/.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))) (sqrt.f64 (log.f64 10)))
0.2b
(/.f64 -1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 1/10)))
0.9b
(*.f64 (/.f64 1 (log.f64 10)) (/.f64 1 (/.f64 1 (atan2.f64 im re))))
0.2b
(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))))
29.7b
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 2)
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
0.8b
(neg.f64 (/.f64 (-.f64 (exp.f64 (log1p.f64 (/.f64 -1 (log.f64 10)))) 1) (/.f64 1 (atan2.f64 im re))))
32.3b
(/.f64 -1 (pow.f64 (sqrt.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re))) 2))
Compiler

Compiled 141 to 117 computations (17% saved)

regimes93.0ms (2.1%)

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

5 calls:

23.0ms
im
23.0ms
re
11.0ms
(/.f64 (atan2.f64 im re) (log.f64 10))
10.0ms
(/.f64 (atan2.f64 im re) (log.f64 10))
10.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 270 to 186 computations (31.1% saved)

regimes27.0ms (0.6%)

Accuracy

Total -0.8b remaining (-523.8%)

Threshold costs -0.8b (-523.8%)

Counts
2 → 1
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
Outputs
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
Calls

4 calls:

8.0ms
re
7.0ms
im
5.0ms
(/.f64 (atan2.f64 im re) (log.f64 10))
5.0ms
(atan2.f64 im re)
Results
ErrorSegmentsBranch
0.2b1re
0.2b1im
0.2b1(/.f64 (atan2.f64 im re) (log.f64 10))
0.2b1(atan2.f64 im re)
Compiler

Compiled 34 to 23 computations (32.4% saved)

simplify7.0ms (0.2%)

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
01432
11932
22332
32632
42732
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(/.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
(/.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%)

end51.0ms (1.1%)

Compiler

Compiled 23 to 15 computations (34.8% saved)

Profiling

Loading profile data...