math.log/1 on complex, imaginary part

Time bar (total: 1.3s)

analyze1.0ms (0.1%)

Memory
2.0MiB live, 2.0MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
50%50%50%0.1%0%0%0%2
75%74.9%25%0.1%0%0%0%3
87.5%87.4%12.5%0.1%0%0%0%4
93.8%93.7%6.2%0.1%0%0%0%5
96.9%96.8%3.1%0.1%0%0%0%6
98.4%98.3%1.6%0.1%0%0%0%7
99.2%99.1%0.8%0.1%0%0%0%8
99.6%99.5%0.4%0.1%0%0%0%9
99.8%99.7%0.2%0.1%0%0%0%10
99.9%99.8%0.1%0.1%0%0%0%11
100%99.9%0%0.1%0%0%0%12
Compiler

Compiled 5 to 5 computations (0% saved)

sample569.0ms (43.7%)

Memory
-26.0MiB live, 742.8MiB allocated
Samples
266.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 92.0ms
ival-atan2: 83.0ms (90.1% of total)
ival-true: 6.0ms (6.5% of total)
ival-assert: 3.0ms (3.3% of total)
Bogosity

preprocess39.0ms (3%)

Memory
34.9MiB live, 74.1MiB allocated
Algorithm
egg-herbie
Rules
12×sub-neg
fma-define
+-commutative
*-commutative
associate--r+
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
016115
126115
234115
339115
456115
569115
680115
Stop Event
saturated
Calls
Call 1
Inputs
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im (neg.f64 re))
(atan2.f64 (neg.f64 im) re)
(neg.f64 (atan2.f64 im (neg.f64 re)))
(neg.f64 (atan2.f64 (neg.f64 im) re))
(atan2.f64 re im)
Outputs
(atan2.f64 im re)
(atan2.f64 im re)
(atan2.f64 im (neg.f64 re))
(atan2.f64 (neg.f64 im) re)
(neg.f64 (atan2.f64 im (neg.f64 re)))
(neg.f64 (atan2.f64 (neg.f64 im) re))
(atan2.f64 re im)

explain33.0ms (2.5%)

Memory
-21.2MiB live, 55.3MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-re
00-0-(atan2.f64 im re)
00-0-im
Confusion
Predicted +Predicted -
+00
-0256
Precision
0/0
Recall
0/0
Confusion?
Predicted +Predicted MaybePredicted -
+000
-00256
Precision?
0/0
Recall?
0/0
Freqs
test
numberfreq
0256
Total Confusion?
Predicted +Predicted MaybePredicted -
+000
-001
Precision?
0/0
Recall?
0/0
Samples
17.0ms512×0valid
Compiler

Compiled 24 to 16 computations (33.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 5.0ms
ival-atan2: 4.0ms (83.3% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

eval0.0ms (0%)

Memory
0.4MiB live, 0.4MiB allocated
Compiler

Compiled 2 to 2 computations (0% saved)

prune1.0ms (0%)

Memory
1.3MiB live, 1.3MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(atan2.f64 im re)
Compiler

Compiled 5 to 3 computations (40% saved)

simplify5.0ms (0.4%)

Memory
8.2MiB live, 8.2MiB allocated
Algorithm
egg-herbie
Localize:

Found 1 expressions of interest:

NewMetricScoreProgram
cost-diff0
(atan2.f64 im re)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0821
Stop Event
saturated
Calls
Call 1
Inputs
(atan2.f64 im re)
im
re
Outputs
(atan2.f64 im re)
im
re

localize17.0ms (1.3%)

Memory
-17.1MiB live, 23.8MiB allocated
Localize:

Found 1 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(atan2.f64 im re)
Samples
12.0ms256×0valid
Compiler

Compiled 7 to 5 computations (28.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 2.0ms
ival-atan2: 2.0ms (83.1% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series1.0ms (0.1%)

Memory
1.0MiB live, 1.0MiB allocated
Counts
1 → 0
Calls
Call 1
Inputs
#<alt (atan2.f64 im re)>
Outputs
Calls

6 calls:

TimeVariablePointExpression
0.0ms
re
@0
(atan2 im re)
0.0ms
im
@0
(atan2 im re)
0.0ms
im
@-inf
(atan2 im re)
0.0ms
re
@-inf
(atan2 im re)
0.0ms
im
@inf
(atan2 im re)

rewrite481.0ms (36.9%)

Memory
20.3MiB live, 250.2MiB allocated
Algorithm
batch-egg-rewrite
Rules
792×log1p-expm1-u
289×associate-*r*
238×associate-*l*
235×expm1-log1p-u
226×add-exp-log
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0813
16413
266113
3705013
Stop Event
node limit
Counts
1 → 48
Calls
Call 1
Inputs
(atan2.f64 im re)
Outputs
(+.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal -1 binary64))
(+.f64 #s(literal 0 binary64) (atan2.f64 im re))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (atan2.f64 im re))) #s(literal 2 binary64))) (log.f64 (cbrt.f64 (exp.f64 (atan2.f64 im re)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (atan2.f64 im re)))) (log.f64 (sqrt.f64 (exp.f64 (atan2.f64 im re)))))
(-.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 1 binary64))
(*.f64 (atan2.f64 im re) #s(literal 1 binary64))
(*.f64 (atan2.f64 im re) (log.f64 (E.f64)))
(*.f64 #s(literal 1 binary64) (atan2.f64 im re))
(*.f64 (cbrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64)))
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64)) (cbrt.f64 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (atan2.f64 im re)))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)) (*.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64))))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64)))) (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)) (cbrt.f64 (atan2.f64 im re))))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)) (*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64))))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)) (sqrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 3/2 binary64))))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)) (*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)) (sqrt.f64 (atan2.f64 im re))))
(*.f64 (pow.f64 #s(literal 1 binary64) #s(literal 1/3 binary64)) (atan2.f64 im re))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))) #s(literal 2 binary64)) #s(literal 1/3 binary64)) (cbrt.f64 (cbrt.f64 (atan2.f64 im re))))
(*.f64 (pow.f64 (pow.f64 (atan2.f64 im re) #s(literal 5/2 binary64)) #s(literal 1/3 binary64)) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(*.f64 (*.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (atan2.f64 im re))) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))) #s(literal 2 binary64))) (cbrt.f64 (cbrt.f64 (atan2.f64 im re))))
(*.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 5/2 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(*.f64 (*.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)))
(*.f64 (sqrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 3/2 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 5 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(*.f64 (*.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))))) (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64)) (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64))) (cbrt.f64 (cbrt.f64 (atan2.f64 im re))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64)) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(/.f64 (-.f64 (pow.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 3 binary64)) #s(literal 1 binary64)) (+.f64 (*.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) (+.f64 (atan2.f64 im re) #s(literal 1 binary64))) (+.f64 #s(literal 1 binary64) (+.f64 (atan2.f64 im re) #s(literal 1 binary64)))))
(/.f64 (-.f64 (*.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) (+.f64 (atan2.f64 im re) #s(literal 1 binary64))) #s(literal 1 binary64)) (+.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 1 binary64)))
(pow.f64 (atan2.f64 im re) #s(literal 1 binary64))
(pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 3 binary64))
(pow.f64 (pow.f64 (atan2.f64 im re) #s(literal 2 binary64)) #s(literal 1/2 binary64))
(pow.f64 (pow.f64 (atan2.f64 im re) #s(literal 3 binary64)) #s(literal 1/3 binary64))
(pow.f64 (sqrt.f64 (atan2.f64 im re)) #s(literal 2 binary64))
(pow.f64 (E.f64) (log.f64 (atan2.f64 im re)))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (atan2.f64 im re))) #s(literal 2 binary64))) (cbrt.f64 (log.f64 (atan2.f64 im re))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (atan2.f64 im re)))) (sqrt.f64 (log.f64 (atan2.f64 im re))))
(sqrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 2 binary64)))
(fabs.f64 (atan2.f64 im re))
(log.f64 (exp.f64 (atan2.f64 im re)))
(cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 3 binary64)))
(expm1.f64 (log1p.f64 (atan2.f64 im re)))
(log1p.f64 (expm1.f64 (atan2.f64 im re)))
(exp.f64 (log.f64 (atan2.f64 im re)))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 3 binary64)))
(exp.f64 (*.f64 (*.f64 #s(literal 3 binary64) (log.f64 (atan2.f64 im re))) #s(literal 1/3 binary64)))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)))

simplify56.0ms (4.3%)

Memory
-1.6MiB live, 37.2MiB allocated
Algorithm
egg-herbie
Rules
374×distribute-lft-out
331×associate-+l-
307×associate-+r-
292×fma-define
291×*-commutative
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01331310
12341310
26291296
330051232
Stop Event
node limit
Counts
48 → 63
Calls
Call 1
Inputs
(+.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal -1 binary64))
(+.f64 #s(literal 0 binary64) (atan2.f64 im re))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (atan2.f64 im re))) #s(literal 2 binary64))) (log.f64 (cbrt.f64 (exp.f64 (atan2.f64 im re)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (atan2.f64 im re)))) (log.f64 (sqrt.f64 (exp.f64 (atan2.f64 im re)))))
(-.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 1 binary64))
(*.f64 (atan2.f64 im re) #s(literal 1 binary64))
(*.f64 (atan2.f64 im re) (log.f64 (E.f64)))
(*.f64 #s(literal 1 binary64) (atan2.f64 im re))
(*.f64 (cbrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64)))
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64)) (cbrt.f64 (atan2.f64 im re)))
(*.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (atan2.f64 im re)))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)) (*.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64))))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64)))) (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)) (cbrt.f64 (atan2.f64 im re))))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)) (*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64))))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)) (sqrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 3/2 binary64))))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)) (*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)) (sqrt.f64 (atan2.f64 im re))))
(*.f64 (pow.f64 #s(literal 1 binary64) #s(literal 1/3 binary64)) (atan2.f64 im re))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))) #s(literal 2 binary64)) #s(literal 1/3 binary64)) (cbrt.f64 (cbrt.f64 (atan2.f64 im re))))
(*.f64 (pow.f64 (pow.f64 (atan2.f64 im re) #s(literal 5/2 binary64)) #s(literal 1/3 binary64)) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(*.f64 (*.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (atan2.f64 im re))) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))) #s(literal 2 binary64))) (cbrt.f64 (cbrt.f64 (atan2.f64 im re))))
(*.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 5/2 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(*.f64 (*.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)))
(*.f64 (sqrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 3/2 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 5 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(*.f64 (*.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))))) (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64)) (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64))) (cbrt.f64 (cbrt.f64 (atan2.f64 im re))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64)) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(/.f64 (-.f64 (pow.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 3 binary64)) #s(literal 1 binary64)) (+.f64 (*.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) (+.f64 (atan2.f64 im re) #s(literal 1 binary64))) (+.f64 #s(literal 1 binary64) (+.f64 (atan2.f64 im re) #s(literal 1 binary64)))))
(/.f64 (-.f64 (*.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) (+.f64 (atan2.f64 im re) #s(literal 1 binary64))) #s(literal 1 binary64)) (+.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 1 binary64)))
(pow.f64 (atan2.f64 im re) #s(literal 1 binary64))
(pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 3 binary64))
(pow.f64 (pow.f64 (atan2.f64 im re) #s(literal 2 binary64)) #s(literal 1/2 binary64))
(pow.f64 (pow.f64 (atan2.f64 im re) #s(literal 3 binary64)) #s(literal 1/3 binary64))
(pow.f64 (sqrt.f64 (atan2.f64 im re)) #s(literal 2 binary64))
(pow.f64 (E.f64) (log.f64 (atan2.f64 im re)))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (atan2.f64 im re))) #s(literal 2 binary64))) (cbrt.f64 (log.f64 (atan2.f64 im re))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (atan2.f64 im re)))) (sqrt.f64 (log.f64 (atan2.f64 im re))))
(sqrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 2 binary64)))
(fabs.f64 (atan2.f64 im re))
(log.f64 (exp.f64 (atan2.f64 im re)))
(cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 3 binary64)))
(expm1.f64 (log1p.f64 (atan2.f64 im re)))
(log1p.f64 (expm1.f64 (atan2.f64 im re)))
(exp.f64 (log.f64 (atan2.f64 im re)))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 3 binary64)))
(exp.f64 (*.f64 (*.f64 #s(literal 3 binary64) (log.f64 (atan2.f64 im re))) #s(literal 1/3 binary64)))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)))
Outputs
(+.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal -1 binary64))
(atan2.f64 im re)
(+.f64 #s(literal 0 binary64) (atan2.f64 im re))
(atan2.f64 im re)
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (atan2.f64 im re))) #s(literal 2 binary64))) (log.f64 (cbrt.f64 (exp.f64 (atan2.f64 im re)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (atan2.f64 im re)))) (log.f64 (sqrt.f64 (exp.f64 (atan2.f64 im re)))))
(*.f64 #s(literal 2 binary64) (log.f64 (sqrt.f64 (exp.f64 (atan2.f64 im re)))))
(-.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 1 binary64))
(atan2.f64 im re)
(*.f64 (atan2.f64 im re) #s(literal 1 binary64))
(atan2.f64 im re)
(*.f64 (atan2.f64 im re) (log.f64 (E.f64)))
(atan2.f64 im re)
(*.f64 #s(literal 1 binary64) (atan2.f64 im re))
(atan2.f64 im re)
(*.f64 (cbrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64)))
(atan2.f64 im re)
(*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64)) (cbrt.f64 (atan2.f64 im re)))
(atan2.f64 im re)
(*.f64 (sqrt.f64 (atan2.f64 im re)) (sqrt.f64 (atan2.f64 im re)))
(atan2.f64 im re)
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)) (*.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64))))
(atan2.f64 im re)
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64)))) (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)) (cbrt.f64 (atan2.f64 im re))))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64)))) (*.f64 (cbrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64))))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)) (*.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))))))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64)))) (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 5 binary64)))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)) (*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)) (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64))))
(atan2.f64 im re)
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)) (sqrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 3/2 binary64))))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)) (*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)) (sqrt.f64 (atan2.f64 im re))))
(atan2.f64 im re)
(*.f64 (pow.f64 #s(literal 1 binary64) #s(literal 1/3 binary64)) (atan2.f64 im re))
(atan2.f64 im re)
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))) #s(literal 2 binary64)) #s(literal 1/3 binary64)) (cbrt.f64 (cbrt.f64 (atan2.f64 im re))))
(*.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))) #s(literal 2 binary64))))
(*.f64 (pow.f64 (pow.f64 (atan2.f64 im re) #s(literal 5/2 binary64)) #s(literal 1/3 binary64)) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)) (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 5/2 binary64))))
(*.f64 (*.f64 (sqrt.f64 (atan2.f64 im re)) (cbrt.f64 (atan2.f64 im re))) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)) (*.f64 (cbrt.f64 (atan2.f64 im re)) (sqrt.f64 (atan2.f64 im re))))
(*.f64 (cbrt.f64 (atan2.f64 im re)) (*.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64))))
(*.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)) #s(literal 3 binary64)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))) #s(literal 2 binary64))) (cbrt.f64 (cbrt.f64 (atan2.f64 im re))))
(*.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))) #s(literal 2 binary64))))
(*.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 5/2 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)) (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 5/2 binary64))))
(*.f64 (*.f64 (sqrt.f64 (atan2.f64 im re)) (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)))
(atan2.f64 im re)
(*.f64 (sqrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 3/2 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/4 binary64)) (sqrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 3/2 binary64))))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 5 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(*.f64 (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)) (sqrt.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 5 binary64))))
(*.f64 (*.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))))) (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64)))) (*.f64 (cbrt.f64 (atan2.f64 im re)) (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64))))
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)) (*.f64 (cbrt.f64 (atan2.f64 im re)) (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64))))))
(*.f64 (cbrt.f64 (cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 4 binary64)))) (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 5 binary64)))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64)) (pow.f64 (cbrt.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 2 binary64))) (cbrt.f64 (cbrt.f64 (atan2.f64 im re))))
(atan2.f64 im re)
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 2 binary64)) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64))) (pow.f64 (atan2.f64 im re) #s(literal 1/6 binary64)))
(atan2.f64 im re)
(/.f64 (-.f64 (pow.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 3 binary64)) #s(literal 1 binary64)) (+.f64 (*.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) (+.f64 (atan2.f64 im re) #s(literal 1 binary64))) (+.f64 #s(literal 1 binary64) (+.f64 (atan2.f64 im re) #s(literal 1 binary64)))))
(/.f64 (+.f64 (pow.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 3 binary64)) #s(literal -1 binary64)) (fma.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) (+.f64 (atan2.f64 im re) #s(literal 2 binary64))))
(/.f64 (+.f64 #s(literal -1 binary64) (pow.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 3 binary64))) (fma.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) (+.f64 (atan2.f64 im re) #s(literal 2 binary64))))
(/.f64 (+.f64 #s(literal -1 binary64) (pow.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 3 binary64))) (+.f64 #s(literal 1 binary64) (*.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) (+.f64 (atan2.f64 im re) #s(literal 2 binary64)))))
(/.f64 (+.f64 #s(literal -1 binary64) (pow.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 3 binary64))) (fma.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) (+.f64 (atan2.f64 im re) #s(literal 2 binary64)) #s(literal 1 binary64)))
(/.f64 (-.f64 (*.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) (+.f64 (atan2.f64 im re) #s(literal 1 binary64))) #s(literal 1 binary64)) (+.f64 (+.f64 (atan2.f64 im re) #s(literal 1 binary64)) #s(literal 1 binary64)))
(atan2.f64 im re)
(pow.f64 (atan2.f64 im re) #s(literal 1 binary64))
(atan2.f64 im re)
(pow.f64 (cbrt.f64 (atan2.f64 im re)) #s(literal 3 binary64))
(atan2.f64 im re)
(pow.f64 (pow.f64 (atan2.f64 im re) #s(literal 2 binary64)) #s(literal 1/2 binary64))
(atan2.f64 im re)
(pow.f64 (pow.f64 (atan2.f64 im re) #s(literal 3 binary64)) #s(literal 1/3 binary64))
(atan2.f64 im re)
(pow.f64 (sqrt.f64 (atan2.f64 im re)) #s(literal 2 binary64))
(atan2.f64 im re)
(pow.f64 (E.f64) (log.f64 (atan2.f64 im re)))
(atan2.f64 im re)
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (atan2.f64 im re))) #s(literal 2 binary64))) (cbrt.f64 (log.f64 (atan2.f64 im re))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (atan2.f64 im re)))) (sqrt.f64 (log.f64 (atan2.f64 im re))))
(sqrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 2 binary64)))
(atan2.f64 im re)
(fabs.f64 (atan2.f64 im re))
(atan2.f64 im re)
(log.f64 (exp.f64 (atan2.f64 im re)))
(atan2.f64 im re)
(cbrt.f64 (pow.f64 (atan2.f64 im re) #s(literal 3 binary64)))
(atan2.f64 im re)
(expm1.f64 (log1p.f64 (atan2.f64 im re)))
(atan2.f64 im re)
(log1p.f64 (expm1.f64 (atan2.f64 im re)))
(atan2.f64 im re)
(exp.f64 (log.f64 (atan2.f64 im re)))
(atan2.f64 im re)
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (atan2.f64 im re))) #s(literal 3 binary64)))
(atan2.f64 im re)
(exp.f64 (*.f64 (*.f64 #s(literal 3 binary64) (log.f64 (atan2.f64 im re))) #s(literal 1/3 binary64)))
(atan2.f64 im re)
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (atan2.f64 im re))) #s(literal 2 binary64)))
(atan2.f64 im re)

eval7.0ms (0.5%)

Memory
10.0MiB live, 10.0MiB allocated
Compiler

Compiled 778 to 153 computations (80.3% saved)

prune70.0ms (5.4%)

Memory
-26.6MiB live, 15.1MiB allocated
Pruning

1 alts after pruning (0 fresh and 1 done)

PrunedKeptTotal
New63063
Fresh000
Picked011
Done000
Total63164
Accuracy
100.0%
Counts
64 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(atan2.f64 im re)
Compiler

Compiled 10 to 6 computations (40% saved)

simplify4.0ms (0.3%)

Memory
3.5MiB live, 3.5MiB allocated
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0813
Stop Event
saturated
Calls
Call 1
Inputs
(atan2.f64 im re)
Outputs
(atan2.f64 im re)

soundness0.0ms (0%)

Memory
0.7MiB live, 0.7MiB allocated
Stop Event
done
Compiler

Compiled 5 to 3 computations (40% saved)

preprocess18.0ms (1.4%)

Memory
9.9MiB live, 48.2MiB allocated
Compiler

Compiled 20 to 12 computations (40% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...