math.arg on complex

Time bar (total: 927.0ms)

analyze2.0ms (0.2%)

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 6 to 4 computations (33.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 1.0ms
ival-atan2: 1.0ms (107.3% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

sample449.0ms (48.4%)

Results
268.0ms8256×0valid
Precisions
Click to see histograms. Total time spent on operations: 87.0ms
ival-atan2: 77.0ms (88.6% of total)
const: 7.0ms (8.1% of total)
backward-pass: 3.0ms (3.5% of total)
Bogosity

preprocess41.0ms (4.4%)

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)

explain30.0ms (3.2%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
00-0-im
00-0-(atan2.f64 im re)
00-0-re
Results
19.0ms512×0valid
Compiler

Compiled 21 to 11 computations (47.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 6.0ms
ival-atan2: 5.0ms (85.5% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune1.0ms (0.1%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(atan2.f64 im re)
Compiler

Compiled 5 to 3 computations (40% saved)

localize20.0ms (2.2%)

Algorithm
egg-herbie
Localize:

Found 2 expressions of interest:

NewMetricScoreProgram
cost-diff0
(atan2.f64 im re)
accuracy100.0%
(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
Results
11.0ms256×0valid
Compiler

Compiled 8 to 4 computations (50% saved)

Precisions
Click to see histograms. Total time spent on operations: 4.0ms
ival-atan2: 4.0ms (103.8% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series1.0ms (0.1%)

Counts
1 → 0
Calls
Call 1
Inputs
#<alt (atan2.f64 im re)>
Outputs
Calls

6 calls:

TimeVariablePointExpression
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)
0.0ms
re
@inf
(atan2 im re)

rewrite287.0ms (31%)

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

simplify62.0ms (6.6%)

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)

eval8.0ms (0.8%)

Compiler

Compiled 778 to 153 computations (80.3% saved)

prune10.0ms (1%)

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)

simplify2.0ms (0.2%)

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

Stop Event
done
Compiler

Compiled 5 to 3 computations (40% saved)

preprocess17.0ms (1.8%)

Compiler

Compiled 20 to 12 computations (40% saved)

end0.0ms (0%)

Profiling

Loading profile data...