Details

Time bar (total: 9.1s)

analyze377.0ms (4.1%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
0%99.9%0.1%5
0%99.9%0.1%6
25%49.9%25.1%7
25%49.9%25.1%8
25%49.9%25.1%9
37.4%25%37.6%10
37.4%25%37.6%11
37.4%25%37.6%12
Compiler

Compiled 32 to 21 computations (34.4% saved)

sample2.9s (32.2%)

Results
2.3s8256×body256valid
628.0ms2100×body256invalid

preprocess91.0ms (1%)

Algorithm
egg-herbie
Rules
801×cube-prod_binary64
752×fma-neg_binary64
678×unswap-sqr_binary64
403×fma-def_binary64
341×associate-/l*_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
05080
113776
222748
332936
440736
599336
6243536
7350136
8410636
9421336
10441536
11493036
12681136
033
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(/.f64 (-.f64 (*.f64 (atan2.f64 im re) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) 0)) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 0 0)))
(/.f64 (-.f64 (*.f64 (atan2.f64 re im) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 im im) (*.f64 re re)))) 0)) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 0 0)))
(/.f64 (-.f64 (*.f64 (atan2.f64 im base) (log.f64 re)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 base base) (*.f64 im im)))) 0)) (+.f64 (*.f64 (log.f64 re) (log.f64 re)) (*.f64 0 0)))
(/.f64 (-.f64 (*.f64 (atan2.f64 base re) (log.f64 im)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 base base)))) 0)) (+.f64 (*.f64 (log.f64 im) (log.f64 im)) (*.f64 0 0)))
Outputs
(/.f64 (-.f64 (*.f64 (atan2.f64 im re) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) 0)) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 0 0)))
(/.f64 (fma.f64 (atan2.f64 im re) (log.f64 base) 0) (*.f64 (log.f64 base) (log.f64 base)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (/.f64 (log.f64 base) (log.f64 base)))
(/.f64 (/.f64 (atan2.f64 im re) 1) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (-.f64 (*.f64 (atan2.f64 re im) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 im im) (*.f64 re re)))) 0)) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 0 0)))
(/.f64 (fma.f64 (atan2.f64 re im) (log.f64 base) 0) (*.f64 (log.f64 base) (log.f64 base)))
(*.f64 (/.f64 (log.f64 base) (log.f64 base)) (/.f64 (atan2.f64 re im) (log.f64 base)))
(*.f64 1 (/.f64 (atan2.f64 re im) (log.f64 base)))
(/.f64 (atan2.f64 re im) (log.f64 base))
(/.f64 (-.f64 (*.f64 (atan2.f64 im base) (log.f64 re)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 base base) (*.f64 im im)))) 0)) (+.f64 (*.f64 (log.f64 re) (log.f64 re)) (*.f64 0 0)))
(/.f64 (fma.f64 (atan2.f64 im base) (log.f64 re) 0) (*.f64 (log.f64 re) (log.f64 re)))
(/.f64 (atan2.f64 im base) (/.f64 (*.f64 (log.f64 re) (log.f64 re)) (log.f64 re)))
(/.f64 (atan2.f64 im base) (/.f64 (log.f64 re) 1))
(/.f64 (atan2.f64 im base) (log.f64 re))
(/.f64 (-.f64 (*.f64 (atan2.f64 base re) (log.f64 im)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 base base)))) 0)) (+.f64 (*.f64 (log.f64 im) (log.f64 im)) (*.f64 0 0)))
(/.f64 (fma.f64 (atan2.f64 base re) (log.f64 im) 0) (*.f64 (log.f64 im) (log.f64 im)))
(/.f64 (atan2.f64 base re) (/.f64 (*.f64 (log.f64 im) (log.f64 im)) (log.f64 im)))
(/.f64 (atan2.f64 base re) (/.f64 (log.f64 im) 1))
(/.f64 (atan2.f64 base re) (log.f64 im))
Compiler

Compiled 34 to 23 computations (32.4% saved)

simplify74.0ms (0.8%)

Algorithm
egg-herbie
Rules
877×fma-def_binary64
692×fma-neg_binary64
640×cube-prod_binary64
454×associate-/l*_binary64
447×sqr-pow_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01920
14119
26812
3949
41159
52739
610679
724959
835459
953049
1059099
1169949
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(/.f64 (-.f64 (*.f64 (atan2.f64 im re) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) 0)) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 0 0)))
Outputs
(/.f64 (-.f64 (*.f64 (atan2.f64 im re) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) 0)) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 0 0)))
(/.f64 (fma.f64 (atan2.f64 im re) (log.f64 base) 0) (*.f64 (log.f64 base) (log.f64 base)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (/.f64 (log.f64 base) (log.f64 base)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)
(/.f64 (atan2.f64 im re) (log.f64 base))

eval1.0ms (0%)

Compiler

Compiled 37 to 21 computations (43.2% saved)

prune2.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.3b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
33.0b
(/.f64 (-.f64 (*.f64 (atan2.f64 im re) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) 0)) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 0 0)))
0.3b
(/.f64 (atan2.f64 im re) (log.f64 base))
Compiler

Compiled 40 to 26 computations (35% saved)

localize83.0ms (0.9%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(/.f64 (-.f64 (*.f64 (atan2.f64 im re) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) 0)) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 0 0)))
0.4b
(*.f64 (atan2.f64 im re) (log.f64 base))
0.5b
(*.f64 (log.f64 base) (log.f64 base))
30.9b
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
Compiler

Compiled 122 to 33 computations (73% saved)

series102.0ms (1.1%)

Counts
4 → 108
Calls

27 calls:

TimeVariablePointExpression
39.0ms
base
@0
(*.f64 (log.f64 base) (log.f64 base))
20.0ms
base
@-inf
(*.f64 (log.f64 base) (log.f64 base))
13.0ms
im
@0
(*.f64 (atan2.f64 im re) (log.f64 base))
8.0ms
base
@inf
(*.f64 (log.f64 base) (log.f64 base))
5.0ms
re
@0
(*.f64 (atan2.f64 im re) (log.f64 base))

rewrite98.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
598×prod-diff_binary64
354×fma-def_binary64
299×fma-neg_binary64
251×expm1-udef_binary64
251×log1p-udef_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01937
141428
2505828
Stop Event
node limit
Counts
4 → 216
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))
(*.f64 (log.f64 base) (log.f64 base))
(*.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (-.f64 (*.f64 (atan2.f64 im re) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) 0)) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 0 0)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (hypot.f64 re im))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 re im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) (cbrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 re im)) (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (hypot.f64 re im)) (sqrt.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 2)) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 2) 1/2) (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 re im)) 2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (hypot.f64 (pow.f64 re 3) (pow.f64 im 3)) (sqrt.f64 (-.f64 (+.f64 (pow.f64 re 4) (pow.f64 im 4)) (pow.f64 (*.f64 re im) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (-.f64 (pow.f64 re 4) (pow.f64 im 4))) (sqrt.f64 (-.f64 (*.f64 re re) (*.f64 im im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (hypot.f64 re im) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 re im) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (hypot.f64 re im)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (hypot.f64 re im)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (hypot.f64 re im)))) (sqrt.f64 (log.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (hypot.f64 re im))) 2)) (cbrt.f64 (log.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (hypot.f64 re im))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (hypot.f64 re im))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (hypot.f64 re im) 3))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 re im)))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 im re)))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (hypot.f64 re im)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (hypot.f64 re im))) 1/2))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (log.f64 base) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (pow.f64 (log.f64 base) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (pow.f64 (log.f64 base) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (log.f64 base) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (pow.f64 (log.f64 base) 4) (pow.f64 (log.f64 base) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (pow.f64 (log.f64 base) 2) (pow.f64 (log.f64 base) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (log.f64 base) 4) (pow.f64 (log.f64 base) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (log.f64 base) 6) (pow.f64 (log.f64 base) 4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (log.f64 base) 6)) (neg.f64 (pow.f64 (log.f64 base) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 0 (pow.f64 (log.f64 base) 4)) (neg.f64 (pow.f64 (log.f64 base) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (log.f64 base) 4)) (neg.f64 (pow.f64 (log.f64 base) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 base) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 base) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 base) 6) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) 3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 base) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 base (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (log.f64 base) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 base) 6))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (log.f64 base) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (log.f64 base) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 2 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (log.f64 base)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (log.f64 base))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 base) (log.f64 base) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 base) 2) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (pow.f64 (log.f64 base) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 base) 4) (pow.f64 (log.f64 base) -2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 base) 6) (/.f64 1 (pow.f64 (log.f64 base) 4)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (cbrt.f64 (pow.f64 (log.f64 base) 4)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (*.f64 (cbrt.f64 (log.f64 base)) (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (log.f64 base) 4)) (pow.f64 (cbrt.f64 (log.f64 base)) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 base)) (*.f64 (sqrt.f64 (log.f64 base)) (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 base) (sqrt.f64 (log.f64 base))) (sqrt.f64 (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 base) (pow.f64 (cbrt.f64 (log.f64 base)) 2)) (cbrt.f64 (log.f64 base)) 0)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (log.f64 base) (atan2.f64 im re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (*.f64 (log.f64 base) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3)) (neg.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2)) (neg.f64 (*.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) 1) (*.f64 (log.f64 base) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2)) (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re)))) (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 base (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (-.f64 (pow.f64 base (atan2.f64 im re)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (pow.f64 base (atan2.f64 im re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 base) (atan2.f64 im re) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 base) (atan2.f64 im re) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 base) (atan2.f64 im re) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (atan2.f64 im re) (log.f64 base) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (atan2.f64 im re) (log.f64 base) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (atan2.f64 im re) (log.f64 base) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 1 (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 1 (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (log.f64 base) (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (log.f64 base) (atan2.f64 im re)) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 (log.f64 base) (atan2.f64 im re)) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (/.f64 1 (*.f64 (log.f64 base) (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (/.f64 1 (*.f64 (log.f64 base) (atan2.f64 im re))) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (/.f64 1 (*.f64 (log.f64 base) (atan2.f64 im re))) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (*.f64 (cbrt.f64 (log.f64 base)) (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (*.f64 (cbrt.f64 (log.f64 base)) (atan2.f64 im re)) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (*.f64 (cbrt.f64 (log.f64 base)) (atan2.f64 im re)) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 base)) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (log.f64 base)) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 base)) (*.f64 (sqrt.f64 (log.f64 base)) (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 base)) (*.f64 (sqrt.f64 (log.f64 base)) (atan2.f64 im re)) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 base)) (*.f64 (sqrt.f64 (log.f64 base)) (atan2.f64 im re)) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 base)) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 base)) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3) (/.f64 1 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3) (/.f64 1 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2)) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3) (/.f64 1 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2)) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3)) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3)) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3)) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2)) (*.f64 (log.f64 base) (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2)) (*.f64 (log.f64 base) (atan2.f64 im re)) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2)) (*.f64 (log.f64 base) (atan2.f64 im re)) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 base) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 base) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (atan2.f64 im re)) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 base) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (atan2.f64 im re)) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 base) (sqrt.f64 (atan2.f64 im re))) (sqrt.f64 (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 base) (sqrt.f64 (atan2.f64 im re))) (sqrt.f64 (atan2.f64 im re)) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 base) (sqrt.f64 (atan2.f64 im re))) (sqrt.f64 (atan2.f64 im re)) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (atan2.f64 im re) (pow.f64 (cbrt.f64 (log.f64 base)) 2)) (cbrt.f64 (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (atan2.f64 im re) (pow.f64 (cbrt.f64 (log.f64 base)) 2)) (cbrt.f64 (log.f64 base)) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (atan2.f64 im re) (pow.f64 (cbrt.f64 (log.f64 base)) 2)) (cbrt.f64 (log.f64 base)) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 base))) (sqrt.f64 (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 base))) (sqrt.f64 (log.f64 base)) (neg.f64 (/.f64 0 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 base))) (sqrt.f64 (log.f64 base)) (neg.f64 (/.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (/.f64 (log.f64 base) (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (*.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (log.f64 base) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (*.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (log.f64 base) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (/.f64 1 (neg.f64 (pow.f64 (log.f64 base) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) -2) (*.f64 (log.f64 base) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 base)) (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (log.f64 base)) (/.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) 1) (/.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (log.f64 base) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 1) (/.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (log.f64 base) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (cbrt.f64 (pow.f64 (log.f64 base) 4))) (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (cbrt.f64 (log.f64 base)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (cbrt.f64 (pow.f64 (log.f64 base) 4))) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (cbrt.f64 (pow.f64 (log.f64 base) 4))) (/.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (cbrt.f64 (log.f64 base)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (log.f64 base) 1) (/.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (log.f64 base) (log.f64 base)) (/.f64 (atan2.f64 im re) (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) 1) (/.f64 (log.f64 base) (pow.f64 (log.f64 base) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (log.f64 base) (cbrt.f64 (pow.f64 (log.f64 base) 4))) (/.f64 (atan2.f64 im re) (pow.f64 (cbrt.f64 (log.f64 base)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (cbrt.f64 (pow.f64 (log.f64 base) 4))) (/.f64 (log.f64 base) (pow.f64 (cbrt.f64 (log.f64 base)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 6)) (pow.f64 (log.f64 base) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 4)) (pow.f64 (log.f64 base) 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (neg.f64 (pow.f64 (log.f64 base) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3) (pow.f64 (log.f64 base) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) -2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (/.f64 (log.f64 base) (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (*.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (log.f64 base) -2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (*.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (log.f64 base) -2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (/.f64 1 (neg.f64 (pow.f64 (log.f64 base) 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (log.f64 base) -2) (*.f64 (log.f64 base) (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (log.f64 base)) (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (log.f64 base)) (/.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) 1) (/.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (log.f64 base) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 1) (/.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (log.f64 base) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (cbrt.f64 (pow.f64 (log.f64 base) 4))) (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (cbrt.f64 (log.f64 base)) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (cbrt.f64 (pow.f64 (log.f64 base) 4))) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (cbrt.f64 (pow.f64 (log.f64 base) 4))) (/.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (cbrt.f64 (log.f64 base)) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (log.f64 base) 1) (/.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (log.f64 base) (log.f64 base)) (/.f64 (atan2.f64 im re) (log.f64 base)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (atan2.f64 im re) 1) (/.f64 (log.f64 base) (pow.f64 (log.f64 base) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (log.f64 base) (cbrt.f64 (pow.f64 (log.f64 base) 4))) (/.f64 (atan2.f64 im re) (pow.f64 (cbrt.f64 (log.f64 base)) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (atan2.f64 im re) (cbrt.f64 (pow.f64 (log.f64 base) 4))) (/.f64 (log.f64 base) (pow.f64 (cbrt.f64 (log.f64 base)) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 6)) (pow.f64 (log.f64 base) 4) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 4)) (pow.f64 (log.f64 base) 2) 0)))))

simplify102.0ms (1.1%)

Algorithm
egg-herbie
Rules
760×associate-*l/_binary64
610×associate-*r/_binary64
439×cancel-sign-sub-inv_binary64
373×*-commutative_binary64
334×fma-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0861185
12421174
26571174
325971174
471151174
Stop Event
node limit
Counts
324 → 254
Calls
Call 1
Inputs
im
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) im)
(+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) im))
(+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5))) im)))
re
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) re)
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 re (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)))))
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (+.f64 re (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))))))
(*.f64 -1 re)
(+.f64 (*.f64 -1 re) (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))
(+.f64 (*.f64 -1 re) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))) (*.f64 -1/2 (/.f64 (pow.f64 im 2) re))))
(+.f64 (*.f64 -1 re) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))) (+.f64 (*.f64 -1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))))
re
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) re)
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 re (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)))))
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (+.f64 re (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))))))
im
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) im)
(+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) im))
(+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5))) im)))
(*.f64 -1 im)
(+.f64 (*.f64 -1/2 (/.f64 (pow.f64 re 2) im)) (*.f64 -1 im))
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 -1/2 (/.f64 (pow.f64 re 2) im)) (*.f64 -1 im)))
(+.f64 (*.f64 -1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5))) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 -1/2 (/.f64 (pow.f64 re 2) im)) (*.f64 -1 im))))
(pow.f64 (log.f64 base) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (log.f64 (/.f64 1 base)) 2)
(pow.f64 (log.f64 (/.f64 1 base)) 2)
(pow.f64 (log.f64 (/.f64 1 base)) 2)
(pow.f64 (log.f64 (/.f64 1 base)) 2)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2)
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
Outputs
im
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) im)
(fma.f64 1/2 (/.f64 (*.f64 re re) im) im)
(fma.f64 1/2 (/.f64 re (/.f64 im re)) im)
(fma.f64 1/2 (*.f64 re (/.f64 re im)) im)
(+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) im))
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/2 (/.f64 (*.f64 re re) im) im))
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/2 (/.f64 re (/.f64 im re)) im))
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/2 (*.f64 re (/.f64 re im)) im))
(fma.f64 1/2 (*.f64 re (/.f64 re im)) (fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) im))
(+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5))) im)))
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/2 (/.f64 (*.f64 re re) im) (fma.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5)) im)))
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/2 (/.f64 re (/.f64 im re)) (fma.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5)) im)))
(fma.f64 1/2 (/.f64 re (/.f64 im re)) (fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5)) im)))
(fma.f64 1/2 (*.f64 re (/.f64 re im)) (fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5)) im)))
re
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) re)
(fma.f64 1/2 (/.f64 (*.f64 im im) re) re)
(fma.f64 1/2 (*.f64 (/.f64 im re) im) re)
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 re (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)))))
(+.f64 (fma.f64 1/2 (/.f64 (*.f64 im im) re) re) (/.f64 (*.f64 -1/8 (pow.f64 im 4)) (pow.f64 re 3)))
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) re))
(fma.f64 1/2 (*.f64 (/.f64 im re) im) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) re))
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (+.f64 re (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))))))
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (+.f64 re (/.f64 (*.f64 -1/8 (pow.f64 im 4)) (pow.f64 re 3)))))
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) re)))
(fma.f64 1/2 (*.f64 (/.f64 im re) im) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) re)))
(*.f64 -1 re)
(neg.f64 re)
(+.f64 (*.f64 -1 re) (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))
(fma.f64 -1 re (*.f64 (/.f64 (*.f64 im im) re) -1/2))
(-.f64 (*.f64 (/.f64 (*.f64 im im) re) -1/2) re)
(-.f64 (*.f64 (/.f64 -1/2 re) (*.f64 im im)) re)
(-.f64 (*.f64 (*.f64 im im) (/.f64 -1/2 re)) re)
(+.f64 (*.f64 -1 re) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))) (*.f64 -1/2 (/.f64 (pow.f64 im 2) re))))
(fma.f64 -1 re (fma.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (*.f64 (/.f64 (*.f64 im im) re) -1/2)))
(-.f64 (fma.f64 (/.f64 (*.f64 im im) re) -1/2 (*.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8)) re)
(fma.f64 (*.f64 (/.f64 im re) im) -1/2 (-.f64 (*.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8) re))
(-.f64 (*.f64 (*.f64 im im) (/.f64 -1/2 re)) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) re))
(+.f64 (*.f64 -1 re) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))) (+.f64 (*.f64 -1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (*.f64 -1/2 (/.f64 (pow.f64 im 2) re)))))
(fma.f64 -1 re (fma.f64 1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (fma.f64 -1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (*.f64 (/.f64 (*.f64 im im) re) -1/2))))
(-.f64 (fma.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8 (fma.f64 (/.f64 (*.f64 im im) re) -1/2 (*.f64 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) -1/16))) re)
(-.f64 (fma.f64 (*.f64 (/.f64 im re) im) -1/2 (fma.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8 (*.f64 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) -1/16))) re)
(-.f64 (fma.f64 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) 1/8 (*.f64 (*.f64 im im) (/.f64 -1/2 re))) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) re))
(fma.f64 (*.f64 im im) (/.f64 -1/2 re) (-.f64 (*.f64 (pow.f64 im 6) (/.f64 -1/16 (pow.f64 re 5))) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) re)))
re
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) re)
(fma.f64 1/2 (/.f64 (*.f64 im im) re) re)
(fma.f64 1/2 (*.f64 (/.f64 im re) im) re)
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 re (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)))))
(+.f64 (fma.f64 1/2 (/.f64 (*.f64 im im) re) re) (/.f64 (*.f64 -1/8 (pow.f64 im 4)) (pow.f64 re 3)))
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) re))
(fma.f64 1/2 (*.f64 (/.f64 im re) im) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) re))
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 im 2) re)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5))) (+.f64 re (*.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3))))))
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (+.f64 re (/.f64 (*.f64 -1/8 (pow.f64 im 4)) (pow.f64 re 3)))))
(fma.f64 1/2 (/.f64 (*.f64 im im) re) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) re)))
(fma.f64 1/2 (*.f64 (/.f64 im re) im) (fma.f64 -1/8 (/.f64 (pow.f64 im 4) (pow.f64 re 3)) (fma.f64 1/16 (/.f64 (pow.f64 im 6) (pow.f64 re 5)) re)))
im
(+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) im)
(fma.f64 1/2 (/.f64 (*.f64 re re) im) im)
(fma.f64 1/2 (/.f64 re (/.f64 im re)) im)
(fma.f64 1/2 (*.f64 re (/.f64 re im)) im)
(+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) im))
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/2 (/.f64 (*.f64 re re) im) im))
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/2 (/.f64 re (/.f64 im re)) im))
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/2 (*.f64 re (/.f64 re im)) im))
(fma.f64 1/2 (*.f64 re (/.f64 re im)) (fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) im))
(+.f64 (*.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 1/2 (/.f64 (pow.f64 re 2) im)) (+.f64 (*.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5))) im)))
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/2 (/.f64 (*.f64 re re) im) (fma.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5)) im)))
(fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/2 (/.f64 re (/.f64 im re)) (fma.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5)) im)))
(fma.f64 1/2 (/.f64 re (/.f64 im re)) (fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5)) im)))
(fma.f64 1/2 (*.f64 re (/.f64 re im)) (fma.f64 -1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5)) im)))
(*.f64 -1 im)
(neg.f64 im)
(+.f64 (*.f64 -1/2 (/.f64 (pow.f64 re 2) im)) (*.f64 -1 im))
(fma.f64 -1/2 (/.f64 (*.f64 re re) im) (neg.f64 im))
(-.f64 (*.f64 (/.f64 re (/.f64 im re)) -1/2) im)
(-.f64 (*.f64 (/.f64 -1/2 im) (*.f64 re re)) im)
(-.f64 (/.f64 (*.f64 re re) (/.f64 im -1/2)) im)
(+.f64 (*.f64 1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 -1/2 (/.f64 (pow.f64 re 2) im)) (*.f64 -1 im)))
(fma.f64 1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 -1/2 (/.f64 (*.f64 re re) im) (neg.f64 im)))
(fma.f64 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) 1/8 (-.f64 (*.f64 (/.f64 re (/.f64 im re)) -1/2) im))
(fma.f64 (/.f64 re (/.f64 im re)) -1/2 (-.f64 (/.f64 (pow.f64 re 4) (/.f64 (pow.f64 im 3) 1/8)) im))
(-.f64 (/.f64 (*.f64 (pow.f64 re 4) 1/8) (pow.f64 im 3)) (fma.f64 1/2 (*.f64 re (/.f64 re im)) im))
(+.f64 (*.f64 -1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5))) (+.f64 (*.f64 1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3))) (+.f64 (*.f64 -1/2 (/.f64 (pow.f64 re 2) im)) (*.f64 -1 im))))
(fma.f64 -1/16 (/.f64 (pow.f64 re 6) (pow.f64 im 5)) (fma.f64 1/8 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) (fma.f64 -1/2 (/.f64 (*.f64 re re) im) (neg.f64 im))))
(fma.f64 (/.f64 (pow.f64 re 6) (pow.f64 im 5)) -1/16 (fma.f64 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) 1/8 (-.f64 (*.f64 (/.f64 re (/.f64 im re)) -1/2) im)))
(fma.f64 (/.f64 (pow.f64 re 6) (pow.f64 im 5)) -1/16 (fma.f64 (/.f64 re (/.f64 im re)) -1/2 (-.f64 (/.f64 (pow.f64 re 4) (/.f64 (pow.f64 im 3) 1/8)) im)))
(-.f64 (fma.f64 (/.f64 (pow.f64 re 4) (pow.f64 im 3)) 1/8 (*.f64 (pow.f64 re 6) (/.f64 -1/16 (pow.f64 im 5)))) (fma.f64 1/2 (*.f64 re (/.f64 re im)) im))
(pow.f64 (log.f64 base) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (log.f64 (/.f64 1 base)) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (log.f64 (/.f64 1 base)) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (log.f64 (/.f64 1 base)) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (log.f64 (/.f64 1 base)) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2)
(pow.f64 (log.f64 base) 2)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2)
(pow.f64 (log.f64 base) 2)
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(*.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))

localize11.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.3b
(/.f64 (atan2.f64 im re) (log.f64 base))
Compiler

Compiled 17 to 6 computations (64.7% saved)

series2.0ms (0%)

Counts
1 → 8
Calls

9 calls:

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

rewrite55.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
702×pow1_binary64
643×add-log-exp_binary64
643×log1p-expm1-u_binary64
643×expm1-log1p-u_binary64
628×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify156.0ms (1.7%)

Algorithm
egg-herbie
Rules
749×div-sub_binary64
628×fma-neg_binary64
606×associate--r-_binary64
497×fma-def_binary64
424×associate--l-_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
017104
131104
24496
39072
419572
559772
6242872
7492372
8619972
9645772
10659372
11670172
Stop Event
node limit
Counts
39 → 34
Calls
Call 1
Inputs
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
Outputs
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(/.f64 (neg.f64 (atan2.f64 im re)) (neg.f64 (log.f64 base)))
(*.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(/.f64 (neg.f64 (atan2.f64 im re)) (neg.f64 (log.f64 base)))
(*.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(/.f64 (neg.f64 (atan2.f64 im re)) (neg.f64 (log.f64 base)))
(*.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(/.f64 (neg.f64 (atan2.f64 im re)) (neg.f64 (log.f64 base)))
(*.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(/.f64 (neg.f64 (atan2.f64 im re)) (neg.f64 (log.f64 base)))
(*.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(/.f64 (neg.f64 (atan2.f64 im re)) (neg.f64 (log.f64 base)))
(*.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(/.f64 (neg.f64 (atan2.f64 im re)) (neg.f64 (log.f64 base)))
(*.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(/.f64 (neg.f64 (atan2.f64 im re)) (neg.f64 (log.f64 base)))
(*.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))

eval109.0ms (1.2%)

Compiler

Compiled 7965 to 3055 computations (61.6% saved)

prune80.0ms (0.9%)

Pruning

24 alts after pruning (23 fresh and 1 done)

PrunedKeptTotal
New26523288
Fresh000
Picked011
Done101
Total26624290
Error
0.0b
Counts
290 → 24
Alt Table
Click to see full alt table
StatusErrorProgram
0.4b
(*.f64 (pow.f64 (log.f64 base) -2) (*.f64 (log.f64 base) (atan2.f64 im re)))
1.1b
(*.f64 (/.f64 1 (cbrt.f64 (pow.f64 (log.f64 base) 4))) (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (cbrt.f64 (log.f64 base)) 2)))
0.5b
(pow.f64 (/.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base))) -1)
0.4b
(*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))
0.5b
(*.f64 (/.f64 (log.f64 base) 1) (/.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) 2)))
1.2b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (cbrt.f64 (pow.f64 (log.f64 base) 4))) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))
31.8b
(*.f64 (/.f64 1 (sqrt.f64 (log.f64 base))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 base))))
31.0b
(exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))
33.1b
(/.f64 (-.f64 (*.f64 (atan2.f64 im re) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) 0)) (+.f64 (cbrt.f64 (pow.f64 (log.f64 base) 6)) (*.f64 0 0)))
1.7b
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 base))))
28.3b
(*.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (log.f64 base)) 2)) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 base))))
28.0b
(*.f64 (sqrt.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 base))))
8.0b
(cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3)))
0.6b
(*.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 4)) (pow.f64 (log.f64 base) 2))
8.0b
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3))
0.8b
(*.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 6)) (pow.f64 (log.f64 base) 4))
1.1b
(*.f64 (/.f64 (atan2.f64 im re) (cbrt.f64 (pow.f64 (log.f64 base) 4))) (/.f64 (log.f64 base) (pow.f64 (cbrt.f64 (log.f64 base)) 2)))
14.6b
(-.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base))) 1)
0.5b
(pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1)
28.0b
(*.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 base)))
30.3b
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2)
1.5b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 3)
34.5b
(pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3) 1/3)
0.3b
(/.f64 (atan2.f64 im re) (log.f64 base))
Compiler

Compiled 773 to 522 computations (32.5% saved)

localize15.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.3b
(/.f64 1 (log.f64 base))
0.3b
(*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))
Compiler

Compiled 24 to 11 computations (54.2% saved)

series5.0ms (0.1%)

Counts
2 → 44
Calls

12 calls:

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

rewrite70.0ms (0.8%)

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

Useful iterations: 0 (0.0ms)

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

simplify140.0ms (1.5%)

Algorithm
egg-herbie
Rules
748×div-sub_binary64
628×fma-neg_binary64
596×associate--r-_binary64
494×fma-def_binary64
413×associate--l-_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
021388
134388
247372
392372
4196372
5598372
62425372
74939372
86202372
96464372
106600372
116708372
Stop Event
node limit
Counts
88 → 49
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 -1 (log.f64 (/.f64 1 base)))
(/.f64 -1 (log.f64 (/.f64 1 base)))
(/.f64 -1 (log.f64 (/.f64 1 base)))
(/.f64 -1 (log.f64 (/.f64 1 base)))
(/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 -1 (log.f64 (/.f64 1 base)))
(/.f64 -1 (neg.f64 (log.f64 base)))
(/.f64 1 (log.f64 base))
(/.f64 -1 (log.f64 (/.f64 1 base)))
(/.f64 -1 (neg.f64 (log.f64 base)))
(/.f64 1 (log.f64 base))
(/.f64 -1 (log.f64 (/.f64 1 base)))
(/.f64 -1 (neg.f64 (log.f64 base)))
(/.f64 1 (log.f64 base))
(/.f64 -1 (log.f64 (/.f64 1 base)))
(/.f64 -1 (neg.f64 (log.f64 base)))
(/.f64 1 (log.f64 base))
(/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 -1 (neg.f64 (log.f64 base)))
(/.f64 1 (log.f64 base))
(/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 -1 (neg.f64 (log.f64 base)))
(/.f64 1 (log.f64 base))
(/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 -1 (neg.f64 (log.f64 base)))
(/.f64 1 (log.f64 base))
(/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 -1 (neg.f64 (log.f64 base)))
(/.f64 1 (log.f64 base))

localize14.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)))
0.3b
(/.f64 (atan2.f64 im re) (log.f64 base))
4.8b
(-.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base))) 1)
Compiler

Compiled 36 to 13 computations (63.9% saved)

series6.0ms (0.1%)

Counts
2 → 44
Calls

18 calls:

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

rewrite81.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
450×log-prod_binary64
443×prod-diff_binary64
376×fma-def_binary64
257×pow2_binary64
252×pow-prod-down_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify136.0ms (1.5%)

Algorithm
egg-herbie
Rules
753×div-sub_binary64
655×fma-neg_binary64
596×associate--r-_binary64
502×fma-def_binary64
416×associate--l-_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
021452
136436
252436
3100420
4214420
5625420
62465420
74998420
86268420
96527420
106669420
116777420
Stop Event
node limit
Counts
213 → 174
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(+.f64 1 (*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(+.f64 1 (*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(+.f64 1 (*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(+.f64 1 (*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(+.f64 1 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(+.f64 1 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(+.f64 1 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(+.f64 1 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(+.f64 1 (*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(+.f64 1 (neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(-.f64 1 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(+.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)
(+.f64 1 (*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(+.f64 1 (neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(-.f64 1 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(+.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)
(+.f64 1 (*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(+.f64 1 (neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(-.f64 1 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(+.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)
(+.f64 1 (*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(+.f64 1 (neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(-.f64 1 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(+.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)
(+.f64 1 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(+.f64 1 (neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(-.f64 1 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(+.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)
(+.f64 1 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(+.f64 1 (neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(-.f64 1 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(+.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)
(+.f64 1 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(+.f64 1 (neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(-.f64 1 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(+.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)
(+.f64 1 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(+.f64 1 (neg.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(-.f64 1 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base))))
(+.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)

localize21.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.3b
(/.f64 (atan2.f64 im re) (log.f64 base))
0.7b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 3)
4.3b
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
Compiler

Compiled 34 to 10 computations (70.6% saved)

series26.0ms (0.3%)

Counts
2 → 72
Calls

18 calls:

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

rewrite63.0ms (0.7%)

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

Useful iterations: 0 (0.0ms)

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

simplify100.0ms (1.1%)

Algorithm
egg-herbie
Rules
828×div-sub_binary64
656×fma-neg_binary64
524×fma-def_binary64
418×unswap-sqr_binary64
326×distribute-rgt-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
031748
176748
2128748
3244748
4550748
51506748
63431748
76745748
Stop Event
node limit
Counts
144 → 79
Calls
Call 1
Inputs
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
Outputs
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))) (cbrt.f64 -1))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 base))))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))) (cbrt.f64 -1))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 base))))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))) (cbrt.f64 -1))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 base))))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))) (cbrt.f64 -1))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 base))))
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 (atan2.f64 im re) (log.f64 base))

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

Compiled 42 to 21 computations (50% saved)

series18.0ms (0.2%)

Counts
4 → 52
Calls

27 calls:

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

rewrite80.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
519×log-prod_binary64
396×exp-prod_binary64
294×pow-prod-down_binary64
266×pow2_binary64
197×pow-unpow_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify54.0ms (0.6%)

Algorithm
egg-herbie
Rules
922×times-frac_binary64
861×div-sub_binary64
753×fma-def_binary64
564×associate-/l*_binary64
356×associate-/r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
027556
164556
2216524
3955468
45703468
Stop Event
node limit
Counts
229 → 184
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(*.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(*.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(*.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(*.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(neg.f64 (pow.f64 (neg.f64 (log.f64 base)) 3))
(neg.f64 (neg.f64 (pow.f64 (log.f64 base) 3)))
(pow.f64 (log.f64 base) 3)
(*.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(neg.f64 (pow.f64 (neg.f64 (log.f64 base)) 3))
(neg.f64 (neg.f64 (pow.f64 (log.f64 base) 3)))
(pow.f64 (log.f64 base) 3)
(*.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(neg.f64 (pow.f64 (neg.f64 (log.f64 base)) 3))
(neg.f64 (neg.f64 (pow.f64 (log.f64 base) 3)))
(pow.f64 (log.f64 base) 3)
(*.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(neg.f64 (pow.f64 (neg.f64 (log.f64 base)) 3))
(neg.f64 (neg.f64 (pow.f64 (log.f64 base) 3)))
(pow.f64 (log.f64 base) 3)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3)
(neg.f64 (pow.f64 (neg.f64 (log.f64 base)) 3))
(neg.f64 (neg.f64 (pow.f64 (log.f64 base) 3)))
(pow.f64 (log.f64 base) 3)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3)
(neg.f64 (pow.f64 (neg.f64 (log.f64 base)) 3))
(neg.f64 (neg.f64 (pow.f64 (log.f64 base) 3)))
(pow.f64 (log.f64 base) 3)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3)
(neg.f64 (pow.f64 (neg.f64 (log.f64 base)) 3))
(neg.f64 (neg.f64 (pow.f64 (log.f64 base) 3)))
(pow.f64 (log.f64 base) 3)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3)
(neg.f64 (pow.f64 (neg.f64 (log.f64 base)) 3))
(neg.f64 (neg.f64 (pow.f64 (log.f64 base) 3)))
(pow.f64 (log.f64 base) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (neg.f64 (log.f64 base)) 3)))
(/.f64 (neg.f64 (pow.f64 (atan2.f64 im re) 3)) (neg.f64 (pow.f64 (log.f64 base) 3)))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (neg.f64 (pow.f64 (log.f64 base) 3))))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (neg.f64 (log.f64 base)) 3)))
(/.f64 (neg.f64 (pow.f64 (atan2.f64 im re) 3)) (neg.f64 (pow.f64 (log.f64 base) 3)))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (neg.f64 (pow.f64 (log.f64 base) 3))))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (neg.f64 (log.f64 base)) 3)))
(/.f64 (neg.f64 (pow.f64 (atan2.f64 im re) 3)) (neg.f64 (pow.f64 (log.f64 base) 3)))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (neg.f64 (pow.f64 (log.f64 base) 3))))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (neg.f64 (log.f64 base)) 3)))
(/.f64 (neg.f64 (pow.f64 (atan2.f64 im re) 3)) (neg.f64 (pow.f64 (log.f64 base) 3)))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (neg.f64 (pow.f64 (log.f64 base) 3))))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (neg.f64 (log.f64 base)) 3)))
(/.f64 (neg.f64 (pow.f64 (atan2.f64 im re) 3)) (neg.f64 (pow.f64 (log.f64 base) 3)))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (neg.f64 (pow.f64 (log.f64 base) 3))))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (neg.f64 (log.f64 base)) 3)))
(/.f64 (neg.f64 (pow.f64 (atan2.f64 im re) 3)) (neg.f64 (pow.f64 (log.f64 base) 3)))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (neg.f64 (pow.f64 (log.f64 base) 3))))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (neg.f64 (log.f64 base)) 3)))
(/.f64 (neg.f64 (pow.f64 (atan2.f64 im re) 3)) (neg.f64 (pow.f64 (log.f64 base) 3)))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (neg.f64 (pow.f64 (log.f64 base) 3))))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (neg.f64 (log.f64 base)) 3)))
(/.f64 (neg.f64 (pow.f64 (atan2.f64 im re) 3)) (neg.f64 (pow.f64 (log.f64 base) 3)))
(neg.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (neg.f64 (pow.f64 (log.f64 base) 3))))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)

localize22.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.4b
(*.f64 (log.f64 base) (atan2.f64 im re))
0.5b
(*.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 6)) (pow.f64 (log.f64 base) 4))
1.0b
(pow.f64 (log.f64 base) 4)
1.3b
(pow.f64 (log.f64 base) 6)
Compiler

Compiled 54 to 21 computations (61.1% saved)

series16.0ms (0.2%)

Counts
4 → 60
Calls

24 calls:

TimeVariablePointExpression
1.0ms
im
@-inf
(*.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 6)) (pow.f64 (log.f64 base) 4))
1.0ms
base
@-inf
(pow.f64 (log.f64 base) 4)
1.0ms
base
@-inf
(pow.f64 (log.f64 base) 6)
1.0ms
base
@0
(pow.f64 (log.f64 base) 6)
1.0ms
base
@inf
(pow.f64 (log.f64 base) 6)

rewrite104.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
647×log-prod_binary64
410×pow-prod-down_binary64
332×pow2_binary64
247×pow-unpow_binary64
232×pow1/3_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01346
127546
2344838
Stop Event
node limit
Counts
4 → 82
Calls
Call 1
Inputs
(pow.f64 (log.f64 base) 6)
(pow.f64 (log.f64 base) 4)
(*.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 6)) (pow.f64 (log.f64 base) 4))
(*.f64 (log.f64 base) (atan2.f64 im re))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (log.f64 base) 6))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (log.f64 base) 6))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (log.f64 base) 6)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (log.f64 base) 6)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (log.f64 base) 6)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (log.f64 base) 6))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) 6) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) 4) (pow.f64 (log.f64 base) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (log.f64 base) 6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) 2) (pow.f64 (log.f64 base) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) 3) (pow.f64 (log.f64 base) 3))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 base) 12))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (log.f64 base) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (log.f64 base) 6))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 base) 18))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (log.f64 base) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (log.f64 base) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 6 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 6 (log.f64 (log.f64 base))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (log.f64 base) 4))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (log.f64 base) 4))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (log.f64 base) 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (log.f64 base) 4)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (log.f64 base) 4)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (log.f64 base) 4))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) 4) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (log.f64 base) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) 2) (pow.f64 (log.f64 base) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 4) (cbrt.f64 (pow.f64 (log.f64 base) 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (log.f64 base) 8)) (pow.f64 (cbrt.f64 (log.f64 base)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 8) (pow.f64 (cbrt.f64 (log.f64 base)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 base) 8))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (log.f64 base) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (log.f64 base) 4))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 base) 12))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (log.f64 base) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (log.f64 base) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 4 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 4 (log.f64 (log.f64 base))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (log.f64 base) 4) (/.f64 (pow.f64 (log.f64 base) 5) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (pow.f64 (log.f64 base) 6) (*.f64 (pow.f64 (log.f64 base) 4) (*.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (log.f64 base) 4) (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (log.f64 base) 6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (pow.f64 (log.f64 base) 4) (*.f64 (log.f64 base) (atan2.f64 im re)))) (neg.f64 (pow.f64 (log.f64 base) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 (pow.f64 (log.f64 base) 4) (*.f64 (log.f64 base) (atan2.f64 im re))) 1) (pow.f64 (log.f64 base) 6))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 (pow.f64 (log.f64 base) 4) (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (log.f64 base) 4)) (pow.f64 (log.f64 base) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 (pow.f64 (log.f64 base) 4) (*.f64 (log.f64 base) (atan2.f64 im re))) (pow.f64 (log.f64 base) 3)) (pow.f64 (log.f64 base) 3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 base) (pow.f64 (log.f64 base) 4)) (/.f64 (pow.f64 (log.f64 base) 6) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (log.f64 base) (neg.f64 (atan2.f64 im re))) (pow.f64 (log.f64 base) 4)) (neg.f64 (pow.f64 (log.f64 base) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (log.f64 base) 4) (log.f64 base)) (/.f64 (pow.f64 (log.f64 base) 6) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 (log.f64 base) 4) (*.f64 (log.f64 base) (neg.f64 (atan2.f64 im re)))) (neg.f64 (pow.f64 (log.f64 base) 6)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (log.f64 base) 6) (*.f64 (pow.f64 (log.f64 base) 4) (*.f64 (log.f64 base) (atan2.f64 im re)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 2))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (log.f64 base) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 base (atan2.f64 im re))) 2)) (log.f64 (cbrt.f64 (pow.f64 base (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 base (atan2.f64 im re)))) (log.f64 (sqrt.f64 (pow.f64 base (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (log.f64 base) (atan2.f64 im re)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 base (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (-.f64 (pow.f64 base (atan2.f64 im re)) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (pow.f64 base (atan2.f64 im re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 1))))))

simplify82.0ms (0.9%)

Algorithm
egg-herbie
Rules
913×fma-def_binary64
356×distribute-rgt-neg-out_binary64
347×unsub-neg_binary64
330×distribute-rgt-neg-in_binary64
305×times-frac_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
028556
159556
2115524
3292492
41401492
53968492
Stop Event
node limit
Counts
142 → 94
Calls
Call 1
Inputs
(pow.f64 (log.f64 (/.f64 1 base)) 6)
(pow.f64 (log.f64 (/.f64 1 base)) 6)
(pow.f64 (log.f64 (/.f64 1 base)) 6)
(pow.f64 (log.f64 (/.f64 1 base)) 6)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 6)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 6)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 6)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 6)
(pow.f64 (log.f64 (/.f64 1 base)) 4)
(pow.f64 (log.f64 (/.f64 1 base)) 4)
(pow.f64 (log.f64 (/.f64 1 base)) 4)
(pow.f64 (log.f64 (/.f64 1 base)) 4)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 4)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 4)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 4)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 4)
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
Outputs
(pow.f64 (log.f64 (/.f64 1 base)) 6)
(pow.f64 (neg.f64 (log.f64 base)) 6)
(pow.f64 (log.f64 base) 6)
(pow.f64 (log.f64 (/.f64 1 base)) 6)
(pow.f64 (neg.f64 (log.f64 base)) 6)
(pow.f64 (log.f64 base) 6)
(pow.f64 (log.f64 (/.f64 1 base)) 6)
(pow.f64 (neg.f64 (log.f64 base)) 6)
(pow.f64 (log.f64 base) 6)
(pow.f64 (log.f64 (/.f64 1 base)) 6)
(pow.f64 (neg.f64 (log.f64 base)) 6)
(pow.f64 (log.f64 base) 6)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 6)
(pow.f64 (neg.f64 (log.f64 base)) 6)
(pow.f64 (log.f64 base) 6)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 6)
(pow.f64 (neg.f64 (log.f64 base)) 6)
(pow.f64 (log.f64 base) 6)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 6)
(pow.f64 (neg.f64 (log.f64 base)) 6)
(pow.f64 (log.f64 base) 6)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 6)
(pow.f64 (neg.f64 (log.f64 base)) 6)
(pow.f64 (log.f64 base) 6)
(pow.f64 (log.f64 (/.f64 1 base)) 4)
(pow.f64 (neg.f64 (log.f64 base)) 4)
(pow.f64 (log.f64 base) 4)
(pow.f64 (log.f64 (/.f64 1 base)) 4)
(pow.f64 (neg.f64 (log.f64 base)) 4)
(pow.f64 (log.f64 base) 4)
(pow.f64 (log.f64 (/.f64 1 base)) 4)
(pow.f64 (neg.f64 (log.f64 base)) 4)
(pow.f64 (log.f64 base) 4)
(pow.f64 (log.f64 (/.f64 1 base)) 4)
(pow.f64 (neg.f64 (log.f64 base)) 4)
(pow.f64 (log.f64 base) 4)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 4)
(pow.f64 (neg.f64 (log.f64 base)) 4)
(pow.f64 (log.f64 base) 4)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 4)
(pow.f64 (neg.f64 (log.f64 base)) 4)
(pow.f64 (log.f64 base) 4)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 4)
(pow.f64 (neg.f64 (log.f64 base)) 4)
(pow.f64 (log.f64 base) 4)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 4)
(pow.f64 (neg.f64 (log.f64 base)) 4)
(pow.f64 (log.f64 base) 4)
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(neg.f64 (*.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(*.f64 (neg.f64 (log.f64 base)) (neg.f64 (atan2.f64 im re)))
(*.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(neg.f64 (*.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(*.f64 (neg.f64 (log.f64 base)) (neg.f64 (atan2.f64 im re)))
(*.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(neg.f64 (*.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(*.f64 (neg.f64 (log.f64 base)) (neg.f64 (atan2.f64 im re)))
(*.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(neg.f64 (*.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(*.f64 (neg.f64 (log.f64 base)) (neg.f64 (atan2.f64 im re)))
(*.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(neg.f64 (*.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(*.f64 (neg.f64 (log.f64 base)) (neg.f64 (atan2.f64 im re)))
(*.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(neg.f64 (*.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(*.f64 (neg.f64 (log.f64 base)) (neg.f64 (atan2.f64 im re)))
(*.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(neg.f64 (*.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(*.f64 (neg.f64 (log.f64 base)) (neg.f64 (atan2.f64 im re)))
(*.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(neg.f64 (*.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(*.f64 (neg.f64 (log.f64 base)) (neg.f64 (atan2.f64 im re)))
(*.f64 (atan2.f64 im re) (log.f64 base))

eval414.0ms (4.5%)

Compiler

Compiled 9825 to 4136 computations (57.9% saved)

prune257.0ms (2.8%)

Pruning

26 alts after pruning (22 fresh and 4 done)

PrunedKeptTotal
New63018648
Fresh14418
Picked101
Done145
Total64626672
Error
0b
Counts
672 → 26
Alt Table
Click to see full alt table
StatusErrorProgram
0.4b
(*.f64 (pow.f64 (log.f64 base) -2) (*.f64 (log.f64 base) (atan2.f64 im re)))
0.5b
(/.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
5.3b
(*.f64 (atan2.f64 im re) (-.f64 (+.f64 1 (/.f64 1 (log.f64 base))) 1))
0.5b
(pow.f64 (/.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base))) -1)
8.0b
(/.f64 1 (cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) -3)))
0.4b
(*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))
0.5b
(*.f64 (/.f64 (log.f64 base) 1) (/.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) 2)))
1.5b
(pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))) 3)
28.0b
(/.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 base) (sqrt.f64 (atan2.f64 im re))))
31.0b
(exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))
36.0b
(pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 9) 1/9)
1.3b
(/.f64 (*.f64 (pow.f64 (log.f64 base) 4) (log.f64 base)) (/.f64 (pow.f64 (log.f64 base) 6) (atan2.f64 im re)))
14.6b
(-.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base))) 1)
1.4b
(pow.f64 (/.f64 1 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))) 3)
8.0b
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3))
31.8b
(/.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 base))) (sqrt.f64 (log.f64 base)))
29.9b
(*.f64 (atan2.f64 im re) (sqrt.f64 (pow.f64 (log.f64 base) -2)))
8.0b
(cbrt.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3)))
8.0b
(/.f64 (cbrt.f64 (neg.f64 (pow.f64 (atan2.f64 im re) 3))) (cbrt.f64 (neg.f64 (pow.f64 (log.f64 base) 3))))
31.8b
(*.f64 (atan2.f64 im re) (pow.f64 (pow.f64 (log.f64 base) -1/2) 2))
0.3b
(/.f64 (atan2.f64 im re) (log.f64 base))
30.3b
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2)
32.0b
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (log.f64 base)))))
1.5b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 3)
0.6b
(*.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 4)) (pow.f64 (log.f64 base) 2))
1.4b
(*.f64 (atan2.f64 im re) (pow.f64 (/.f64 1 (cbrt.f64 (log.f64 base))) 3))
Compiler

Compiled 661 to 479 computations (27.5% saved)

localize15.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.3b
(*.f64 (pow.f64 (log.f64 base) -2) (*.f64 (log.f64 base) (atan2.f64 im re)))
0.4b
(*.f64 (log.f64 base) (atan2.f64 im re))
0.6b
(pow.f64 (log.f64 base) -2)
Compiler

Compiled 33 to 12 computations (63.6% saved)

series5.0ms (0.1%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
base
@0
(pow.f64 (log.f64 base) -2)
1.0ms
base
@-inf
(pow.f64 (log.f64 base) -2)
1.0ms
base
@inf
(pow.f64 (log.f64 base) -2)
0.0ms
base
@inf
(*.f64 (pow.f64 (log.f64 base) -2) (*.f64 (log.f64 base) (atan2.f64 im re)))
0.0ms
base
@-inf
(*.f64 (pow.f64 (log.f64 base) -2) (*.f64 (log.f64 base) (atan2.f64 im re)))

rewrite68.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
906×pow1_binary64
832×add-log-exp_binary64
831×log1p-expm1-u_binary64
831×expm1-log1p-u_binary64
812×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01023
120218
2234018
Stop Event
node limit
Counts
2 → 27
Calls
Call 1
Inputs
(pow.f64 (log.f64 base) -2)
(*.f64 (pow.f64 (log.f64 base) -2) (*.f64 (log.f64 base) (atan2.f64 im re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 (log.f64 base) -2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) -2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (log.f64 base) -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (log.f64 base) -2)) (cbrt.f64 (pow.f64 (log.f64 base) -4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (log.f64 base) -4)) (cbrt.f64 (pow.f64 (log.f64 base) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 base)) (/.f64 1 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (pow.f64 (log.f64 base) 2)) -2) (pow.f64 (cbrt.f64 (log.f64 base)) -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (log.f64 base)) -2) (pow.f64 (sqrt.f64 (log.f64 base)) -2))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 base) -4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (log.f64 base) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (pow.f64 (log.f64 base) -2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (log.f64 base) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (log.f64 base) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 -2 (log.f64 (log.f64 base))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (log.f64 base) -2) (pow.f64 (atan2.f64 im re) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (/.f64 1 (log.f64 base))) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (pow.f64 (log.f64 base) -2) 3) (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3) (pow.f64 (pow.f64 (log.f64 base) -2) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))))))))

simplify60.0ms (0.7%)

Algorithm
egg-herbie
Rules
524×unswap-sqr_binary64
482×associate-*l*_binary64
449×associate-*r*_binary64
419×fma-def_binary64
321×div-sub_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
026432
149432
289432
3264432
41117432
55317432
Stop Event
node limit
Counts
75 → 33
Calls
Call 1
Inputs
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (log.f64 (/.f64 1 base)) 2))
(/.f64 1 (pow.f64 (log.f64 (/.f64 1 base)) 2))
(/.f64 1 (pow.f64 (log.f64 (/.f64 1 base)) 2))
(/.f64 1 (pow.f64 (log.f64 (/.f64 1 base)) 2))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
Outputs
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (log.f64 (/.f64 1 base)) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (log.f64 (/.f64 1 base)) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (log.f64 (/.f64 1 base)) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (log.f64 (/.f64 1 base)) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 2))
(/.f64 1 (pow.f64 (log.f64 base) 2))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))

localize11.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.3b
(/.f64 (log.f64 base) (atan2.f64 im re))
0.4b
(/.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
Compiler

Compiled 26 to 9 computations (65.4% saved)

series7.0ms (0.1%)

Counts
2 → 44
Calls

18 calls:

TimeVariablePointExpression
1.0ms
base
@-inf
(/.f64 (log.f64 base) (atan2.f64 im re))
1.0ms
re
@-inf
(/.f64 (log.f64 base) (atan2.f64 im re))
1.0ms
im
@inf
(/.f64 (log.f64 base) (atan2.f64 im re))
1.0ms
base
@inf
(/.f64 (log.f64 base) (atan2.f64 im re))
1.0ms
re
@inf
(/.f64 (log.f64 base) (atan2.f64 im re))

rewrite105.0ms (1.1%)

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

Useful iterations: 1 (0.0ms)

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

simplify136.0ms (1.5%)

Algorithm
egg-herbie
Rules
747×div-sub_binary64
686×fma-def_binary64
635×associate--r-_binary64
613×fma-neg_binary64
419×distribute-rgt-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
022428
139428
260396
3123396
4281396
5894396
62865396
75740396
86980396
97260396
107443396
117549396
Stop Event
node limit
Counts
111 → 73
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(neg.f64 (/.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(/.f64 (neg.f64 (neg.f64 (log.f64 base))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(neg.f64 (/.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(/.f64 (neg.f64 (neg.f64 (log.f64 base))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(neg.f64 (/.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(/.f64 (neg.f64 (neg.f64 (log.f64 base))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(neg.f64 (/.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(/.f64 (neg.f64 (neg.f64 (log.f64 base))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(neg.f64 (/.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(/.f64 (neg.f64 (neg.f64 (log.f64 base))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(neg.f64 (/.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(/.f64 (neg.f64 (neg.f64 (log.f64 base))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(neg.f64 (/.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(/.f64 (neg.f64 (neg.f64 (log.f64 base))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(neg.f64 (/.f64 (neg.f64 (log.f64 base)) (atan2.f64 im re)))
(/.f64 (neg.f64 (neg.f64 (log.f64 base))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))

localize14.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(log.f64 (log.f64 base))
0.2b
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (log.f64 base)))))
0.6b
(exp.f64 (neg.f64 (log.f64 (log.f64 base))))
Compiler

Compiled 32 to 9 computations (71.9% saved)

series107.0ms (1.2%)

Counts
3 → 52
Calls

15 calls:

TimeVariablePointExpression
46.0ms
base
@0
(exp.f64 (neg.f64 (log.f64 (log.f64 base))))
18.0ms
base
@inf
(exp.f64 (neg.f64 (log.f64 (log.f64 base))))
17.0ms
base
@-inf
(exp.f64 (neg.f64 (log.f64 (log.f64 base))))
14.0ms
im
@0
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (log.f64 base)))))
8.0ms
re
@0
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (log.f64 base)))))

rewrite58.0ms (0.6%)

Algorithm
batch-egg-rewrite
Rules
718×pow1_binary64
654×add-log-exp_binary64
652×log1p-expm1-u_binary64
652×expm1-log1p-u_binary64
639×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01023
119117
2226517
Stop Event
node limit
Counts
3 → 73
Calls
Call 1
Inputs
(exp.f64 (neg.f64 (log.f64 (log.f64 base))))
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (log.f64 base)))))
(log.f64 (log.f64 base))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (-.f64 (log.f64 base) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 base))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (cbrt.f64 (*.f64 base base))) (log.f64 (cbrt.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 base)) (log.f64 (sqrt.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 base)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 base) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 base))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 base)) (pow.f64 (cbrt.f64 (log.f64 base)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (cbrt.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 base)) (sqrt.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (log.f64 base))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (log.f64 base) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (log.f64 base)) (sqrt.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 1 (pow.f64 (cbrt.f64 (log.f64 base)) 2)) (cbrt.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 base) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 base) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 base) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 base)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 base)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (log.f64 base))) 2)) (cbrt.f64 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (log.f64 base)))) (sqrt.f64 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 -1) (log.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 base) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 base)))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 base) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 base 1))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (log.f64 base) (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (atan2.f64 im re) (log.f64 base))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 base (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (log.f64 base) 3) (pow.f64 (atan2.f64 im re) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (pow.f64 base (atan2.f64 im re)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (log.f64 base) (atan2.f64 im re))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (log.f64 base))) (log.f64 (sqrt.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2)) (log.f64 (cbrt.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 (log.f64 base))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (log.f64 base)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (log.f64 base)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (log.f64 base))) (pow.f64 (cbrt.f64 (log.f64 (log.f64 base))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (log.f64 base))) 2) (cbrt.f64 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (log.f64 base))) 2) (neg.f64 (cbrt.f64 (log.f64 (log.f64 base)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (log.f64 base))) (sqrt.f64 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (log.f64 base))) (neg.f64 (sqrt.f64 (log.f64 (log.f64 base)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (log.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (pow.f64 (cbrt.f64 (log.f64 (log.f64 base))) 2)) (cbrt.f64 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (sqrt.f64 (log.f64 (log.f64 base)))) (sqrt.f64 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -1 (pow.f64 (cbrt.f64 (log.f64 (log.f64 base))) 2)) (cbrt.f64 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -1 (sqrt.f64 (log.f64 (log.f64 base)))) (sqrt.f64 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 0 (pow.f64 (log.f64 (log.f64 base)) 3)) (+.f64 0 (+.f64 (pow.f64 (log.f64 (log.f64 base)) 2) (*.f64 0 (log.f64 (log.f64 base))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 0 (pow.f64 (log.f64 (log.f64 base)) 2)) (log.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (log.f64 base)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (log.f64 base)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (log.f64 base))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (log.f64 base))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (log.f64 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (log.f64 base)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (log.f64 base)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (log.f64 base) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (log.f64 base))))))))

simplify86.0ms (0.9%)

Algorithm
egg-herbie
Rules
915×fma-neg_binary64
717×div-sub_binary64
256×log-prod_binary64
187×neg-mul-1_binary64
179×sub-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
028716
156520
2101412
3203412
4423412
51052412
63720412
77316412
Stop Event
node limit
Counts
125 → 81
Calls
Call 1
Inputs
(exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))))
(exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))))
(exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))))
(exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))))
(exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))))
(exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))))
(exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))))
(exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base)))))))
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base)))))))
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base)))))))
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base)))))))
(*.f64 (exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))) (atan2.f64 im re))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))
(log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
Outputs
(exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))))
(exp.f64 (neg.f64 (log.f64 (neg.f64 (neg.f64 (log.f64 base))))))
(/.f64 1 (log.f64 base))
(exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))))
(exp.f64 (neg.f64 (log.f64 (neg.f64 (neg.f64 (log.f64 base))))))
(/.f64 1 (log.f64 base))
(exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))))
(exp.f64 (neg.f64 (log.f64 (neg.f64 (neg.f64 (log.f64 base))))))
(/.f64 1 (log.f64 base))
(exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))))
(exp.f64 (neg.f64 (log.f64 (neg.f64 (neg.f64 (log.f64 base))))))
(/.f64 1 (log.f64 base))
(exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))))
(exp.f64 (neg.f64 (log.f64 (neg.f64 (neg.f64 (log.f64 base))))))
(/.f64 1 (log.f64 base))
(exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))))
(exp.f64 (neg.f64 (log.f64 (neg.f64 (neg.f64 (log.f64 base))))))
(/.f64 1 (log.f64 base))
(exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))))
(exp.f64 (neg.f64 (log.f64 (neg.f64 (neg.f64 (log.f64 base))))))
(/.f64 1 (log.f64 base))
(exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))))
(exp.f64 (neg.f64 (log.f64 (neg.f64 (neg.f64 (log.f64 base))))))
(/.f64 1 (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base)))))))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base)))))))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base)))))))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (*.f64 -1 (log.f64 (/.f64 1 base)))))))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (exp.f64 (neg.f64 (log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))) (atan2.f64 im re))
(*.f64 (exp.f64 (neg.f64 (log.f64 (log.f64 base)))) (atan2.f64 im re))
(/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))
(log.f64 (neg.f64 (neg.f64 (log.f64 base))))
(log.f64 (log.f64 base))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))
(log.f64 (neg.f64 (neg.f64 (log.f64 base))))
(log.f64 (log.f64 base))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))
(log.f64 (neg.f64 (neg.f64 (log.f64 base))))
(log.f64 (log.f64 base))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 base))))
(log.f64 (neg.f64 (neg.f64 (log.f64 base))))
(log.f64 (log.f64 base))
(log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(log.f64 (neg.f64 (neg.f64 (log.f64 base))))
(log.f64 (log.f64 base))
(log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(log.f64 (neg.f64 (neg.f64 (log.f64 base))))
(log.f64 (log.f64 base))
(log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(log.f64 (neg.f64 (neg.f64 (log.f64 base))))
(log.f64 (log.f64 base))
(log.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(log.f64 (neg.f64 (neg.f64 (log.f64 base))))
(log.f64 (log.f64 base))

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(/.f64 1 (cbrt.f64 (log.f64 base)))
0.3b
(*.f64 (atan2.f64 im re) (pow.f64 (/.f64 1 (cbrt.f64 (log.f64 base))) 3))
0.5b
(cbrt.f64 (log.f64 base))
0.8b
(pow.f64 (/.f64 1 (cbrt.f64 (log.f64 base))) 3)
Compiler

Compiled 39 to 19 computations (51.3% saved)

series23.0ms (0.3%)

Counts
4 → 72
Calls

18 calls:

TimeVariablePointExpression
4.0ms
base
@0
(cbrt.f64 (log.f64 base))
3.0ms
base
@-inf
(pow.f64 (/.f64 1 (cbrt.f64 (log.f64 base))) 3)
3.0ms
base
@inf
(pow.f64 (/.f64 1 (cbrt.f64 (log.f64 base))) 3)
3.0ms
base
@0
(pow.f64 (/.f64 1 (cbrt.f64 (log.f64 base))) 3)
2.0ms
base
@inf
(cbrt.f64 (log.f64 base))

rewrite78.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
488×log-prod_binary64
374×exp-prod_binary64
359×prod-exp_binary64
291×pow-prod-down_binary64
273×pow2_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify86.0ms (0.9%)

Algorithm
egg-herbie
Rules
836×unswap-sqr_binary64
623×fma-def_binary64
580×fma-neg_binary64
552×div-sub_binary64
388×distribute-rgt-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
038608
193608
2151600
3293600
4670600
51841600
64311600
Stop Event
node limit
Counts
262 → 202
Calls
Call 1
Inputs
(*.f64 (/.f64 1 (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 1 (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 1 (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 1 (log.f64 base)) (pow.f64 1 1/3))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 1 (log.f64 (/.f64 1 base)))))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 1 (log.f64 (/.f64 1 base)))))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 1 (log.f64 (/.f64 1 base)))))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 1 (log.f64 (/.f64 1 base)))))
(*.f64 (pow.f64 1 1/3) (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(*.f64 (pow.f64 1 1/3) (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(*.f64 (pow.f64 1 1/3) (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(*.f64 (pow.f64 1 1/3) (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(pow.f64 (log.f64 base) 1/3)
(pow.f64 (log.f64 base) 1/3)
(pow.f64 (log.f64 base) 1/3)
(pow.f64 (log.f64 base) 1/3)
(*.f64 (pow.f64 (*.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (pow.f64 (*.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (pow.f64 (*.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (pow.f64 (*.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 1/3)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 1/3)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 1/3)
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 1/3)
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(pow.f64 (/.f64 1 (log.f64 base)) 1/3)
(pow.f64 (/.f64 1 (log.f64 base)) 1/3)
(pow.f64 (/.f64 1 (log.f64 base)) 1/3)
(pow.f64 (/.f64 1 (log.f64 base)) 1/3)
(*.f64 (pow.f64 (/.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (pow.f64 (/.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (pow.f64 (/.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (pow.f64 (/.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(pow.f64 (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(pow.f64 (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(pow.f64 (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(pow.f64 (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
Outputs
(*.f64 (/.f64 1 (log.f64 base)) (pow.f64 1 1/3))
(/.f64 1 (log.f64 base))
(*.f64 (/.f64 1 (log.f64 base)) (pow.f64 1 1/3))
(/.f64 1 (log.f64 base))
(*.f64 (/.f64 1 (log.f64 base)) (pow.f64 1 1/3))
(/.f64 1 (log.f64 base))
(*.f64 (/.f64 1 (log.f64 base)) (pow.f64 1 1/3))
(/.f64 1 (log.f64 base))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 1 (log.f64 (/.f64 1 base)))))
(/.f64 1 (log.f64 base))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 1 (log.f64 (/.f64 1 base)))))
(/.f64 1 (log.f64 base))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 1 (log.f64 (/.f64 1 base)))))
(/.f64 1 (log.f64 base))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 1 (log.f64 (/.f64 1 base)))))
(/.f64 1 (log.f64 base))
(*.f64 (pow.f64 1 1/3) (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 1 (log.f64 base))
(*.f64 (pow.f64 1 1/3) (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 1 (log.f64 base))
(*.f64 (pow.f64 1 1/3) (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 1 (log.f64 base))
(*.f64 (pow.f64 1 1/3) (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 1 (log.f64 base))
(pow.f64 (log.f64 base) 1/3)
(cbrt.f64 (log.f64 base))
(pow.f64 (log.f64 base) 1/3)
(cbrt.f64 (log.f64 base))
(pow.f64 (log.f64 base) 1/3)
(cbrt.f64 (log.f64 base))
(pow.f64 (log.f64 base) 1/3)
(cbrt.f64 (log.f64 base))
(*.f64 (pow.f64 (*.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 (neg.f64 (log.f64 base))) (cbrt.f64 -1))
(*.f64 (pow.f64 (*.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 (neg.f64 (log.f64 base))) (cbrt.f64 -1))
(*.f64 (pow.f64 (*.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 (neg.f64 (log.f64 base))) (cbrt.f64 -1))
(*.f64 (pow.f64 (*.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 (neg.f64 (log.f64 base))) (cbrt.f64 -1))
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 1/3)
(cbrt.f64 (log.f64 base))
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 1/3)
(cbrt.f64 (log.f64 base))
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 1/3)
(cbrt.f64 (log.f64 base))
(pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 1/3)
(cbrt.f64 (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(pow.f64 (/.f64 1 (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 1 (log.f64 base)))
(pow.f64 (/.f64 1 (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 1 (log.f64 base)))
(pow.f64 (/.f64 1 (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 1 (log.f64 base)))
(pow.f64 (/.f64 1 (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 1 (log.f64 base)))
(*.f64 (pow.f64 (/.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 1 (neg.f64 (log.f64 base)))))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 -1 (log.f64 base))))
(*.f64 (pow.f64 (/.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 1 (neg.f64 (log.f64 base)))))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 -1 (log.f64 base))))
(*.f64 (pow.f64 (/.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 1 (neg.f64 (log.f64 base)))))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 -1 (log.f64 base))))
(*.f64 (pow.f64 (/.f64 1 (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 1 (neg.f64 (log.f64 base)))))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 -1 (log.f64 base))))
(pow.f64 (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(cbrt.f64 (/.f64 1 (log.f64 base)))
(pow.f64 (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(cbrt.f64 (/.f64 1 (log.f64 base)))
(pow.f64 (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(cbrt.f64 (/.f64 1 (log.f64 base)))
(pow.f64 (/.f64 1 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(cbrt.f64 (/.f64 1 (log.f64 base)))

localize20.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3))
0.8b
(pow.f64 (atan2.f64 im re) 3)
0.8b
(pow.f64 (log.f64 base) -3)
7.9b
(cbrt.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3)))
Compiler

Compiled 43 to 22 computations (48.8% saved)

series8.0ms (0.1%)

Counts
3 → 84
Calls

21 calls:

TimeVariablePointExpression
1.0ms
base
@-inf
(pow.f64 (log.f64 base) -3)
1.0ms
base
@0
(pow.f64 (log.f64 base) -3)
1.0ms
base
@inf
(pow.f64 (log.f64 base) -3)
0.0ms
im
@0
(cbrt.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3)))
0.0ms
base
@-inf
(cbrt.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3)))

rewrite112.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
500×log-prod_binary64
382×exp-prod_binary64
347×prod-exp_binary64
306×pow-prod-down_binary64
282×pow2_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01235
124735
2264133
Stop Event
node limit
Counts
3 → 106
Calls
Call 1
Inputs
(cbrt.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3)))
(pow.f64 (log.f64 base) -3)
(*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (atan2.f64 im re)) (pow.f64 (log.f64 base) -1))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (atan2.f64 im re)) (pow.f64 (log.f64 base) -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (atan2.f64 im re)) (pow.f64 (log.f64 base) -1)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (atan2.f64 im re)) (pow.f64 (log.f64 base) -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) (pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) 2) (cbrt.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) -1) (atan2.f64 im re))))) (#(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 base) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) (sqrt.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))))))) (#(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 base) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (atan2.f64 im re) 6) (pow.f64 (log.f64 base) -6)) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)) 9) 1/9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3/2) (pow.f64 (log.f64 base) -3/2)) 2/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1/3) (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)))) 2)) (cbrt.f64 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))))) (sqrt.f64 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (atan2.f64 im re)) (pow.f64 (log.f64 base) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base)))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base)))) 1) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base)))) 1/3) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (atan2.f64 im re)) 1) (log.f64 (pow.f64 (log.f64 base) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (log.f64 (pow.f64 (log.f64 base) -1)) (*.f64 (log.f64 (atan2.f64 im re)) 1)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 (log.f64 base) -3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (pow.f64 (log.f64 base) -3))) 2)) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 (log.f64 base) -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (log.f64 base) -3)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 (log.f64 base) -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (pow.f64 (log.f64 base) -3))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) -3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 (log.f64 base) -3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) -1) (cbrt.f64 (pow.f64 (log.f64 base) -6)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (log.f64 base) -6)) (pow.f64 (log.f64 base) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) -3/2) (pow.f64 (log.f64 base) -3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 base)) -6) (pow.f64 (log.f64 base) -1))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 base) -6))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 (log.f64 base) -3)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (pow.f64 (log.f64 base) -3))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 base) -9))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 (log.f64 base) -3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 (log.f64 base) -3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 -3 (log.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 -3 (log.f64 (log.f64 base))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 2 (log.f64 (log.f64 base))) -3/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (log.f64 base) -9)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (log.f64 base) -1)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 -3/2 (log.f64 (log.f64 base))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log.f64 base)) 1) -3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (*.f64 -3 (log.f64 (log.f64 base))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (log.f64 base)) -3/2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (log.f64 base)) -3/2) (*.f64 -3/2 (log.f64 (log.f64 base)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 -3/2 (log.f64 (log.f64 base))) (*.f64 (log.f64 (log.f64 base)) -3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (log.f64 base)) -3/2) (*.f64 (log.f64 (log.f64 base)) -3/2)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 (atan2.f64 im re) 3)) (pow.f64 (log.f64 base) -3))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 (atan2.f64 im re) 3)) (pow.f64 (log.f64 base) -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (pow.f64 (atan2.f64 im re) 3)) (pow.f64 (log.f64 base) -3)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (pow.f64 (atan2.f64 im re) 3)) (pow.f64 (log.f64 base) -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (atan2.f64 im re) 6) (pow.f64 (log.f64 base) -6)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)) 9) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) 9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3/2) (pow.f64 (log.f64 base) -3/2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) 6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base))))) 2)) (cbrt.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base)))))) (sqrt.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base))))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (atan2.f64 im re) 6) (pow.f64 (log.f64 base) -6)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (pow.f64 (atan2.f64 im re) 3)) (pow.f64 (log.f64 base) -3)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)) 9))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)) 9)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3/2) (pow.f64 (log.f64 base) -3/2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base)))) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base)))) 1/3) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) 1) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (*.f64 3 (log.f64 (atan2.f64 im re))) 1) (*.f64 -3 (log.f64 (log.f64 base)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 3 (log.f64 (atan2.f64 im re))) (*.f64 (*.f64 -3 (log.f64 (log.f64 base))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (*.f64 3 (log.f64 (atan2.f64 im re))) 1) (*.f64 (*.f64 -3 (log.f64 (log.f64 base))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (*.f64 -3 (log.f64 (log.f64 base))) 1) (*.f64 3 (log.f64 (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 -3 (log.f64 (log.f64 base))) (*.f64 (*.f64 3 (log.f64 (atan2.f64 im re))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (*.f64 -3 (log.f64 (log.f64 base))) 1) (*.f64 (*.f64 3 (log.f64 (atan2.f64 im re))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base)))) 1/3) (*.f64 2 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) 1) (*.f64 2 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 2 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)))) (*.f64 (fma.f64 3 (log.f64 (atan2.f64 im re)) (*.f64 -3 (log.f64 (log.f64 base)))) 1/3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (+.f64 (*.f64 2 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1)))) (*.f64 (log.f64 (*.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) -1))) 1)))))))

simplify66.0ms (0.7%)

Algorithm
egg-herbie
Rules
798×div-sub_binary64
681×fma-def_binary64
634×associate-/l*_binary64
425×associate-/r*_binary64
297×associate-*l/_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
031972
171972
2248972
31062864
45126864
Stop Event
node limit
Counts
190 → 116
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(/.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(/.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(/.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 -1 (pow.f64 (log.f64 (/.f64 1 base)) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 1 (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 1 (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)

eval172.0ms (1.9%)

Compiler

Compiled 7623 to 3761 computations (50.7% saved)

prune124.0ms (1.4%)

Pruning

27 alts after pruning (18 fresh and 9 done)

PrunedKeptTotal
New54112553
Fresh11617
Picked011
Done088
Total55227579
Error
0b
Counts
579 → 27
Alt Table
Click to see full alt table
StatusErrorProgram
29.9b
(*.f64 (atan2.f64 im re) (sqrt.f64 (pow.f64 (log.f64 base) -2)))
0.4b
(*.f64 (pow.f64 (log.f64 base) -2) (*.f64 (log.f64 base) (atan2.f64 im re)))
0.5b
(/.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
0.6b
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 base)))
5.3b
(*.f64 (atan2.f64 im re) (-.f64 (+.f64 1 (/.f64 1 (log.f64 base))) 1))
28.0b
(/.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 base) (sqrt.f64 (atan2.f64 im re))))
8.0b
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3))
31.0b
(exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))
36.0b
(pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 9) 1/9)
11.6b
(/.f64 1 (log.f64 (pow.f64 base (/.f64 1 (atan2.f64 im re)))))
32.0b
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (log.f64 base)))))
1.5b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 3)
32.5b
(sqrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -2))
1.5b
(pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))) 3)
0.5b
(/.f64 1 (-.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 1))
30.3b
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2)
32.1b
(*.f64 (atan2.f64 im re) (pow.f64 (pow.f64 (log.f64 base) -1/3) 3))
1.3b
(/.f64 1 (pow.f64 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 3))
14.6b
(-.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base))) 1)
1.4b
(pow.f64 (/.f64 1 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))) 3)
0.7b
(*.f64 (atan2.f64 im re) (cbrt.f64 (pow.f64 (log.f64 base) -3)))
8.0b
(cbrt.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3)))
0.4b
(*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))
0.6b
(*.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 4)) (pow.f64 (log.f64 base) 2))
7.7b
(*.f64 (pow.f64 (log.f64 base) -2) (cbrt.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3)))
0.3b
(/.f64 (atan2.f64 im re) (log.f64 base))
1.4b
(*.f64 (atan2.f64 im re) (pow.f64 (/.f64 1 (cbrt.f64 (log.f64 base))) 3))
Compiler

Compiled 602 to 445 computations (26.1% saved)

localize18.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
0.0b
(-.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 1)
0.3b
(/.f64 (log.f64 base) (atan2.f64 im re))
0.4b
(/.f64 1 (-.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 1))
Compiler

Compiled 48 to 19 computations (60.4% saved)

series9.0ms (0.1%)

Counts
3 → 96
Calls

27 calls:

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

rewrite91.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
505×log-prod_binary64
443×prod-diff_binary64
350×fma-def_binary64
283×pow2_binary64
194×pow1/3_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01145
123930
2337030
Stop Event
node limit
Counts
3 → 213
Calls
Call 1
Inputs
(/.f64 1 (-.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 1))
(-.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (atan2.f64 im re) (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) (cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -2)) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (/.f64 1 (neg.f64 (/.f64 (log.f64 base) (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 base)))))) (#(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 base)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 base)) -2) (/.f64 (atan2.f64 im re) (cbrt.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (pow.f64 (cbrt.f64 (log.f64 base)) 2)) (/.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (log.f64 base)) 2)) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (log.f64 base) -1/2) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (sqrt.f64 (log.f64 base))) (/.f64 (cbrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 base))) (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))))) (+.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 2) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))))) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) -2) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) -3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 3) -1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (neg.f64 (neg.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (log.f64 base))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (*.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (log.f64 base) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 base (/.f64 1 (atan2.f64 im re)))) 2)) (log.f64 (cbrt.f64 (pow.f64 base (/.f64 1 (atan2.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 base (/.f64 1 (atan2.f64 im re))))) (log.f64 (sqrt.f64 (pow.f64 base (/.f64 1 (atan2.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 base) (/.f64 1 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) (cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (*.f64 (cbrt.f64 (log.f64 base)) (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) (sqrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 base)) (*.f64 (sqrt.f64 (log.f64 base)) (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (log.f64 base)) (/.f64 1 (neg.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))) (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 2) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 base))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))) (/.f64 1 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) 1) (/.f64 (cbrt.f64 (log.f64 base)) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (log.f64 base)) 1) (/.f64 (sqrt.f64 (log.f64 base)) (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) -2) (/.f64 (log.f64 base) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (log.f64 base)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (/.f64 (sqrt.f64 (log.f64 base)) (cbrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (atan2.f64 im re) -1/2) (/.f64 (log.f64 base) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (sqrt.f64 (atan2.f64 im re))) (/.f64 (cbrt.f64 (log.f64 base)) (sqrt.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 1) (expm1.f64 (*.f64 1/2 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 2) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2) (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (log.f64 base) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (/.f64 (atan2.f64 im re) (cbrt.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (log.f64 base)) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -1 (neg.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (log.f64 base)) (neg.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))) (+.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 2) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))) (+.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 2) (-.f64 1 (*.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (neg.f64 (log.f64 base))) (neg.f64 (neg.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))))) (neg.f64 (+.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 2) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))))) (neg.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (log.f64 base) (sqrt.f64 (atan2.f64 im re))) (sqrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 3)) (+.f64 1 (-.f64 (pow.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 2) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 2)) (-.f64 1 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (log.f64 base) 1) (atan2.f64 im re))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (log.f64 base) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (atan2.f64 im re)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -3) -1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) -3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 2) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2) (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (log.f64 base) (neg.f64 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 base (/.f64 1 (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 (sqrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) (hypot.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) (sqrt.f64 (neg.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (*.f64 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 base) (/.f64 1 (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) (cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) (pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 2) (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 2) (*.f64 (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (*.f64 (cbrt.f64 (log.f64 base)) (/.f64 1 (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) (sqrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) (sqrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) (*.f64 (sqrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 base)) (*.f64 (sqrt.f64 (log.f64 base)) (/.f64 1 (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 (log.f64 base)) (/.f64 1 (neg.f64 (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))) (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 2) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 3)) (/.f64 1 (fma.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 base) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))) (/.f64 1 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) (/.f64 1 (-.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1)) 2) (cbrt.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1)) (sqrt.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) 1) (/.f64 (cbrt.f64 (log.f64 base)) (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 (log.f64 base)) 1) (/.f64 (sqrt.f64 (log.f64 base)) (atan2.f64 im re)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) -2) (/.f64 (log.f64 base) (cbrt.f64 (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 (log.f64 base)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (/.f64 (sqrt.f64 (log.f64 base)) (cbrt.f64 (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (atan2.f64 im re) -1/2) (/.f64 (log.f64 base) (sqrt.f64 (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (sqrt.f64 (atan2.f64 im re))) (/.f64 (cbrt.f64 (log.f64 base)) (sqrt.f64 (atan2.f64 im re))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 1) (expm1.f64 (*.f64 1/2 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 1) (-.f64 (sqrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 1) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 1 (-.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) (/.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2) (-.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) (pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 2) (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 2) (*.f64 (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) (sqrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) (*.f64 (sqrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 3)) (/.f64 1 (fma.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) (/.f64 1 (-.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 1) (+.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (-.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) (-.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 3)) (fma.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 3)) (+.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2) (-.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) (-.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (+.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 3))) (neg.f64 (fma.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2))) (neg.f64 (-.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2) 1) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 3)) 1) (fma.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) 1) (-.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1) 1) (+.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) (-.f64 1 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 base (/.f64 1 (atan2.f64 im re))) (E.f64)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (log.f64 base) (/.f64 1 (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) (cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (*.f64 (cbrt.f64 (log.f64 base)) (/.f64 1 (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) (sqrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 base)) (*.f64 (sqrt.f64 (log.f64 base)) (/.f64 1 (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 (log.f64 base)) (/.f64 1 (neg.f64 (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (expm1.f64 (*.f64 3 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))) (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 2) (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 base) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (expm1.f64 (*.f64 2 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))) (/.f64 1 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2) 1 -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) 2) (cbrt.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) (sqrt.f64 (+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) 1) (/.f64 (cbrt.f64 (log.f64 base)) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 (log.f64 base)) 1) (/.f64 (sqrt.f64 (log.f64 base)) (atan2.f64 im re)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) -2) (/.f64 (log.f64 base) (cbrt.f64 (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 (log.f64 base)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2)) (/.f64 (sqrt.f64 (log.f64 base)) (cbrt.f64 (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (atan2.f64 im re) -1/2) (/.f64 (log.f64 base) (sqrt.f64 (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 (log.f64 base)) 2) (sqrt.f64 (atan2.f64 im re))) (/.f64 (cbrt.f64 (log.f64 base)) (sqrt.f64 (atan2.f64 im re))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))) 1) (expm1.f64 (*.f64 1/2 (log1p.f64 (/.f64 (log.f64 base) (atan2.f64 im re))))) 1)))))

simplify174.0ms (1.9%)

Algorithm
egg-herbie
Rules
770×div-sub_binary64
491×fma-def_binary64
455×sub-neg_binary64
287×unsub-neg_binary64
286×fma-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
030936
157936
296936
3193936
4470936
51493936
64440936
76008936
87171936
97635936
107771936
117827936
127838936
Stop Event
node limit
Counts
309 → 222
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re))))
(+.f64 1 (*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re))))
(+.f64 1 (*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re))))
(+.f64 1 (*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re))))
(+.f64 1 (+.f64 (*.f64 -1 (/.f64 (log.f64 (/.f64 -1 base)) (atan2.f64 im re))) (/.f64 (log.f64 -1) (atan2.f64 im re))))
(+.f64 1 (+.f64 (*.f64 -1 (/.f64 (log.f64 (/.f64 -1 base)) (atan2.f64 im re))) (/.f64 (log.f64 -1) (atan2.f64 im re))))
(+.f64 1 (+.f64 (*.f64 -1 (/.f64 (log.f64 (/.f64 -1 base)) (atan2.f64 im re))) (/.f64 (log.f64 -1) (atan2.f64 im re))))
(+.f64 1 (+.f64 (*.f64 -1 (/.f64 (log.f64 (/.f64 -1 base)) (atan2.f64 im re))) (/.f64 (log.f64 -1) (atan2.f64 im re))))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
Outputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 1 (*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re))))
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 1 (*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re))))
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 1 (*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re))))
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 1 (*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re))))
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 1 (+.f64 (*.f64 -1 (/.f64 (log.f64 (/.f64 -1 base)) (atan2.f64 im re))) (/.f64 (log.f64 -1) (atan2.f64 im re))))
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 1 (+.f64 (*.f64 -1 (/.f64 (log.f64 (/.f64 -1 base)) (atan2.f64 im re))) (/.f64 (log.f64 -1) (atan2.f64 im re))))
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 1 (+.f64 (*.f64 -1 (/.f64 (log.f64 (/.f64 -1 base)) (atan2.f64 im re))) (/.f64 (log.f64 -1) (atan2.f64 im re))))
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 1 (+.f64 (*.f64 -1 (/.f64 (log.f64 (/.f64 -1 base)) (atan2.f64 im re))) (/.f64 (log.f64 -1) (atan2.f64 im re))))
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(+.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) 1)
(+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))

localize15.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.1b
(/.f64 1 (atan2.f64 im re))
0.4b
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 base)))
0.4b
(*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 base))
Compiler

Compiled 35 to 16 computations (54.3% saved)

series8.0ms (0.1%)

Counts
3 → 72
Calls

24 calls:

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

rewrite66.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
904×pow1_binary64
827×add-log-exp_binary64
827×log1p-expm1-u_binary64
827×expm1-log1p-u_binary64
807×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify142.0ms (1.6%)

Algorithm
egg-herbie
Rules
778×div-sub_binary64
691×fma-def_binary64
622×associate--r-_binary64
613×fma-neg_binary64
421×distribute-rgt-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
023648
140648
260648
3123648
4282648
5893648
62830648
75702648
87012648
97291648
107471648
117577648
Stop Event
node limit
Counts
145 → 78
Calls
Call 1
Inputs
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
Outputs
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(/.f64 (log.f64 base) (atan2.f64 im re))
(*.f64 -1 (/.f64 (log.f64 (/.f64 1 base)) (atan2.f64 im re)))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) (atan2.f64 im re))
(/.f64 (log.f64 base) (atan2.f64 im re))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))

localize15.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.3b
(/.f64 (atan2.f64 im re) (log.f64 base))
0.6b
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
7.9b
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3))
Compiler

Compiled 35 to 12 computations (65.7% saved)

series13.0ms (0.1%)

Counts
2 → 72
Calls

18 calls:

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

rewrite86.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
895×pow1_binary64
834×add-log-exp_binary64
834×log1p-expm1-u_binary64
834×expm1-log1p-u_binary64
812×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify75.0ms (0.8%)

Algorithm
egg-herbie
Rules
798×div-sub_binary64
681×fma-def_binary64
630×associate-/l*_binary64
482×distribute-neg-frac_binary64
393×associate-/r*_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
028864
168864
2225864
31019756
45023756
Stop Event
node limit
Counts
150 → 83
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(*.f64 -1 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 (/.f64 1 base)) 3)))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))) 3))
(/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3)

localize15.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.2b
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2)
0.3b
(/.f64 (atan2.f64 im re) (log.f64 base))
3.8b
(sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
Compiler

Compiled 34 to 10 computations (70.6% saved)

series11.0ms (0.1%)

Counts
2 → 44
Calls

18 calls:

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

rewrite64.0ms (0.7%)

Algorithm
batch-egg-rewrite
Rules
858×pow1_binary64
791×add-log-exp_binary64
791×log1p-expm1-u_binary64
791×expm1-log1p-u_binary64
772×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify65.0ms (0.7%)

Algorithm
egg-herbie
Rules
751×fma-neg_binary64
427×times-frac_binary64
366×neg-mul-1_binary64
360×neg-sub0_binary64
344×*-commutative_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
026480
143472
274472
3164440
4458440
52863440
66549440
Stop Event
node limit
Counts
115 → 77
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 (/.f64 1 base)))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 (/.f64 1 base)))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 (/.f64 1 base)))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 (/.f64 1 base)))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
Outputs
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 (sqrt.f64 -1) (sqrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (neg.f64 (log.f64 (/.f64 -1 base))))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 base)))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(sqrt.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (neg.f64 (log.f64 (/.f64 -1 base))))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 base)))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(sqrt.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (neg.f64 (log.f64 (/.f64 -1 base))))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 base)))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(sqrt.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (neg.f64 (log.f64 (/.f64 -1 base))))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (-.f64 (log.f64 -1) (log.f64 (/.f64 -1 base)))))
(sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 (/.f64 1 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 (/.f64 1 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 (/.f64 1 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (*.f64 (pow.f64 (sqrt.f64 -1) 2) (atan2.f64 im re)) (log.f64 (/.f64 1 base)))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))

localize23.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.3b
(/.f64 1 (log.f64 base))
0.3b
(*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))
0.7b
(pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))) 3)
4.3b
(cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base))))
Compiler

Compiled 45 to 22 computations (51.1% saved)

series5.0ms (0.1%)

Counts
2 → 72
Calls

18 calls:

TimeVariablePointExpression
0.0ms
im
@0
(cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base))))
0.0ms
base
@-inf
(pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))) 3)
0.0ms
base
@inf
(cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base))))
0.0ms
im
@inf
(cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base))))
0.0ms
im
@-inf
(cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base))))

rewrite81.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
953×pow1_binary64
885×add-log-exp_binary64
884×log1p-expm1-u_binary64
884×expm1-log1p-u_binary64
107×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify102.0ms (1.1%)

Algorithm
egg-herbie
Rules
828×div-sub_binary64
656×fma-neg_binary64
524×fma-def_binary64
418×unswap-sqr_binary64
326×distribute-rgt-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
031748
176748
2128748
3244748
4550748
51506748
63431748
76745748
Stop Event
node limit
Counts
150 → 85
Calls
Call 1
Inputs
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
Outputs
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))) (cbrt.f64 -1))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 base))))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))) (cbrt.f64 -1))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 base))))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))) (cbrt.f64 -1))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 base))))
(*.f64 (pow.f64 (/.f64 (*.f64 1 (atan2.f64 im re)) (log.f64 (/.f64 1 base))) 1/3) (cbrt.f64 -1))
(*.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))) (cbrt.f64 -1))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (atan2.f64 im re) (neg.f64 (log.f64 base)))))
(*.f64 (cbrt.f64 -1) (cbrt.f64 (/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 base))))
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(pow.f64 (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))) 1/3)
(cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base)))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) (pow.f64 1 1/3))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 -1 (*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (log.f64 (/.f64 1 base)))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 (atan2.f64 im re) (log.f64 base))
(*.f64 (pow.f64 1 1/3) (/.f64 (atan2.f64 im re) (+.f64 (log.f64 -1) (*.f64 -1 (log.f64 (/.f64 -1 base))))))
(/.f64 (atan2.f64 im re) (log.f64 base))

eval167.0ms (1.8%)

Compiler

Compiled 10285 to 4197 computations (59.2% saved)

prune117.0ms (1.3%)

Pruning

27 alts after pruning (15 fresh and 12 done)

PrunedKeptTotal
New6915696
Fresh31013
Picked011
Done21113
Total69627723
Error
0b
Counts
723 → 27
Alt Table
Click to see full alt table
StatusErrorProgram
29.9b
(*.f64 (atan2.f64 im re) (sqrt.f64 (pow.f64 (log.f64 base) -2)))
8.0b
(cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -3))
0.4b
(*.f64 (pow.f64 (log.f64 base) -2) (*.f64 (log.f64 base) (atan2.f64 im re)))
0.5b
(/.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
0.6b
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 base)))
5.3b
(*.f64 (atan2.f64 im re) (-.f64 (+.f64 1 (/.f64 1 (log.f64 base))) 1))
31.0b
(exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))
36.0b
(pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 9) 1/9)
0.6b
(/.f64 1 (/.f64 (/.f64 1 (atan2.f64 im re)) (/.f64 1 (log.f64 base))))
11.6b
(/.f64 1 (log.f64 (pow.f64 base (/.f64 1 (atan2.f64 im re)))))
32.0b
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (log.f64 base)))))
0.5b
(/.f64 1 (/.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base))))
1.5b
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 3)
1.3b
(/.f64 1 (pow.f64 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 3))
30.3b
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2)
32.1b
(*.f64 (atan2.f64 im re) (pow.f64 (pow.f64 (log.f64 base) -1/3) 3))
1.3b
(pow.f64 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) -3)
14.6b
(-.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base))) 1)
1.4b
(pow.f64 (/.f64 1 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))) 3)
0.4b
(*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))
8.0b
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3))
1.5b
(pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))) 3)
0.6b
(*.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 4)) (pow.f64 (log.f64 base) 2))
7.7b
(*.f64 (pow.f64 (log.f64 base) -2) (cbrt.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3)))
0.7b
(*.f64 (atan2.f64 im re) (cbrt.f64 (pow.f64 (log.f64 base) -3)))
0.3b
(/.f64 (atan2.f64 im re) (log.f64 base))
1.4b
(*.f64 (atan2.f64 im re) (pow.f64 (/.f64 1 (cbrt.f64 (log.f64 base))) 3))
Compiler

Compiled 352 to 263 computations (25.3% saved)

regimes163.0ms (1.8%)

Accuracy

Total -58.1b remaining (-18147.3%)

Threshold costs -58.1b (-18147.3%)

Counts
60 → 1
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 base))
(/.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re)))
(*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))
(/.f64 1 (/.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base))))
(/.f64 1 (*.f64 (/.f64 1 (atan2.f64 im re)) (log.f64 base)))
(-.f64 (+.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base))) 1)
(/.f64 1 (/.f64 (/.f64 1 (atan2.f64 im re)) (/.f64 1 (log.f64 base))))
(/.f64 1 (-.f64 (+.f64 1 (/.f64 (log.f64 base) (atan2.f64 im re))) 1))
(*.f64 (atan2.f64 im re) (-.f64 (+.f64 1 (/.f64 1 (log.f64 base))) 1))
(pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -1)
(/.f64 1 (log.f64 (pow.f64 base (/.f64 1 (atan2.f64 im re)))))
(pow.f64 (/.f64 1 (/.f64 (atan2.f64 im re) (log.f64 base))) -1)
(exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))
(exp.f64 (log.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))
(cbrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -3))
(pow.f64 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) -3)
(*.f64 (atan2.f64 im re) (sqrt.f64 (pow.f64 (log.f64 base) -2)))
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3))
(sqrt.f64 (pow.f64 (/.f64 (log.f64 base) (atan2.f64 im re)) -2))
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2)
(*.f64 (atan2.f64 im re) (cbrt.f64 (pow.f64 (log.f64 base) -3)))
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3))
(*.f64 (atan2.f64 im re) (sqrt.f64 (pow.f64 (log.f64 base) -2)))
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2)
(*.f64 (atan2.f64 im re) (exp.f64 (neg.f64 (log.f64 (log.f64 base)))))
(cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3))
(pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 2)
(pow.f64 (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))) 3)
(*.f64 (atan2.f64 im re) (pow.f64 (pow.f64 (log.f64 base) -1/3) 3))
(pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 9) 1/9)
(*.f64 (atan2.f64 im re) (pow.f64 (pow.f64 (log.f64 base) -1/2) 2))
(pow.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) 3) 1/3)
(/.f64 1 (pow.f64 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 3))
(pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))) 3)
(/.f64 1 (pow.f64 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re))) 3))
(/.f64 1 (cbrt.f64 (pow.f64 (/.f64 (atan2.f64 im re) (log.f64 base)) -3)))
(pow.f64 (cbrt.f64 (*.f64 (atan2.f64 im re) (/.f64 1 (log.f64 base)))) 3)
(pow.f64 (/.f64 1 (cbrt.f64 (/.f64 (log.f64 base) (atan2.f64 im re)))) 3)
(*.f64 (atan2.f64 im re) (pow.f64 (/.f64 1 (cbrt.f64 (log.f64 base))) 3))
(*.f64 (pow.f64 (log.f64 base) -2) (*.f64 (log.f64 base) (atan2.f64 im re)))
(*.f64 (/.f64 (log.f64 base) 1) (/.f64 (atan2.f64 im re) (pow.f64 (log.f64 base) 2)))
(/.f64 (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 base))) (sqrt.f64 (log.f64 base)))
(cbrt.f64 (*.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) -3)))
(cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 base) 3)))
(/.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 (log.f64 base) (sqrt.f64 (atan2.f64 im re))))
(*.f64 (/.f64 1 (sqrt.f64 (log.f64 base))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log.f64 base))))
(*.f64 (sqrt.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 base))))
(*.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) 1) (/.f64 (sqrt.f64 (atan2.f64 im re)) (log.f64 base)))
(*.f64 (pow.f64 (log.f64 base) -2) (cbrt.f64 (pow.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) 3)))
(/.f64 (cbrt.f64 (neg.f64 (pow.f64 (atan2.f64 im re) 3))) (cbrt.f64 (neg.f64 (pow.f64 (log.f64 base) 3))))
(/.f64 (*.f64 (pow.f64 (log.f64 base) 4) (log.f64 base)) (/.f64 (pow.f64 (log.f64 base) 6) (atan2.f64 im re)))
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log.f64 base))))
(*.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 4)) (pow.f64 (log.f64 base) 2))
(*.f64 (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (log.f64 base) 6)) (pow.f64 (log.f64 base) 4))
(/.f64 (-.f64 (*.f64 (atan2.f64 im re) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) 0)) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 0 0)))
(/.f64 (-.f64 (*.f64 (atan2.f64 im re) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) 0)) (+.f64 (cbrt.f64 (pow.f64 (log.f64 base) 6)) (*.f64 0 0)))
(*.f64 (/.f64 (atan2.f64 im re) (cbrt.f64 (pow.f64 (log.f64 base) 4))) (/.f64 (log.f64 base) (pow.f64 (cbrt.f64 (log.f64 base)) 2)))
(*.f64 (/.f64 1 (cbrt.f64 (pow.f64 (log.f64 base) 4))) (/.f64 (*.f64 (log.f64 base) (atan2.f64 im re)) (pow.f64 (cbrt.f64 (log.f64 base)) 2)))
(*.f64 (/.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (log.f64 base)) 2)) (/.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (log.f64 base))))
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 base) (atan2.f64 im re))) 2) (cbrt.f64 (pow.f64 (log.f64 base) 4))) (cbrt.f64 (/.f64 (atan2.f64 im re) (log.f64 base))))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 base))
Calls

5 calls:

33.0ms
base
32.0ms
im
29.0ms
re
29.0ms
(log.f64 base)
20.0ms
(/.f64 (-.f64 (*.f64 (atan2.f64 im re) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) 0)) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 0 0)))
Results
ErrorSegmentsBranch
0.3b1re
0.3b1im
0.3b1base
0.3b1(/.f64 (-.f64 (*.f64 (atan2.f64 im re) (log.f64 base)) (*.f64 (log.f64 (sqrt.f64 (+.f64 (*.f64 re re) (*.f64 im im)))) 0)) (+.f64 (*.f64 (log.f64 base) (log.f64 base)) (*.f64 0 0)))
0.3b1(log.f64 base)
Compiler

Compiled 764 to 325 computations (57.5% saved)

simplify3.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
079
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 base))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 base))
Compiler

Compiled 9 to 6 computations (33.3% saved)

soundness184.0ms (2%)

Algorithm
egg-herbie
Rules
877×fma-def_binary64
692×fma-neg_binary64
640×cube-prod_binary64
454×associate-/l*_binary64
447×sqr-pow_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01920
14119
26812
3949
41159
52739
610679
724959
835459
953049
1059099
1169949
Stop Event
node limit
Compiler

Compiled 138 to 86 computations (37.7% saved)

end13.0ms (0.1%)

Compiler

Compiled 9 to 6 computations (33.3% saved)

Profiling

Loading profile data...