Details

Time bar (total: 3.0s)

analyze2.0ms (0.1%)

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

Compiled 9 to 7 computations (22.2% saved)

sample1.2s (39.5%)

Results
1.2s8256×body256valid

preprocess18.0ms (0.6%)

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.2%)

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.8b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.8b
(/.f64 (atan2.f64 im re) (log.f64 10))
Compiler

Compiled 8 to 6 computations (25% saved)

localize12.0ms (0.4%)

Local error

Found 1 expressions with local error:

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

Compiled 16 to 9 computations (43.8% saved)

series54.0ms (1.8%)

Counts
1 → 0
Calls

6 calls:

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

rewrite72.0ms (2.4%)

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

simplify16.0ms (0.5%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

eval17.0ms (0.6%)

Compiler

Compiled 360 to 227 computations (36.9% saved)

prune17.0ms (0.6%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New27431
Fresh000
Picked011
Done000
Total27532
Error
0b
Counts
32 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
1.1b
(pow.f64 (/.f64 (log.f64 10) (atan2.f64 im re)) -1)
1.5b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 10))) 3)
0.8b
(*.f64 (/.f64 1 (sqrt.f64 (log.f64 10))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 10))))
0.8b
(/.f64 (atan2.f64 im re) (log.f64 10))
Compiler

Compiled 53 to 43 computations (18.9% saved)

localize30.0ms (1%)

Local error

Found 2 expressions with local error:

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

Compiled 23 to 13 computations (43.5% saved)

series53.0ms (1.8%)

Counts
2 → 0
Calls

6 calls:

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

rewrite126.0ms (4.2%)

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

simplify11.0ms (0.4%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

localize49.0ms (1.6%)

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)

series15.0ms (0.5%)

Counts
2 → 48
Calls

12 calls:

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

rewrite145.0ms (4.8%)

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

simplify29.0ms (1%)

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

localize38.0ms (1.3%)

Local error

Found 3 expressions with local error:

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

Compiled 33 to 20 computations (39.4% saved)

series31.0ms (1%)

Counts
2 → 48
Calls

12 calls:

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

rewrite88.0ms (2.9%)

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

Useful iterations: 0 (0.0ms)

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

simplify248.0ms (8.2%)

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.6%)

Local error

Found 2 expressions with local error:

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

Compiled 25 to 15 computations (40% saved)

series8.0ms (0.3%)

Counts
2 → 24
Calls

12 calls:

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

rewrite61.0ms (2%)

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

Useful iterations: 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.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
07216
Stop Event
saturated
Counts
95 → 71
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.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))

eval132.0ms (4.3%)

Compiler

Compiled 5347 to 3801 computations (28.9% saved)

prune52.0ms (1.7%)

Pruning

4 alts after pruning (2 fresh and 2 done)

PrunedKeptTotal
New3752377
Fresh000
Picked101
Done224
Total3784382
Error
0b
Counts
382 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.4b
(neg.f64 (pow.f64 (/.f64 (log.f64 1/10) (atan2.f64 im re)) -1))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
1.1b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.8b
(/.f64 (atan2.f64 im re) (log.f64 10))
Compiler

Compiled 38 to 30 computations (21.1% saved)

localize22.0ms (0.7%)

Local error

Found 3 expressions with local error:

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

Compiled 34 to 21 computations (38.2% saved)

series8.0ms (0.3%)

Counts
2 → 24
Calls

12 calls:

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

rewrite62.0ms (2%)

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

simplify13.0ms (0.4%)

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.4%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.3b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.8b
(/.f64 (log.f64 10) (atan2.f64 im re))
Compiler

Compiled 25 to 15 computations (40% saved)

series2.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite55.0ms (1.8%)

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.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

eval55.0ms (1.8%)

Compiler

Compiled 2031 to 1394 computations (31.4% saved)

prune35.0ms (1.1%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New1531154
Fresh000
Picked011
Done123
Total1544158
Error
0b
Counts
158 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
1.1b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
0.4b
(neg.f64 (/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re))))
0.8b
(/.f64 (atan2.f64 im re) (log.f64 10))
Compiler

Compiled 38 to 30 computations (21.1% saved)

localize39.0ms (1.3%)

Local error

Found 3 expressions with local error:

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

Compiled 34 to 21 computations (38.2% saved)

series2.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite58.0ms (1.9%)

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

Useful iterations: 1 (0.0ms)

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

simplify11.0ms (0.4%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

eval27.0ms (0.9%)

Compiler

Compiled 1120 to 787 computations (29.7% saved)

prune14.0ms (0.5%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New83083
Fresh000
Picked011
Done033
Total83487
Error
0b
Counts
87 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
1.1b
(/.f64 1 (/.f64 (log.f64 10) (atan2.f64 im re)))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
0.4b
(neg.f64 (/.f64 1 (/.f64 (log.f64 1/10) (atan2.f64 im re))))
0.8b
(/.f64 (atan2.f64 im re) (log.f64 10))
Compiler

Compiled 38 to 30 computations (21.1% saved)

regimes25.0ms (0.8%)

Accuracy

Total -1.7b remaining (-1171.5%)

Threshold costs -1.7b (-1171.5%)

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

5 calls:

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

Compiled 98 to 67 computations (31.6% saved)

simplify4.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

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

Compiled 17 to 13 computations (23.5% saved)

soundness0.0ms (0%)

end21.0ms (0.7%)

Compiler

Compiled 15 to 10 computations (33.3% saved)

Profiling

Loading profile data...