2atan (example 3.5)

Time bar (total: 4.2s)

analyze4.0ms (0.1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%8.1%91.9%0%0%0%0
0%0%8.1%91.9%0%0%0%1
50%4.1%4.1%91.9%0%0%0%2
75%6.1%2%91.9%0%0%0%3
87.5%7.1%1%91.9%0%0%0%4
93.8%7.6%0.5%91.9%0%0%0%5
96.9%7.9%0.3%91.9%0%0%0%6
98.4%8%0.1%91.9%0%0%0%7
99.2%8%0.1%91.9%0%0%0%8
99.6%8.1%0%91.9%0%0%0%9
99.8%8.1%0%91.9%0%0%0%10
99.9%8.1%0%91.9%0%0%0%11
100%8.1%0%91.9%0%0%0%12
Compiler

Compiled 15 to 10 computations (33.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 2.0ms
ival->: 1.0ms (44% of total)
ival-add: 0.0ms (0% of total)
ival-atan: 0.0ms (0% of total)
ival-sub: 0.0ms (0% of total)
ival-and: 0.0ms (0% of total)
...c/correct-round.rkt:119:19: 0.0ms (0% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)
ival-<: 0.0ms (0% of total)

sample2.1s (49.2%)

Results
1.6s7330×1valid
165.0ms651×2valid
26.0ms275×0valid
Precisions
Click to see histograms. Total time spent on operations: 1.3s
ival-atan: 602.0ms (45.9% of total)
backward-pass: 171.0ms (13% of total)
...c/correct-round.rkt:119:19: 164.0ms (12.5% of total)
ival-add: 119.0ms (9.1% of total)
ival-sub: 104.0ms (7.9% of total)
ival->: 73.0ms (5.6% of total)
ival-and: 34.0ms (2.6% of total)
ival-<: 29.0ms (2.2% of total)
const: 15.0ms (1.1% of total)
Bogosity

preprocess37.0ms (0.9%)

Algorithm
egg-herbie
Rules
270×sum3-define
244×fnmadd-define
184×fmsub-define
168×fnmsub-define
168×fma-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01226
12524
25223
39923
419023
538723
657923
775523
884923
995523
10103323
11103923
067
1117
2157
3227
4327
5647
61227
72107
82957
94017
104797
114857
04857
Stop Event
iter limit
saturated
saturated
Calls
Call 1
Inputs
(- (atan (+ N 1)) (atan N))
Outputs
(- (atan (+ N 1)) (atan N))
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
Call 2
Inputs
(- (atan (+ N 1)) (atan N))
(- (atan (+ (neg N) 1)) (atan (neg N)))
(neg (- (atan (+ (neg N) 1)) (atan (neg N))))
Outputs
(- (atan (+ N 1)) (atan N))
(- (atan (+ (neg N) 1)) (atan (neg N)))
(- (atan (- 1 N)) (atan (neg N)))
(neg (- (atan (+ (neg N) 1)) (atan (neg N))))
(- (atan (neg N)) (atan (- 1 N)))

explain138.0ms (3.3%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
2550-0-(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
00-0-(atan.f64 (+.f64 N #s(literal 1 binary64)))
00-0-#s(literal 1 binary64)
00-0-(atan.f64 N)
00-0-(+.f64 N #s(literal 1 binary64))
00-0-N
Results
95.0ms454×1valid
11.0ms40×2valid
2.0ms18×0valid
Compiler

Compiled 48 to 20 computations (58.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 49.0ms
ival-atan: 23.0ms (46.7% of total)
backward-pass: 13.0ms (26.4% of total)
ival-add: 7.0ms (14.2% of total)
ival-sub: 6.0ms (12.2% of total)
const: 1.0ms (2% of total)

eval0.0ms (0%)

Compiler

Compiled 8 to 6 computations (25% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
8.9%
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
Compiler

Compiled 8 to 6 computations (25% saved)

simplify13.0ms (0.3%)

Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(atan.f64 N)
cost-diff0
(+.f64 N #s(literal 1 binary64))
cost-diff0
(atan.f64 (+.f64 N #s(literal 1 binary64)))
cost-diff0
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
Rules
124×fnmadd-define
122×sum3-define
80×fma-lowering-fma.f32
80×fnmsub-define
80×fmsub-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0618
11118
21518
32218
43218
56418
612218
721018
829518
940118
1047918
1148518
048518
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(- (atan (+ N 1)) (atan N))
(atan (+ N 1))
(+ N 1)
N
1
(atan N)
Outputs
(- (atan (+ N 1)) (atan N))
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
(atan (+ N 1))
(atan.f64 (+.f64 N #s(literal 1 binary64)))
(+ N 1)
(+.f64 N #s(literal 1 binary64))
N
1
#s(literal 1 binary64)
(atan N)
(atan.f64 N)

localize63.0ms (1.5%)

Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(+.f64 N #s(literal 1 binary64))
accuracy100.0%
(atan.f64 (+.f64 N #s(literal 1 binary64)))
accuracy100.0%
(atan.f64 N)
accuracy8.9%
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
Results
47.0ms227×1valid
5.0ms20×2valid
1.0ms0valid
Compiler

Compiled 20 to 7 computations (65% saved)

Precisions
Click to see histograms. Total time spent on operations: 24.0ms
ival-atan: 11.0ms (46.2% of total)
backward-pass: 6.0ms (25.2% of total)
ival-add: 4.0ms (16.8% of total)
ival-sub: 3.0ms (12.6% of total)
const: 1.0ms (4.2% of total)

series1.0ms (0%)

Counts
4 → 48
Calls
Call 1
Inputs
#<alt (- (atan (+ N 1)) (atan N))>
#<alt (atan (+ N 1))>
#<alt (+ N 1)>
#<alt (atan N)>
Outputs
#<alt (- (atan (+ 1 N)) (atan N))>
#<alt (- (atan (+ 1 N)) (atan N))>
#<alt (- (atan (+ 1 N)) (atan N))>
#<alt (- (atan (+ 1 N)) (atan N))>
#<alt (- (atan (+ 1 N)) (atan N))>
#<alt (- (atan (+ 1 N)) (atan N))>
#<alt (- (atan (+ 1 N)) (atan N))>
#<alt (- (atan (+ 1 N)) (atan N))>
#<alt (- (atan (- 1 (* -1 N))) (atan N))>
#<alt (- (atan (- 1 (* -1 N))) (atan N))>
#<alt (- (atan (- 1 (* -1 N))) (atan N))>
#<alt (- (atan (- 1 (* -1 N))) (atan N))>
#<alt (atan (+ 1 N))>
#<alt (atan (+ 1 N))>
#<alt (atan (+ 1 N))>
#<alt (atan (+ 1 N))>
#<alt (atan (+ 1 N))>
#<alt (atan (+ 1 N))>
#<alt (atan (+ 1 N))>
#<alt (atan (+ 1 N))>
#<alt (atan (- 1 (* -1 N)))>
#<alt (atan (- 1 (* -1 N)))>
#<alt (atan (- 1 (* -1 N)))>
#<alt (atan (- 1 (* -1 N)))>
#<alt 1>
#<alt (+ 1 N)>
#<alt (+ 1 N)>
#<alt (+ 1 N)>
#<alt N>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt N>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (atan N)>
#<alt (atan N)>
#<alt (atan N)>
#<alt (atan N)>
#<alt (atan N)>
#<alt (atan N)>
#<alt (atan N)>
#<alt (atan N)>
#<alt (atan N)>
#<alt (atan N)>
#<alt (atan N)>
#<alt (atan N)>
Calls

12 calls:

TimeVariablePointExpression
0.0ms
N
@inf
(+ N 1)
0.0ms
N
@-inf
(- (atan (+ N 1)) (atan N))
0.0ms
N
@inf
(- (atan (+ N 1)) (atan N))
0.0ms
N
@0
(- (atan (+ N 1)) (atan N))
0.0ms
N
@-inf
(+ N 1)

rewrite156.0ms (3.7%)

Algorithm
batch-egg-rewrite
Rules
1896×sum5-define
1840×fnmadd-define
1836×fma-lowering-fma.f32
1836×fma-lowering-fma.f64
1790×fmm-def
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0616
11516
22716
35416
49116
517116
628816
747716
8220416
9365016
10657016
0842316
Stop Event
iter limit
node limit
Counts
4 → 278
Calls
Call 1
Inputs
(- (atan (+ N 1)) (atan N))
(atan (+ N 1))
(+ N 1)
(atan N)
Outputs
(+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)))
(+.f64 (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal 0 binary64))
(+.f64 #s(literal 0 binary64) (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(+.f64 (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (*.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) #s(literal 1 binary64)))
(+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (*.f64 (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal -1 binary64)))
(+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))))
(+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(+.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(+.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(+.f64 (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(+.f64 (-.f64 (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (atan.f64 N)) (atan.f64 N))
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
(-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))))
(-.f64 (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal 0 binary64))
(-.f64 #s(literal 0 binary64) (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(-.f64 (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (+.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(-.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(-.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(-.f64 (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(-.f64 (-.f64 (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (atan.f64 N)) (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(fma.f64 #s(literal 1 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(fma.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 N)) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(fma.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)))
(fma.f64 #s(literal 1 binary64) (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal 0 binary64))
(fma.f64 #s(literal 1 binary64) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (neg.f64 (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (neg.f64 (-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(fma.f64 #s(literal 1 binary64) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(fma.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -1 binary64) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64) (neg.f64 (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64) (neg.f64 (-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(fma.f64 (atan.f64 N) #s(literal -1 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) #s(literal 1 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(fma.f64 #s(literal -1 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)))
(fma.f64 #s(literal -1 binary64) (atan.f64 N) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(fma.f64 #s(literal -1 binary64) (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal 0 binary64))
(fma.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 #s(literal -1 binary64) (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 #s(literal -1 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64)) (neg.f64 (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64)) (neg.f64 (-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(fma.f64 #s(literal -1 binary64) (+.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(fma.f64 (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal -1 binary64) #s(literal 0 binary64))
(fma.f64 #s(literal 2 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 #s(literal 2 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal 1 binary64) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal 2 binary64) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal -2 binary64) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal -3 binary64) (neg.f64 (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal -3 binary64) (neg.f64 (-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(fma.f64 (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal 1 binary64) #s(literal 0 binary64))
(fma.f64 (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)) #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) #s(literal -1 binary64) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) #s(literal 1 binary64) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))) #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 #s(literal -2 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))))
(fma.f64 #s(literal -2 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 #s(literal 3 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (neg.f64 (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 #s(literal 3 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (neg.f64 (-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(neg.f64 (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(*.f64 #s(literal 1 binary64) (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(*.f64 #s(literal -1 binary64) (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(*.f64 (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal -1 binary64))
(*.f64 (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal 1 binary64))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
(+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 0 binary64))
(+.f64 (atan.f64 N) (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(+.f64 (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (atan.f64 N))
(+.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(+.f64 (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 0 binary64))
(-.f64 (atan.f64 N) (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(-.f64 (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(-.f64 #s(literal 0 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64)))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(-.f64 (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (atan.f64 N))
(atan.f64 (+.f64 N #s(literal 1 binary64)))
(fma.f64 #s(literal 1 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 0 binary64))
(fma.f64 #s(literal 1 binary64) (atan.f64 N) (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(fma.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(fma.f64 #s(literal 1 binary64) (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (atan.f64 N))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(fma.f64 #s(literal 1 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 1 binary64) #s(literal 0 binary64))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(fma.f64 (atan.f64 N) #s(literal 1 binary64) (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) #s(literal -1 binary64) (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(fma.f64 #s(literal -1 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(fma.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 N)) (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(fma.f64 #s(literal -1 binary64) (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (atan.f64 N))
(fma.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal 0 binary64))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(fma.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(fma.f64 (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal -1 binary64) (atan.f64 N))
(fma.f64 #s(literal 2 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 #s(literal 2 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal -1 binary64) #s(literal 0 binary64))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal 2 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal -2 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal -3 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(fma.f64 (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal 1 binary64) (atan.f64 N))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 #s(literal -2 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)))
(fma.f64 #s(literal -2 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 #s(literal 3 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(neg.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(*.f64 #s(literal 1 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 1 binary64))
(*.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(*.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal -1 binary64))
(+.f64 N #s(literal 1 binary64))
(+.f64 #s(literal 1 binary64) N)
(+.f64 (+.f64 N #s(literal 1 binary64)) #s(literal 0 binary64))
(+.f64 #s(literal 0 binary64) (+.f64 N #s(literal 1 binary64)))
(-.f64 N #s(literal -1 binary64))
(-.f64 (+.f64 N #s(literal 1 binary64)) #s(literal 0 binary64))
(fma.f64 N #s(literal 1 binary64) #s(literal 1 binary64))
(fma.f64 #s(literal 1 binary64) N #s(literal 1 binary64))
(fma.f64 #s(literal 1 binary64) (+.f64 N #s(literal 1 binary64)) #s(literal 0 binary64))
(fma.f64 (+.f64 N #s(literal 1 binary64)) #s(literal 1 binary64) #s(literal 0 binary64))
(*.f64 #s(literal 1 binary64) (+.f64 N #s(literal 1 binary64)))
(*.f64 (+.f64 N #s(literal 1 binary64)) #s(literal 1 binary64))
(+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(+.f64 (atan.f64 N) #s(literal 0 binary64))
(+.f64 (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (*.f64 (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal 1 binary64)))
(+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (*.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) #s(literal -1 binary64)))
(+.f64 #s(literal 0 binary64) (atan.f64 N))
(+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))))
(+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (-.f64 (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))))))
(+.f64 (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (+.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))))
(+.f64 (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(+.f64 (+.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)))
(+.f64 (*.f64 (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal 1 binary64)) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(+.f64 (*.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) #s(literal -1 binary64)) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(+.f64 (+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(+.f64 (+.f64 (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(+.f64 (+.f64 (atan.f64 N) (atan.f64 N)) (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(+.f64 (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) (atan.f64 N))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(-.f64 (atan.f64 N) #s(literal 0 binary64))
(-.f64 (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(-.f64 #s(literal 0 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (+.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))))))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (-.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))
(-.f64 (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))))
(-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N))))
(-.f64 (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(-.f64 (+.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64)))
(-.f64 (+.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(-.f64 (+.f64 (atan.f64 N) (atan.f64 N)) (atan.f64 N))
(-.f64 (-.f64 (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(-.f64 (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (-.f64 #s(literal 0 binary64) (atan.f64 N))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(atan.f64 N)
(fma.f64 #s(literal 1 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(fma.f64 #s(literal 1 binary64) (atan.f64 N) #s(literal 0 binary64))
(fma.f64 #s(literal 1 binary64) (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(fma.f64 #s(literal 1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (atan.f64 (+.f64 N #s(literal 1 binary64))))))
(fma.f64 #s(literal 1 binary64) (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64)))))
(fma.f64 #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)) (neg.f64 (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)))))
(fma.f64 #s(literal 1 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 #s(literal 1 binary64) (+.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 1 binary64) (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -1 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64) (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (atan.f64 (+.f64 N #s(literal 1 binary64))))))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64)))))
(fma.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64) (neg.f64 (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)))))
(fma.f64 (atan.f64 N) #s(literal 1 binary64) #s(literal 0 binary64))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) #s(literal -1 binary64) #s(literal 0 binary64))
(fma.f64 #s(literal -1 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(fma.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 N)) #s(literal 0 binary64))
(fma.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(fma.f64 #s(literal -1 binary64) (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(fma.f64 #s(literal -1 binary64) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (atan.f64 (+.f64 N #s(literal 1 binary64))))))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))))
(fma.f64 #s(literal -1 binary64) (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64))) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 3 binary64)))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64)) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64)))))
(fma.f64 #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64)) (neg.f64 (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)))))
(fma.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))
(fma.f64 (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal 1 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(fma.f64 #s(literal 2 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))))
(fma.f64 #s(literal 2 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(fma.f64 #s(literal 2 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 #s(literal 2 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 #s(literal 2 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (atan.f64 (+.f64 N #s(literal 1 binary64))))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal 1 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal -1 binary64) (atan2.f64 #s(literal -1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal 2 binary64) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal 2 binary64) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal 2 binary64) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal 2 binary64) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (atan.f64 (+.f64 N #s(literal 1 binary64))))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal -2 binary64) (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal -3 binary64) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64)))))
(fma.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) #s(literal -3 binary64) (neg.f64 (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)))))
(fma.f64 (atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))) #s(literal -1 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))))
(fma.f64 (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)) #s(literal -1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) #s(literal 1 binary64) (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) #s(literal -1 binary64) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) #s(literal -1 binary64) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) #s(literal -1 binary64) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) #s(literal -1 binary64) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (atan.f64 (+.f64 N #s(literal 1 binary64))))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) #s(literal 1 binary64) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) #s(literal 1 binary64) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) #s(literal 1 binary64) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) #s(literal 1 binary64) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (atan.f64 (+.f64 N #s(literal 1 binary64))))))
(fma.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -2 binary64)) #s(literal -1 binary64) (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))))
(fma.f64 (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))) #s(literal 1 binary64) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)))
(fma.f64 #s(literal -2 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))))))
(fma.f64 #s(literal -2 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))))))
(fma.f64 #s(literal -2 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (neg.f64 (+.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))))))
(fma.f64 #s(literal -2 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan2.f64 (+.f64 N (+.f64 N #s(literal 1 binary64))) (-.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))) (atan.f64 (+.f64 N #s(literal 1 binary64))))))
(fma.f64 #s(literal -2 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64)))) (-.f64 (atan.f64 N) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64))))
(fma.f64 #s(literal 3 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (neg.f64 (-.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal -3 binary64)))))
(fma.f64 #s(literal 3 binary64) (atan.f64 (+.f64 N #s(literal 1 binary64))) (neg.f64 (+.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (-.f64 (*.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) #s(literal 2 binary64)) (atan.f64 N)))))
(neg.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)))
(*.f64 #s(literal 1 binary64) (atan.f64 N))
(*.f64 (atan.f64 N) #s(literal 1 binary64))
(*.f64 (-.f64 #s(literal 0 binary64) (atan.f64 N)) #s(literal -1 binary64))
(*.f64 #s(literal -1 binary64) (-.f64 #s(literal 0 binary64) (atan.f64 N)))

simplify36.0ms (0.9%)

Algorithm
egg-herbie
Rules
270×fnmadd-define
228×fma-lowering-fma.f32
228×fma-lowering-fma.f64
226×sum3-define
218×fma-define
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
014186
135186
249186
399186
4218186
5441186
6641186
7776186
8939186
91061186
101139186
111145186
01145186
Stop Event
iter limit
saturated
Counts
48 → 48
Calls
Call 1
Inputs
(- (atan (+ 1 N)) (atan N))
(- (atan (+ 1 N)) (atan N))
(- (atan (+ 1 N)) (atan N))
(- (atan (+ 1 N)) (atan N))
(- (atan (+ 1 N)) (atan N))
(- (atan (+ 1 N)) (atan N))
(- (atan (+ 1 N)) (atan N))
(- (atan (+ 1 N)) (atan N))
(- (atan (- 1 (* -1 N))) (atan N))
(- (atan (- 1 (* -1 N))) (atan N))
(- (atan (- 1 (* -1 N))) (atan N))
(- (atan (- 1 (* -1 N))) (atan N))
(atan (+ 1 N))
(atan (+ 1 N))
(atan (+ 1 N))
(atan (+ 1 N))
(atan (+ 1 N))
(atan (+ 1 N))
(atan (+ 1 N))
(atan (+ 1 N))
(atan (- 1 (* -1 N)))
(atan (- 1 (* -1 N)))
(atan (- 1 (* -1 N)))
(atan (- 1 (* -1 N)))
1
(+ 1 N)
(+ 1 N)
(+ 1 N)
N
(* N (+ 1 (/ 1 N)))
(* N (+ 1 (/ 1 N)))
(* N (+ 1 (/ 1 N)))
N
(* N (+ 1 (/ 1 N)))
(* N (+ 1 (/ 1 N)))
(* N (+ 1 (/ 1 N)))
(atan N)
(atan N)
(atan N)
(atan N)
(atan N)
(atan N)
(atan N)
(atan N)
(atan N)
(atan N)
(atan N)
(atan N)
Outputs
(- (atan (+ 1 N)) (atan N))
(-.f64 (atan.f64 (+.f64 #s(literal 1 binary64) N)) (atan.f64 N))
(- (atan (+ 1 N)) (atan N))
(-.f64 (atan.f64 (+.f64 #s(literal 1 binary64) N)) (atan.f64 N))
(- (atan (+ 1 N)) (atan N))
(-.f64 (atan.f64 (+.f64 #s(literal 1 binary64) N)) (atan.f64 N))
(- (atan (+ 1 N)) (atan N))
(-.f64 (atan.f64 (+.f64 #s(literal 1 binary64) N)) (atan.f64 N))
(- (atan (+ 1 N)) (atan N))
(-.f64 (atan.f64 (+.f64 #s(literal 1 binary64) N)) (atan.f64 N))
(- (atan (+ 1 N)) (atan N))
(-.f64 (atan.f64 (+.f64 #s(literal 1 binary64) N)) (atan.f64 N))
(- (atan (+ 1 N)) (atan N))
(-.f64 (atan.f64 (+.f64 #s(literal 1 binary64) N)) (atan.f64 N))
(- (atan (+ 1 N)) (atan N))
(-.f64 (atan.f64 (+.f64 #s(literal 1 binary64) N)) (atan.f64 N))
(- (atan (- 1 (* -1 N))) (atan N))
(-.f64 (atan.f64 (+.f64 #s(literal 1 binary64) N)) (atan.f64 N))
(- (atan (- 1 (* -1 N))) (atan N))
(-.f64 (atan.f64 (+.f64 #s(literal 1 binary64) N)) (atan.f64 N))
(- (atan (- 1 (* -1 N))) (atan N))
(-.f64 (atan.f64 (+.f64 #s(literal 1 binary64) N)) (atan.f64 N))
(- (atan (- 1 (* -1 N))) (atan N))
(-.f64 (atan.f64 (+.f64 #s(literal 1 binary64) N)) (atan.f64 N))
(atan (+ 1 N))
(atan.f64 (+.f64 #s(literal 1 binary64) N))
(atan (+ 1 N))
(atan.f64 (+.f64 #s(literal 1 binary64) N))
(atan (+ 1 N))
(atan.f64 (+.f64 #s(literal 1 binary64) N))
(atan (+ 1 N))
(atan.f64 (+.f64 #s(literal 1 binary64) N))
(atan (+ 1 N))
(atan.f64 (+.f64 #s(literal 1 binary64) N))
(atan (+ 1 N))
(atan.f64 (+.f64 #s(literal 1 binary64) N))
(atan (+ 1 N))
(atan.f64 (+.f64 #s(literal 1 binary64) N))
(atan (+ 1 N))
(atan.f64 (+.f64 #s(literal 1 binary64) N))
(atan (- 1 (* -1 N)))
(atan.f64 (+.f64 #s(literal 1 binary64) N))
(atan (- 1 (* -1 N)))
(atan.f64 (+.f64 #s(literal 1 binary64) N))
(atan (- 1 (* -1 N)))
(atan.f64 (+.f64 #s(literal 1 binary64) N))
(atan (- 1 (* -1 N)))
(atan.f64 (+.f64 #s(literal 1 binary64) N))
1
#s(literal 1 binary64)
(+ 1 N)
(+.f64 #s(literal 1 binary64) N)
(+ 1 N)
(+.f64 #s(literal 1 binary64) N)
(+ 1 N)
(+.f64 #s(literal 1 binary64) N)
N
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
N
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(atan N)
(atan.f64 N)
(atan N)
(atan.f64 N)
(atan N)
(atan.f64 N)
(atan N)
(atan.f64 N)
(atan N)
(atan.f64 N)
(atan N)
(atan.f64 N)
(atan N)
(atan.f64 N)
(atan N)
(atan.f64 N)
(atan N)
(atan.f64 N)
(atan N)
(atan.f64 N)
(atan N)
(atan.f64 N)
(atan N)
(atan.f64 N)

eval35.0ms (0.8%)

Compiler

Compiled 5855 to 532 computations (90.9% saved)

prune33.0ms (0.8%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New3251326
Fresh000
Picked101
Done000
Total3261327
Accuracy
99.6%
Counts
327 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.6%
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
Compiler

Compiled 10 to 6 computations (40% saved)

simplify6.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 N #s(literal 1 binary64))
cost-diff0
(*.f64 N (+.f64 N #s(literal 1 binary64)))
cost-diff0
(+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))
cost-diff0
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
Rules
50×fma-define
46×fma-lowering-fma.f32
46×fma-lowering-fma.f64
30×*-lowering-*.f32
30×*-lowering-*.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0626
11621
23021
34921
46821
57321
67421
07421
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(atan2 1 (+ 1 (* N (+ N 1))))
1
(+ 1 (* N (+ N 1)))
(* N (+ N 1))
N
(+ N 1)
Outputs
(atan2 1 (+ 1 (* N (+ N 1))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
1
#s(literal 1 binary64)
(+ 1 (* N (+ N 1)))
(+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(* N (+ N 1))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
N
(+ N 1)
(+.f64 #s(literal 1 binary64) N)

localize30.0ms (0.7%)

Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(+.f64 N #s(literal 1 binary64))
accuracy100.0%
(+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64))))
accuracy100.0%
(*.f64 N (+.f64 N #s(literal 1 binary64)))
accuracy99.6%
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
Results
20.0ms256×0valid
Compiler

Compiled 28 to 7 computations (75% saved)

Precisions
Click to see histograms. Total time spent on operations: 7.0ms
ival-add: 3.0ms (41.4% of total)
ival-atan2: 2.0ms (27.6% of total)
ival-mult: 2.0ms (27.6% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series2.0ms (0%)

Counts
4 → 48
Calls
Call 1
Inputs
#<alt (atan2 1 (+ 1 (* N (+ N 1))))>
#<alt (+ 1 (* N (+ N 1)))>
#<alt (* N (+ N 1))>
#<alt (+ N 1)>
Outputs
#<alt (atan2 1 (+ 1 (* N (+ 1 N))))>
#<alt (atan2 1 (+ 1 (* N (+ 1 N))))>
#<alt (atan2 1 (+ 1 (* N (+ 1 N))))>
#<alt (atan2 1 (+ 1 (* N (+ 1 N))))>
#<alt (atan2 1 (+ 1 (+ N (pow N 2))))>
#<alt (atan2 1 (+ 1 (+ N (pow N 2))))>
#<alt (atan2 1 (+ 1 (+ N (pow N 2))))>
#<alt (atan2 1 (+ 1 (+ N (pow N 2))))>
#<alt (atan2 1 (+ 1 (* N (- 1 (* -1 N)))))>
#<alt (atan2 1 (+ 1 (* N (- 1 (* -1 N)))))>
#<alt (atan2 1 (+ 1 (* N (- 1 (* -1 N)))))>
#<alt (atan2 1 (+ 1 (* N (- 1 (* -1 N)))))>
#<alt 1>
#<alt (+ 1 N)>
#<alt (+ 1 (* N (+ 1 N)))>
#<alt (+ 1 (* N (+ 1 N)))>
#<alt (pow N 2)>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (+ (/ 1 N) (/ 1 (pow N 2)))))>
#<alt (* (pow N 2) (+ 1 (+ (/ 1 N) (/ 1 (pow N 2)))))>
#<alt (pow N 2)>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (+ (/ 1 N) (/ 1 (pow N 2)))))>
#<alt (* (pow N 2) (+ 1 (+ (/ 1 N) (/ 1 (pow N 2)))))>
#<alt N>
#<alt (* N (+ 1 N))>
#<alt (* N (+ 1 N))>
#<alt (* N (+ 1 N))>
#<alt (pow N 2)>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (pow N 2)>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt 1>
#<alt (+ 1 N)>
#<alt (+ 1 N)>
#<alt (+ 1 N)>
#<alt N>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt N>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (* N (+ 1 (/ 1 N)))>
Calls

12 calls:

TimeVariablePointExpression
0.0ms
N
@inf
(* N (+ N 1))
0.0ms
N
@-inf
(+ 1 (* N (+ N 1)))
0.0ms
N
@-inf
(atan2 1 (+ 1 (* N (+ N 1))))
0.0ms
N
@inf
(+ 1 (* N (+ N 1)))
0.0ms
N
@-inf
(* N (+ N 1))

rewrite17.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
60×fma-define
50×fma-lowering-fma.f32
50×fma-lowering-fma.f64
34×+-lowering-+.f64
34×*-lowering-*.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0624
11619
23219
35519
48119
510619
612219
713019
013019
Stop Event
iter limit
saturated
Counts
4 → 39
Calls
Call 1
Inputs
(atan2 1 (+ 1 (* N (+ N 1))))
(+ 1 (* N (+ N 1)))
(* N (+ N 1))
(+ N 1)
Outputs
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(+.f64 N (+.f64 #s(literal 1 binary64) (*.f64 N N)))
(+.f64 (+.f64 #s(literal 1 binary64) N) (*.f64 N N))
(+.f64 (*.f64 N (+.f64 #s(literal 1 binary64) N)) #s(literal 1 binary64))
(+.f64 (*.f64 N N) (+.f64 #s(literal 1 binary64) N))
(+.f64 (+.f64 #s(literal 1 binary64) (*.f64 N N)) N)
(fma.f64 #s(literal 1 binary64) N (+.f64 #s(literal 1 binary64) (*.f64 N N)))
(fma.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) N) (*.f64 N N))
(fma.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)) #s(literal 1 binary64))
(fma.f64 #s(literal 1 binary64) (*.f64 N N) (+.f64 #s(literal 1 binary64) N))
(fma.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N N)) N)
(fma.f64 N #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N N)))
(fma.f64 N N (+.f64 #s(literal 1 binary64) N))
(fma.f64 N (+.f64 #s(literal 1 binary64) N) #s(literal 1 binary64))
(fma.f64 (+.f64 #s(literal 1 binary64) N) #s(literal 1 binary64) (*.f64 N N))
(fma.f64 (+.f64 #s(literal 1 binary64) N) N #s(literal 1 binary64))
(fma.f64 (*.f64 N (+.f64 #s(literal 1 binary64) N)) #s(literal 1 binary64) #s(literal 1 binary64))
(fma.f64 (*.f64 N N) #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) N))
(fma.f64 (+.f64 #s(literal 1 binary64) (*.f64 N N)) #s(literal 1 binary64) N)
(*.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(*.f64 (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))) #s(literal 1 binary64))
(+.f64 N (*.f64 N N))
(+.f64 (*.f64 N N) N)
(fma.f64 #s(literal 1 binary64) N (*.f64 N N))
(fma.f64 #s(literal 1 binary64) (*.f64 N N) N)
(fma.f64 N #s(literal 1 binary64) (*.f64 N N))
(fma.f64 N N N)
(fma.f64 (*.f64 N N) #s(literal 1 binary64) N)
(*.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(*.f64 (+.f64 #s(literal 1 binary64) N) N)
(*.f64 (*.f64 N (+.f64 #s(literal 1 binary64) N)) #s(literal 1 binary64))
(+.f64 #s(literal 1 binary64) N)
(+.f64 N #s(literal 1 binary64))
(fma.f64 #s(literal 1 binary64) N #s(literal 1 binary64))
(fma.f64 N #s(literal 1 binary64) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) N))
(*.f64 (+.f64 #s(literal 1 binary64) N) #s(literal 1 binary64))

simplify136.0ms (3.2%)

Algorithm
egg-herbie
Rules
1682×*-lowering-*.f32
1682×*-lowering-*.f64
1378×fmsub-define
1218×/-lowering-/.f32
1218×/-lowering-/.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
025285
169201
2148201
3548201
43615201
08278201
Stop Event
iter limit
node limit
Counts
48 → 48
Calls
Call 1
Inputs
(atan2 1 (+ 1 (* N (+ 1 N))))
(atan2 1 (+ 1 (* N (+ 1 N))))
(atan2 1 (+ 1 (* N (+ 1 N))))
(atan2 1 (+ 1 (* N (+ 1 N))))
(atan2 1 (+ 1 (+ N (pow N 2))))
(atan2 1 (+ 1 (+ N (pow N 2))))
(atan2 1 (+ 1 (+ N (pow N 2))))
(atan2 1 (+ 1 (+ N (pow N 2))))
(atan2 1 (+ 1 (* N (- 1 (* -1 N)))))
(atan2 1 (+ 1 (* N (- 1 (* -1 N)))))
(atan2 1 (+ 1 (* N (- 1 (* -1 N)))))
(atan2 1 (+ 1 (* N (- 1 (* -1 N)))))
1
(+ 1 N)
(+ 1 (* N (+ 1 N)))
(+ 1 (* N (+ 1 N)))
(pow N 2)
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (+ (/ 1 N) (/ 1 (pow N 2)))))
(* (pow N 2) (+ 1 (+ (/ 1 N) (/ 1 (pow N 2)))))
(pow N 2)
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (+ (/ 1 N) (/ 1 (pow N 2)))))
(* (pow N 2) (+ 1 (+ (/ 1 N) (/ 1 (pow N 2)))))
N
(* N (+ 1 N))
(* N (+ 1 N))
(* N (+ 1 N))
(pow N 2)
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (/ 1 N)))
(pow N 2)
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (/ 1 N)))
1
(+ 1 N)
(+ 1 N)
(+ 1 N)
N
(* N (+ 1 (/ 1 N)))
(* N (+ 1 (/ 1 N)))
(* N (+ 1 (/ 1 N)))
N
(* N (+ 1 (/ 1 N)))
(* N (+ 1 (/ 1 N)))
(* N (+ 1 (/ 1 N)))
Outputs
(atan2 1 (+ 1 (* N (+ 1 N))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(atan2 1 (+ 1 (* N (+ 1 N))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(atan2 1 (+ 1 (* N (+ 1 N))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(atan2 1 (+ 1 (* N (+ 1 N))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(atan2 1 (+ 1 (+ N (pow N 2))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(atan2 1 (+ 1 (+ N (pow N 2))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(atan2 1 (+ 1 (+ N (pow N 2))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(atan2 1 (+ 1 (+ N (pow N 2))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(atan2 1 (+ 1 (* N (- 1 (* -1 N)))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(atan2 1 (+ 1 (* N (- 1 (* -1 N)))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(atan2 1 (+ 1 (* N (- 1 (* -1 N)))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(atan2 1 (+ 1 (* N (- 1 (* -1 N)))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
1
#s(literal 1 binary64)
(+ 1 N)
(+.f64 #s(literal 1 binary64) N)
(+ 1 (* N (+ 1 N)))
(+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(+ 1 (* N (+ 1 N)))
(+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(pow N 2)
(*.f64 N N)
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (+ (/ 1 N) (/ 1 (pow N 2)))))
(+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(* (pow N 2) (+ 1 (+ (/ 1 N) (/ 1 (pow N 2)))))
(+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(pow N 2)
(*.f64 N N)
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (+ (/ 1 N) (/ 1 (pow N 2)))))
(+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(* (pow N 2) (+ 1 (+ (/ 1 N) (/ 1 (pow N 2)))))
(+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
N
(* N (+ 1 N))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* N (+ 1 N))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* N (+ 1 N))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(pow N 2)
(*.f64 N N)
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(pow N 2)
(*.f64 N N)
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
1
#s(literal 1 binary64)
(+ 1 N)
(+.f64 #s(literal 1 binary64) N)
(+ 1 N)
(+.f64 #s(literal 1 binary64) N)
(+ 1 N)
(+.f64 #s(literal 1 binary64) N)
N
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
N
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)

eval8.0ms (0.2%)

Compiler

Compiled 772 to 106 computations (86.3% saved)

prune13.0ms (0.3%)

Pruning

4 alts after pruning (3 fresh and 1 done)

PrunedKeptTotal
New84387
Fresh000
Picked011
Done000
Total84488
Accuracy
99.6%
Counts
88 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.6%
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
96.4%
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
92.8%
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
6.5%
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
Compiler

Compiled 28 to 18 computations (35.7% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Localize:

Found 6 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 #s(literal 1 binary64) N)
cost-diff0
(*.f64 N (+.f64 #s(literal 1 binary64) N))
cost-diff0
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
cost-diff0
(*.f64 N N)
cost-diff0
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
cost-diff0
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
Rules
22×*-lowering-*.f32
22×*-lowering-*.f64
14×fma-lowering-fma.f32
14×fma-define
14×fma-lowering-fma.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0829
11727
22127
33227
43427
03427
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(atan2 1 1)
1
(atan2 1 (* N N))
1
(* N N)
N
(atan2 1 (* N (+ 1 N)))
1
(* N (+ 1 N))
N
(+ 1 N)
Outputs
(atan2 1 1)
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
1
#s(literal 1 binary64)
(atan2 1 (* N N))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
1
#s(literal 1 binary64)
(* N N)
(*.f64 N N)
N
(atan2 1 (* N (+ 1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
1
#s(literal 1 binary64)
(* N (+ 1 N))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
N
(+ 1 N)
(+.f64 #s(literal 1 binary64) N)

localize44.0ms (1%)

Localize:

Found 6 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(+.f64 #s(literal 1 binary64) N)
accuracy100.0%
(*.f64 N (+.f64 #s(literal 1 binary64) N))
accuracy99.6%
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
accuracy100.0%
(*.f64 N N)
accuracy99.7%
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
accuracy100.0%
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
Results
32.0ms256×0valid
Compiler

Compiled 33 to 9 computations (72.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-atan2: 5.0ms (46.1% of total)
ival-mult: 4.0ms (36.9% of total)
ival-add: 1.0ms (9.2% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series1.0ms (0%)

Counts
6 → 60
Calls
Call 1
Inputs
#<alt (atan2 1 1)>
#<alt (atan2 1 (* N N))>
#<alt (* N N)>
#<alt (atan2 1 (* N (+ 1 N)))>
#<alt (* N (+ 1 N))>
#<alt (+ 1 N)>
Outputs
#<alt (atan2 1 (pow N 2))>
#<alt (atan2 1 (pow N 2))>
#<alt (atan2 1 (pow N 2))>
#<alt (atan2 1 (pow N 2))>
#<alt (atan2 1 (pow N 2))>
#<alt (atan2 1 (pow N 2))>
#<alt (atan2 1 (pow N 2))>
#<alt (atan2 1 (pow N 2))>
#<alt (atan2 1 (pow N 2))>
#<alt (atan2 1 (pow N 2))>
#<alt (atan2 1 (pow N 2))>
#<alt (atan2 1 (pow N 2))>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (atan2 1 (* N (+ 1 N)))>
#<alt (atan2 1 (* N (+ 1 N)))>
#<alt (atan2 1 (* N (+ 1 N)))>
#<alt (atan2 1 (* N (+ 1 N)))>
#<alt (atan2 1 (* N (+ 1 N)))>
#<alt (atan2 1 (* N (+ 1 N)))>
#<alt (atan2 1 (* N (+ 1 N)))>
#<alt (atan2 1 (* N (+ 1 N)))>
#<alt (atan2 1 (* N (- 1 (* -1 N))))>
#<alt (atan2 1 (* N (- 1 (* -1 N))))>
#<alt (atan2 1 (* N (- 1 (* -1 N))))>
#<alt (atan2 1 (* N (- 1 (* -1 N))))>
#<alt N>
#<alt (* N (+ 1 N))>
#<alt (* N (+ 1 N))>
#<alt (* N (+ 1 N))>
#<alt (pow N 2)>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (pow N 2)>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt 1>
#<alt (+ 1 N)>
#<alt (+ 1 N)>
#<alt (+ 1 N)>
#<alt N>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt N>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (* N (+ 1 (/ 1 N)))>
#<alt (* N (+ 1 (/ 1 N)))>
Calls

15 calls:

TimeVariablePointExpression
0.0ms
N
@0
(* N N)
0.0ms
N
@inf
(* N N)
0.0ms
N
@0
(atan2 1 (* N N))
0.0ms
N
@-inf
(atan2 1 (* N (+ 1 N)))
0.0ms
N
@inf
(atan2 1 (* N (+ 1 N)))

rewrite14.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
26×*-lowering-*.f32
26×*-lowering-*.f64
20×fma-define
18×fma-lowering-fma.f32
18×+-lowering-+.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0824
11922
22622
34522
46522
58022
68822
08822
Stop Event
iter limit
saturated
Counts
6 → 26
Calls
Call 1
Inputs
(atan2 1 1)
(atan2 1 (* N N))
(* N N)
(atan2 1 (* N (+ 1 N)))
(* N (+ 1 N))
(+ 1 N)
Outputs
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 N)))
(pow.f64 N #s(literal 2 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N))
(*.f64 #s(literal 1 binary64) (*.f64 N N))
(*.f64 N N)
(*.f64 (*.f64 N N) #s(literal 1 binary64))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(+.f64 N (*.f64 N N))
(+.f64 (*.f64 N N) N)
(fma.f64 #s(literal 1 binary64) N (*.f64 N N))
(fma.f64 #s(literal 1 binary64) (*.f64 N N) N)
(fma.f64 N #s(literal 1 binary64) (*.f64 N N))
(fma.f64 N N N)
(fma.f64 (*.f64 N N) #s(literal 1 binary64) N)
(*.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(*.f64 (+.f64 #s(literal 1 binary64) N) N)
(*.f64 (*.f64 N (+.f64 #s(literal 1 binary64) N)) #s(literal 1 binary64))
(+.f64 #s(literal 1 binary64) N)
(+.f64 N #s(literal 1 binary64))
(fma.f64 #s(literal 1 binary64) N #s(literal 1 binary64))
(fma.f64 N #s(literal 1 binary64) #s(literal 1 binary64))
(*.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) N))
(*.f64 (+.f64 #s(literal 1 binary64) N) #s(literal 1 binary64))

simplify119.0ms (2.8%)

Algorithm
egg-herbie
Rules
1534×*-lowering-*.f32
1534×*-lowering-*.f64
1530×fnmsub-define
1468×fmsub-define
1292×fma-lowering-fma.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
017262
147215
271215
3235215
41748215
54688215
08149215
Stop Event
iter limit
node limit
Counts
60 → 60
Calls
Call 1
Inputs
(atan2 1 (pow N 2))
(atan2 1 (pow N 2))
(atan2 1 (pow N 2))
(atan2 1 (pow N 2))
(atan2 1 (pow N 2))
(atan2 1 (pow N 2))
(atan2 1 (pow N 2))
(atan2 1 (pow N 2))
(atan2 1 (pow N 2))
(atan2 1 (pow N 2))
(atan2 1 (pow N 2))
(atan2 1 (pow N 2))
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(atan2 1 (* N (+ 1 N)))
(atan2 1 (* N (+ 1 N)))
(atan2 1 (* N (+ 1 N)))
(atan2 1 (* N (+ 1 N)))
(atan2 1 (* N (+ 1 N)))
(atan2 1 (* N (+ 1 N)))
(atan2 1 (* N (+ 1 N)))
(atan2 1 (* N (+ 1 N)))
(atan2 1 (* N (- 1 (* -1 N))))
(atan2 1 (* N (- 1 (* -1 N))))
(atan2 1 (* N (- 1 (* -1 N))))
(atan2 1 (* N (- 1 (* -1 N))))
N
(* N (+ 1 N))
(* N (+ 1 N))
(* N (+ 1 N))
(pow N 2)
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (/ 1 N)))
(pow N 2)
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (/ 1 N)))
1
(+ 1 N)
(+ 1 N)
(+ 1 N)
N
(* N (+ 1 (/ 1 N)))
(* N (+ 1 (/ 1 N)))
(* N (+ 1 (/ 1 N)))
N
(* N (+ 1 (/ 1 N)))
(* N (+ 1 (/ 1 N)))
(* N (+ 1 (/ 1 N)))
Outputs
(atan2 1 (pow N 2))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow N 2))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow N 2))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow N 2))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow N 2))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow N 2))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow N 2))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow N 2))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow N 2))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow N 2))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow N 2))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow N 2))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(atan2 1 (* N (+ 1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (* N (+ 1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (* N (+ 1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (* N (+ 1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (* N (+ 1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (* N (+ 1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (* N (+ 1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (* N (+ 1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (* N (- 1 (* -1 N))))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (* N (- 1 (* -1 N))))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (* N (- 1 (* -1 N))))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (* N (- 1 (* -1 N))))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
N
(* N (+ 1 N))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* N (+ 1 N))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* N (+ 1 N))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(pow N 2)
(*.f64 N N)
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(pow N 2)
(*.f64 N N)
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
1
#s(literal 1 binary64)
(+ 1 N)
(+.f64 #s(literal 1 binary64) N)
(+ 1 N)
(+.f64 #s(literal 1 binary64) N)
(+ 1 N)
(+.f64 #s(literal 1 binary64) N)
N
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
N
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)
(* N (+ 1 (/ 1 N)))
(+.f64 #s(literal 1 binary64) N)

eval8.0ms (0.2%)

Compiler

Compiled 544 to 60 computations (89% saved)

prune8.0ms (0.2%)

Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New84286
Fresh000
Picked123
Done011
Total85590
Accuracy
99.6%
Counts
90 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
96.4%
(atan2.f64 #s(literal 1 binary64) (+.f64 (*.f64 N N) N))
99.6%
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
96.4%
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
92.8%
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
8.0%
(atan2.f64 #s(literal 1 binary64) N)
Compiler

Compiled 36 to 23 computations (36.1% saved)

simplify5.0ms (0.1%)

Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 N N)
cost-diff0
(+.f64 (*.f64 N N) N)
cost-diff0
(atan2.f64 #s(literal 1 binary64) (+.f64 (*.f64 N N) N))
cost-diff0
(atan2.f64 #s(literal 1 binary64) N)
Rules
22×*-lowering-*.f32
22×*-lowering-*.f64
18×fma-define
14×fma-lowering-fma.f32
14×fma-lowering-fma.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0619
11319
21519
32119
42519
53519
63719
03719
Stop Event
iter limit
saturated
Calls
Call 1
Inputs
(atan2 1 N)
1
N
(atan2 1 (+ (* N N) N))
1
(+ (* N N) N)
(* N N)
N
Outputs
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
1
#s(literal 1 binary64)
N
(atan2 1 (+ (* N N) N))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
1
#s(literal 1 binary64)
(+ (* N N) N)
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* N N)
(*.f64 N N)
N

localize39.0ms (0.9%)

Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(*.f64 N N)
accuracy99.9%
(+.f64 (*.f64 N N) N)
accuracy99.6%
(atan2.f64 #s(literal 1 binary64) (+.f64 (*.f64 N N) N))
accuracy100.0%
(atan2.f64 #s(literal 1 binary64) N)
Results
27.0ms256×0valid
Compiler

Compiled 24 to 7 computations (70.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 8.0ms
ival-atan2: 4.0ms (51.9% of total)
ival-mult: 2.0ms (25.9% of total)
ival-add: 1.0ms (13% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series1.0ms (0%)

Counts
4 → 48
Calls
Call 1
Inputs
#<alt (atan2 1 N)>
#<alt (atan2 1 (+ (* N N) N))>
#<alt (+ (* N N) N)>
#<alt (* N N)>
Outputs
#<alt (atan2 1 N)>
#<alt (atan2 1 N)>
#<alt (atan2 1 N)>
#<alt (atan2 1 N)>
#<alt (atan2 1 N)>
#<alt (atan2 1 N)>
#<alt (atan2 1 N)>
#<alt (atan2 1 N)>
#<alt (atan2 1 N)>
#<alt (atan2 1 N)>
#<alt (atan2 1 N)>
#<alt (atan2 1 N)>
#<alt (atan2 1 (+ N (pow N 2)))>
#<alt (atan2 1 (+ N (pow N 2)))>
#<alt (atan2 1 (+ N (pow N 2)))>
#<alt (atan2 1 (+ N (pow N 2)))>
#<alt (atan2 1 (+ N (pow N 2)))>
#<alt (atan2 1 (+ N (pow N 2)))>
#<alt (atan2 1 (+ N (pow N 2)))>
#<alt (atan2 1 (+ N (pow N 2)))>
#<alt (atan2 1 (- (pow N 2) (* -1 N)))>
#<alt (atan2 1 (- (pow N 2) (* -1 N)))>
#<alt (atan2 1 (- (pow N 2) (* -1 N)))>
#<alt (atan2 1 (- (pow N 2) (* -1 N)))>
#<alt N>
#<alt (* N (+ 1 N))>
#<alt (* N (+ 1 N))>
#<alt (* N (+ 1 N))>
#<alt (pow N 2)>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (pow N 2)>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (* (pow N 2) (+ 1 (/ 1 N)))>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
#<alt (pow N 2)>
Calls

12 calls:

TimeVariablePointExpression
0.0ms
N
@-inf
(atan2 1 (+ (* N N) N))
0.0ms
N
@0
(atan2 1 N)
0.0ms
N
@0
(* N N)
0.0ms
N
@0
(atan2 1 (+ (* N N) N))
0.0ms
N
@inf
(atan2 1 (+ (* N N) N))

rewrite14.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
28×fma-define
26×*-lowering-*.f32
26×*-lowering-*.f64
18×fma-lowering-fma.f32
18×+-lowering-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0615
11515
22015
33015
44515
56315
68215
79115
09115
Stop Event
iter limit
saturated
Counts
4 → 19
Calls
Call 1
Inputs
(atan2 1 N)
(atan2 1 (+ (* N N) N))
(+ (* N N) N)
(* N N)
Outputs
(atan2.f64 #s(literal 1 binary64) N)
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(+.f64 N (*.f64 N N))
(+.f64 (*.f64 N N) N)
(fma.f64 #s(literal 1 binary64) N (*.f64 N N))
(fma.f64 #s(literal 1 binary64) (*.f64 N N) N)
(fma.f64 N #s(literal 1 binary64) (*.f64 N N))
(fma.f64 N N N)
(fma.f64 (*.f64 N N) #s(literal 1 binary64) N)
(*.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(*.f64 (*.f64 N (+.f64 #s(literal 1 binary64) N)) #s(literal 1 binary64))
(*.f64 (+.f64 #s(literal 1 binary64) N) N)
(exp.f64 (*.f64 #s(literal 2 binary64) (log.f64 N)))
(pow.f64 N #s(literal 2 binary64))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N))
(*.f64 #s(literal 1 binary64) (*.f64 N N))
(*.f64 N N)
(*.f64 (*.f64 N N) #s(literal 1 binary64))

simplify108.0ms (2.6%)

Algorithm
egg-herbie
Rules
1550×fnmadd-define
1396×*-lowering-*.f32
1396×*-lowering-*.f64
1274×div-sub
960×fma-define
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
016208
141173
271173
3217173
41101173
53251173
66717173
08142173
Stop Event
iter limit
node limit
Counts
48 → 48
Calls
Call 1
Inputs
(atan2 1 N)
(atan2 1 N)
(atan2 1 N)
(atan2 1 N)
(atan2 1 N)
(atan2 1 N)
(atan2 1 N)
(atan2 1 N)
(atan2 1 N)
(atan2 1 N)
(atan2 1 N)
(atan2 1 N)
(atan2 1 (+ N (pow N 2)))
(atan2 1 (+ N (pow N 2)))
(atan2 1 (+ N (pow N 2)))
(atan2 1 (+ N (pow N 2)))
(atan2 1 (+ N (pow N 2)))
(atan2 1 (+ N (pow N 2)))
(atan2 1 (+ N (pow N 2)))
(atan2 1 (+ N (pow N 2)))
(atan2 1 (- (pow N 2) (* -1 N)))
(atan2 1 (- (pow N 2) (* -1 N)))
(atan2 1 (- (pow N 2) (* -1 N)))
(atan2 1 (- (pow N 2) (* -1 N)))
N
(* N (+ 1 N))
(* N (+ 1 N))
(* N (+ 1 N))
(pow N 2)
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (/ 1 N)))
(pow N 2)
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (/ 1 N)))
(* (pow N 2) (+ 1 (/ 1 N)))
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
(pow N 2)
Outputs
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
(atan2 1 N)
(atan2.f64 #s(literal 1 binary64) N)
(atan2 1 (+ N (pow N 2)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (+ N (pow N 2)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (+ N (pow N 2)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (+ N (pow N 2)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (+ N (pow N 2)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (+ N (pow N 2)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (+ N (pow N 2)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (+ N (pow N 2)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (- (pow N 2) (* -1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (- (pow N 2) (* -1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (- (pow N 2) (* -1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2 1 (- (pow N 2) (* -1 N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
N
(* N (+ 1 N))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* N (+ 1 N))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* N (+ 1 N))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(pow N 2)
(*.f64 N N)
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(pow N 2)
(*.f64 N N)
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(* (pow N 2) (+ 1 (/ 1 N)))
(*.f64 N (+.f64 #s(literal 1 binary64) N))
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)
(pow N 2)
(*.f64 N N)

eval6.0ms (0.1%)

Compiler

Compiled 425 to 47 computations (88.9% saved)

prune19.0ms (0.4%)

Pruning

7 alts after pruning (2 fresh and 5 done)

PrunedKeptTotal
New65267
Fresh000
Picked022
Done033
Total65772
Accuracy
99.7%
Counts
72 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
89.3%
(atan2.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N)) N))
96.4%
(atan2.f64 #s(literal 1 binary64) (+.f64 (pow.f64 N #s(literal 2 binary64)) N))
96.4%
(atan2.f64 #s(literal 1 binary64) (+.f64 (*.f64 N N) N))
99.6%
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
96.4%
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
92.8%
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
8.0%
(atan2.f64 #s(literal 1 binary64) N)
Compiler

Compiled 112 to 64 computations (42.9% saved)

regimes18.0ms (0.4%)

Counts
9 → 1
Calls
Call 1
Inputs
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
(atan2.f64 #s(literal 1 binary64) N)
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2.f64 #s(literal 1 binary64) (+.f64 (*.f64 N N) N))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
(atan2.f64 #s(literal 1 binary64) (+.f64 (pow.f64 N #s(literal 2 binary64)) N))
(atan2.f64 #s(literal 1 binary64) (+.f64 (pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N)) N))
Outputs
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
Calls

2 calls:

15.0ms
N
3.0ms
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
Results
AccuracySegmentsBranch
99.6%1N
99.6%1(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
Compiler

Compiled 10 to 7 computations (30% saved)

regimes3.0ms (0.1%)

Counts
5 → 1
Calls
Call 1
Inputs
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
(atan2.f64 #s(literal 1 binary64) N)
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2.f64 #s(literal 1 binary64) (+.f64 (*.f64 N N) N))
Outputs
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
Calls

1 calls:

2.0ms
N
Results
AccuracySegmentsBranch
96.4%1N
Compiler

Compiled 2 to 1 computations (50% saved)

regimes2.0ms (0.1%)

Counts
3 → 1
Calls
Call 1
Inputs
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
(atan2.f64 #s(literal 1 binary64) N)
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
Outputs
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
Calls

1 calls:

2.0ms
N
Results
AccuracySegmentsBranch
92.8%1N
Compiler

Compiled 2 to 1 computations (50% saved)

regimes2.0ms (0%)

Counts
2 → 1
Calls
Call 1
Inputs
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
(atan2.f64 #s(literal 1 binary64) N)
Outputs
(atan2.f64 #s(literal 1 binary64) N)
Calls

1 calls:

2.0ms
N
Results
AccuracySegmentsBranch
8.0%1N
Compiler

Compiled 2 to 1 computations (50% saved)

regimes1.0ms (0%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
Outputs
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
Calls

1 calls:

1.0ms
N
Results
AccuracySegmentsBranch
6.5%1N
Compiler

Compiled 2 to 1 computations (50% saved)

simplify7.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01327
11927
Stop Event
saturated
Calls
Call 1
Inputs
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2.f64 #s(literal 1 binary64) N)
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
Outputs
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2.f64 #s(literal 1 binary64) N)
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))

soundness943.0ms (22.4%)

Rules
1896×sum5-define
1840×fnmadd-define
1836×fma-lowering-fma.f32
1836×fma-lowering-fma.f64
1790×fmm-def
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
025285
169201
2148201
3548201
43615201
08278201
0616
11516
22716
35416
49116
517116
628816
747716
8220416
9365016
10657016
0842316
017262
147215
271215
3235215
41748215
54688215
08149215
Stop Event
fuel
iter limit
node limit
iter limit
node limit
iter limit
node limit
Compiler

Compiled 108 to 61 computations (43.5% saved)

preprocess46.0ms (1.1%)

Compiler

Compiled 94 to 48 computations (48.9% saved)

end0.0ms (0%)

Profiling

Loading profile data...