Details

Time bar (total: 1.6s)

analyze3.0ms (0.2%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
50%50%0.1%2
74.9%25%0.1%3
87.4%12.5%0.1%4
93.7%6.2%0.1%5
96.8%3.1%0.1%6
98.3%1.6%0.1%7
99.1%0.8%0.1%8
99.5%0.4%0.1%9
99.7%0.2%0.1%10
99.8%0.1%0.1%11
99.9%0%0.1%12
99.9%0%0.1%13
99.9%0%0.1%14
Compiler

Compiled 9 to 7 computations (22.2% saved)

sample828.0ms (52.7%)

Results
816.0ms8256×body128valid
Compiler

Compiled 18 to 14 computations (22.2% saved)

preprocess13.0ms (0.8%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

Compiled 8 to 6 computations (25% saved)

simplify9.0ms (0.5%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

prune2.0ms (0.1%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 24 to 18 computations (25% saved)

localize5.0ms (0.3%)

Local error

Found 1 expressions with local error:

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

series33.0ms (2.1%)

Counts
1 → 0
Calls

6 calls:

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

rewrite34.0ms (2.1%)

Algorithm
batch-egg-rewrite
Rules
682×pow1_binary64
633×add-log-exp_binary64
633×log1p-expm1-u_binary64
633×expm1-log1p-u_binary64
71×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify6.0ms (0.4%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

prune25.0ms (1.6%)

Pruning

6 alts after pruning (5 fresh and 1 done)

PrunedKeptTotal
New27532
Fresh000
Picked011
Done000
Total27633
Error
0.0b
Counts
33 → 6
Alt Table
StatusErrorProgram
0.9b
(/.f64 (atan2.f64 im re) (log.f64 10))
0.8b
(*.f64 (/.f64 1 (sqrt.f64 (log1p.f64 9))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
2.1b
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (*.f64 (cbrt.f64 (atan2.f64 im re)) (/.f64 1 (log1p.f64 9))))
2.0b
(*.f64 (/.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) 2) (pow.f64 (cbrt.f64 (log1p.f64 9)) 2)) (cbrt.f64 (/.f64 (atan2.f64 im re) (log1p.f64 9))))
1.2b
(pow.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re)) -1)
Compiler

Compiled 526 to 354 computations (32.7% saved)

localize6.0ms (0.4%)

Local error

Found 2 expressions with local error:

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

series39.0ms (2.5%)

Counts
2 → 0
Calls

6 calls:

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

rewrite37.0ms (2.3%)

Algorithm
batch-egg-rewrite
Rules
683×pow1_binary64
634×add-log-exp_binary64
634×log1p-expm1-u_binary64
634×expm1-log1p-u_binary64
71×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify6.0ms (0.4%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

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

prune30.0ms (1.9%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New45247
Fresh224
Picked011
Done101
Total48553
Error
0.0b
Counts
53 → 5
Alt Table
StatusErrorProgram
6.1b
(neg.f64 (cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 1/10) 3))))
0.8b
(*.f64 (/.f64 1 (sqrt.f64 (log1p.f64 9))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))))
29.2b
(neg.f64 (pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
1.2b
(pow.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re)) -1)
Compiler

Compiled 667 to 468 computations (29.8% saved)

localize9.0ms (0.6%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9)))
0.8b
(*.f64 (/.f64 1 (sqrt.f64 (log1p.f64 9))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))))

series23.0ms (1.5%)

Counts
2 → 48
Calls

12 calls:

TimeVariablePointExpression
7.0ms
im
@0
(*.f64 (/.f64 1 (sqrt.f64 (log1p.f64 9))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))))
7.0ms
re
@0
(*.f64 (/.f64 1 (sqrt.f64 (log1p.f64 9))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))))
3.0ms
re
@-inf
(*.f64 (/.f64 1 (sqrt.f64 (log1p.f64 9))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))))
1.0ms
im
@0
(/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9)))
1.0ms
re
@inf
(*.f64 (/.f64 1 (sqrt.f64 (log1p.f64 9))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))))

rewrite48.0ms (3.1%)

Algorithm
batch-egg-rewrite
Rules
500×log-prod_binary64
258×pow2_binary64
185×pow1/3_binary64
180×expm1-udef_binary64
180×log1p-udef_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify13.0ms (0.9%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
011552
114552
Stop Event
saturated
Counts
157 → 110
Calls
Call 1
Inputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
Outputs
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))
(*.f64 (atan2.f64 im re) (sqrt.f64 (/.f64 1 (log.f64 10))))

prune64.0ms (4.1%)

Pruning

6 alts after pruning (4 fresh and 2 done)

PrunedKeptTotal
New1091110
Fresh033
Picked011
Done011
Total1096115
Error
0b
Counts
115 → 6
Alt Table
StatusErrorProgram
6.1b
(neg.f64 (cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 1/10) 3))))
0.8b
(*.f64 (/.f64 1 (sqrt.f64 (log1p.f64 9))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))))
1.2b
(/.f64 (pow.f64 (log.f64 10) -1/2) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)))
29.2b
(neg.f64 (pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
1.2b
(pow.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re)) -1)
Compiler

Compiled 1840 to 1399 computations (24% saved)

localize9.0ms (0.6%)

Local error

Found 2 expressions with local error:

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

series7.0ms (0.5%)

Counts
2 → 48
Calls

12 calls:

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

rewrite50.0ms (3.2%)

Algorithm
batch-egg-rewrite
Rules
556×log-prod_binary64
200×expm1-udef_binary64
199×log1p-udef_binary64
175×log-pow_binary64
117×add-sqr-sqrt_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify22.0ms (1.4%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
011552
116480
221480
332480
432480
534480
636480
Stop Event
saturated
Counts
130 → 85
Calls
Call 1
Inputs
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
Outputs
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(*.f64 (/.f64 1 (atan2.f64 im re)) (sqrt.f64 (log.f64 10)))
(/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))
(/.f64 (atan2.f64 im re) (log.f64 10))

prune54.0ms (3.4%)

Pruning

6 alts after pruning (3 fresh and 3 done)

PrunedKeptTotal
New85085
Fresh033
Picked011
Done022
Total85691
Error
0b
Counts
91 → 6
Alt Table
StatusErrorProgram
6.1b
(neg.f64 (cbrt.f64 (/.f64 (pow.f64 (atan2.f64 im re) 3) (pow.f64 (log.f64 1/10) 3))))
0.8b
(*.f64 (/.f64 1 (sqrt.f64 (log1p.f64 9))) (/.f64 (atan2.f64 im re) (sqrt.f64 (log1p.f64 9))))
1.2b
(/.f64 (pow.f64 (log.f64 10) -1/2) (/.f64 (sqrt.f64 (log.f64 10)) (atan2.f64 im re)))
29.2b
(neg.f64 (pow.f64 (sqrt.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10))) 2))
0.1b
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
1.2b
(pow.f64 (/.f64 (log1p.f64 9) (atan2.f64 im re)) -1)
Compiler

Compiled 1474 to 1120 computations (24% saved)

regimes104.0ms (6.6%)

Accuracy

Total 0.1b remaining (94%)

Threshold costs 0.1b (94%)

Counts
44 → 1
Compiler

Compiled 510 to 337 computations (33.9% saved)

simplify2.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0811
11411
21811
32111
42211
Stop Event
saturated
Calls
Call 1
Inputs
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
Outputs
(neg.f64 (/.f64 (atan2.f64 im re) (log.f64 1/10)))
(/.f64 (neg.f64 (atan2.f64 im re)) (log.f64 1/10))

end92.0ms (5.9%)

Stop Event
fuel
Compiler

Compiled 92 to 76 computations (17.4% saved)

Profiling

Loading profile data...