2atan (example 3.5)

Time bar (total: 4.4s)

analyze3.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: 1.0ms
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)
ival->: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)
ival-<: 0.0ms (0% of total)

sample1.8s (41%)

Results
1.3s7355×1valid
161.0ms641×2valid
22.0ms260×0valid
Precisions
Click to see histograms. Total time spent on operations: 1.0s
ival-atan: 347.0ms (34% of total)
backward-pass: 173.0ms (16.9% of total)
...c/correct-round.rkt:119:19: 123.0ms (12% of total)
ival-add: 123.0ms (12% of total)
ival-sub: 92.0ms (9% of total)
ival->: 82.0ms (8% of total)
ival-and: 34.0ms (3.3% of total)
ival-<: 32.0ms (3.1% of total)
const: 16.0ms (1.6% of total)
Bogosity

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

explain177.0ms (4.1%)

FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
2560-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
130.0ms452×1valid
15.0ms48×2valid
1.0ms12×0valid
Compiler

Compiled 48 to 20 computations (58.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 70.0ms
ival-add: 27.0ms (38.4% of total)
ival-atan: 23.0ms (32.7% of total)
backward-pass: 13.0ms (18.5% of total)
ival-sub: 6.0ms (8.5% of total)
const: 1.0ms (1.4% 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
7.5%
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
Compiler

Compiled 8 to 6 computations (25% saved)

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

localize67.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)
accuracy7.5%
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
Results
49.0ms226×1valid
7.0ms24×2valid
1.0ms0valid
Compiler

Compiled 20 to 7 computations (65% saved)

Precisions
Click to see histograms. Total time spent on operations: 25.0ms
ival-atan: 11.0ms (44.7% of total)
backward-pass: 6.0ms (24.4% of total)
ival-add: 4.0ms (16.3% of total)
ival-sub: 3.0ms (12.2% of total)
const: 1.0ms (4.1% 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)

rewrite179.0ms (4.1%)

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

simplify34.0ms (0.8%)

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)

eval39.0ms (0.9%)

Compiler

Compiled 5855 to 532 computations (90.9% saved)

prune32.0ms (0.7%)

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)

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

localize38.0ms (0.9%)

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
24.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.7% of total)
ival-atan2: 2.0ms (27.8% of total)
ival-mult: 2.0ms (27.8% 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
(* N (+ N 1))
0.0ms
N
@inf
(+ 1 (* N (+ N 1)))

rewrite20.0ms (0.5%)

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

simplify120.0ms (2.8%)

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)

eval10.0ms (0.2%)

Compiler

Compiled 772 to 106 computations (86.3% saved)

prune6.0ms (0.1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New83487
Fresh000
Picked011
Done000
Total83588
Accuracy
99.6%
Counts
88 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.6%
(atan2.f64 #s(literal 1 binary64) (fma.f64 N N (+.f64 #s(literal 1 binary64) N)))
99.6%
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
97.3%
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
94.9%
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
6.2%
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
Compiler

Compiled 37 to 23 computations (37.8% saved)

simplify10.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 9 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 #s(literal 1 binary64) N)
cost-diff0
(atan2.f64 #s(literal 1 binary64) (fma.f64 N N (+.f64 #s(literal 1 binary64) N)))
cost-diff6272
(fma.f64 N N (+.f64 #s(literal 1 binary64) N))
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
48×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
01048
12344
23644
35444
46744
57244
67344
07344
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)
(atan2 1 (+ (* N N) (+ 1 N)))
1
(+ (* N 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)
(atan2 1 (+ (* N N) (+ 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)
(+ (* N N) (+ 1 N))
(+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
N
(+ 1 N)
(+.f64 #s(literal 1 binary64) N)

localize64.0ms (1.5%)

Localize:

Found 9 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(fma.f64 N N (+.f64 #s(literal 1 binary64) N))
accuracy100.0%
(+.f64 #s(literal 1 binary64) N)
accuracy99.6%
(atan2.f64 #s(literal 1 binary64) (fma.f64 N N (+.f64 #s(literal 1 binary64) N)))
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.5%
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
accuracy100.0%
(atan2.f64 #s(literal 1 binary64) #s(literal 1 binary64))
Results
48.0ms256×0valid
Compiler

Compiled 52 to 11 computations (78.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 21.0ms
ival-atan2: 9.0ms (43.5% of total)
ival-mult: 5.0ms (24.2% of total)
compiled-spec: 3.0ms (14.5% of total)
ival-add: 2.0ms (9.7% of total)
const: 0.0ms (0% of total)
backward-pass: 0.0ms (0% of total)

series2.0ms (0%)

Counts
8 → 84
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)>
#<alt (+ (* N N) (+ 1 N))>
#<alt (atan2 1 (+ (* N N) (+ 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)))>
#<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 (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 (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 (pow N 2)) (* -1 N)))>
#<alt (atan2 1 (- (+ 1 (pow N 2)) (* -1 N)))>
#<alt (atan2 1 (- (+ 1 (pow N 2)) (* -1 N)))>
#<alt (atan2 1 (- (+ 1 (pow N 2)) (* -1 N)))>
Calls

21 calls:

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

rewrite20.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
58×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
01038
12534
24134
36734
410034
512034
612934
012934
Stop Event
iter limit
saturated
Counts
8 → 48
Calls
Call 1
Inputs
(atan2 1 1)
(atan2 1 (* N N))
(* N N)
(atan2 1 (* N (+ 1 N)))
(* N (+ 1 N))
(+ 1 N)
(+ (* N N) (+ 1 N))
(atan2 1 (+ (* N 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))
(+.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 N N) (+.f64 #s(literal 1 binary64) 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 #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 N N) (+.f64 #s(literal 1 binary64) 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 #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 N N) #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) N))
(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 #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))
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N))))

simplify146.0ms (3.3%)

Algorithm
egg-herbie
Rules
1694×*-lowering-*.f32
1694×*-lowering-*.f64
1526×fmsub-define
1338×fmm-def
1218×fnmsub-define
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
028432
176345
2165345
3570345
43685345
08517345
Stop Event
iter limit
node limit
Counts
84 → 84
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)))
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)))))
(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 (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 (pow N 2)) (* -1 N)))
(atan2 1 (- (+ 1 (pow N 2)) (* -1 N)))
(atan2 1 (- (+ 1 (pow N 2)) (* -1 N)))
(atan2 1 (- (+ 1 (pow N 2)) (* -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)
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)))
(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 (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 (pow N 2)) (* -1 N)))
(atan2.f64 #s(literal 1 binary64) (-.f64 #s(literal 1 binary64) (*.f64 N (-.f64 #s(literal -1 binary64) N))))
(atan2 1 (- (+ 1 (pow N 2)) (* -1 N)))
(atan2.f64 #s(literal 1 binary64) (-.f64 #s(literal 1 binary64) (*.f64 N (-.f64 #s(literal -1 binary64) N))))
(atan2 1 (- (+ 1 (pow N 2)) (* -1 N)))
(atan2.f64 #s(literal 1 binary64) (-.f64 #s(literal 1 binary64) (*.f64 N (-.f64 #s(literal -1 binary64) N))))
(atan2 1 (- (+ 1 (pow N 2)) (* -1 N)))
(atan2.f64 #s(literal 1 binary64) (-.f64 #s(literal 1 binary64) (*.f64 N (-.f64 #s(literal -1 binary64) N))))

eval17.0ms (0.4%)

Compiler

Compiled 1091 to 121 computations (88.9% saved)

prune29.0ms (0.7%)

Pruning

7 alts after pruning (4 fresh and 3 done)

PrunedKeptTotal
New1464150
Fresh000
Picked224
Done011
Total1487155
Accuracy
99.6%
Counts
155 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
97.3%
(atan2.f64 #s(literal 1 binary64) (fma.f64 N N N))
87.9%
(atan2.f64 #s(literal 1 binary64) (pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N)))
97.3%
(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)))))
97.3%
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
94.9%
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
7.8%
(atan2.f64 #s(literal 1 binary64) N)
Compiler

Compiled 51 to 34 computations (33.3% saved)

simplify7.0ms (0.2%)

Algorithm
egg-herbie
Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
cost-diff0
(atan2.f64 #s(literal 1 binary64) (fma.f64 N N N))
cost-diff6272
(fma.f64 N N N)
cost-diff0
(log.f64 N)
cost-diff0
(exp.f64 #s(literal 2 binary64))
cost-diff0
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N))
cost-diff0
(atan2.f64 #s(literal 1 binary64) (pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N)))
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
01150
11850
22050
32650
43050
54050
64250
04250
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
(atan2 1 (pow (exp 2) (log N)))
1
(pow (exp 2) (log N))
(exp 2)
2
(log N)
N
(atan2 1 (+ (* N N) N))
1
(+ (* 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
(atan2 1 (pow (exp 2) (log N)))
(atan2.f64 #s(literal 1 binary64) (pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N)))
1
#s(literal 1 binary64)
(pow (exp 2) (log N))
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N))
(exp 2)
(exp.f64 #s(literal 2 binary64))
2
#s(literal 2 binary64)
(log N)
(log.f64 N)
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

localize91.0ms (2.1%)

Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
accuracy100.0%
(fma.f64 N N N)
accuracy99.6%
(atan2.f64 #s(literal 1 binary64) (fma.f64 N N N))
accuracy100.0%
(log.f64 N)
accuracy100.0%
(exp.f64 #s(literal 2 binary64))
accuracy99.5%
(atan2.f64 #s(literal 1 binary64) (pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N)))
accuracy91.9%
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N))
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
71.0ms256×0valid
Compiler

Compiled 55 to 14 computations (74.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 33.0ms
ival-atan2: 8.0ms (24.2% of total)
ival-log: 7.0ms (21.1% of total)
ival-pow: 5.0ms (15.1% of total)
ival-mult: 4.0ms (12.1% of total)
compiled-spec: 4.0ms (12.1% of total)
ival-add: 3.0ms (9.1% of total)
ival-exp: 3.0ms (9.1% of total)
const: 1.0ms (3% of total)
backward-pass: 0.0ms (0% of total)

series80.0ms (1.8%)

Counts
10 → 108
Calls
Call 1
Inputs
#<alt (atan2 1 N)>
#<alt (atan2 1 (+ (* N N) N))>
#<alt (+ (* N N) N)>
#<alt (* N N)>
#<alt (atan2 1 (pow (exp 2) (log N)))>
#<alt (pow (exp 2) (log N))>
#<alt (exp 2)>
#<alt (log N)>
#<alt (+ (* N N) N)>
#<alt (atan2 1 (+ (* N 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)>
#<alt (atan2 1 (pow (exp 2) (log N)))>
#<alt (atan2 1 (pow (exp 2) (log N)))>
#<alt (atan2 1 (pow (exp 2) (log N)))>
#<alt (atan2 1 (pow (exp 2) (log N)))>
#<alt (atan2 1 (pow (exp 2) (log N)))>
#<alt (atan2 1 (pow (exp 2) (log N)))>
#<alt (atan2 1 (pow (exp 2) (log N)))>
#<alt (atan2 1 (pow (exp 2) (log N)))>
#<alt (atan2 1 (pow (exp 2) (log N)))>
#<alt (atan2 1 (pow (exp 2) (log N)))>
#<alt (atan2 1 (pow (exp 2) (log N)))>
#<alt (atan2 1 (pow (exp 2) (log 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 (exp (* 2 (+ (log -1) (* -1 (log (/ -1 N))))))>
#<alt (exp (* 2 (+ (log -1) (* -1 (log (/ -1 N))))))>
#<alt (exp (* 2 (+ (log -1) (* -1 (log (/ -1 N))))))>
#<alt (exp (* 2 (+ (log -1) (* -1 (log (/ -1 N))))))>
#<alt (log N)>
#<alt (log N)>
#<alt (log N)>
#<alt (log N)>
#<alt (* -1 (log (/ 1 N)))>
#<alt (* -1 (log (/ 1 N)))>
#<alt (* -1 (log (/ 1 N)))>
#<alt (* -1 (log (/ 1 N)))>
#<alt (+ (log -1) (* -1 (log (/ -1 N))))>
#<alt (+ (log -1) (* -1 (log (/ -1 N))))>
#<alt (+ (log -1) (* -1 (log (/ -1 N))))>
#<alt (+ (log -1) (* -1 (log (/ -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 (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)))>
Calls

27 calls:

TimeVariablePointExpression
52.0ms
N
@0
(pow (exp 2) (log N))
19.0ms
N
@-inf
(pow (exp 2) (log N))
6.0ms
N
@inf
(pow (exp 2) (log N))
0.0ms
N
@inf
(atan2 1 (pow (exp 2) (log N)))
0.0ms
N
@-inf
(atan2 1 (+ (* N N) N))

rewrite18.0ms (0.4%)

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: 1 (0.0ms)

IterNodesCost
01138
12435
23135
34035
45335
56835
68435
79335
09335
Stop Event
iter limit
saturated
Counts
10 → 42
Calls
Call 1
Inputs
(atan2 1 N)
(atan2 1 (+ (* N N) N))
(+ (* N N) N)
(* N N)
(atan2 1 (pow (exp 2) (log N)))
(pow (exp 2) (log N))
(exp 2)
(log N)
(+ (* N N) N)
(atan2 1 (+ (* 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))
(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))
(exp.f64 #s(literal 2 binary64))
(log.f64 N)
(+.f64 (log.f64 N) #s(literal 0 binary64))
(+.f64 #s(literal 0 binary64) (log.f64 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)
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))

simplify187.0ms (4.3%)

Algorithm
egg-herbie
Rules
2134×fnmadd-define
1254×+-lowering-+.f64
1254×+-lowering-+.f32
1082×fmsub-define
1076×fnmsub-define
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
029488
168418
2135418
3347418
41251382
54121382
08345382
Stop Event
iter limit
node limit
Counts
108 → 108
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)
(atan2 1 (pow (exp 2) (log N)))
(atan2 1 (pow (exp 2) (log N)))
(atan2 1 (pow (exp 2) (log N)))
(atan2 1 (pow (exp 2) (log N)))
(atan2 1 (pow (exp 2) (log N)))
(atan2 1 (pow (exp 2) (log N)))
(atan2 1 (pow (exp 2) (log N)))
(atan2 1 (pow (exp 2) (log N)))
(atan2 1 (pow (exp 2) (log N)))
(atan2 1 (pow (exp 2) (log N)))
(atan2 1 (pow (exp 2) (log N)))
(atan2 1 (pow (exp 2) (log 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)
(exp (* 2 (+ (log -1) (* -1 (log (/ -1 N))))))
(exp (* 2 (+ (log -1) (* -1 (log (/ -1 N))))))
(exp (* 2 (+ (log -1) (* -1 (log (/ -1 N))))))
(exp (* 2 (+ (log -1) (* -1 (log (/ -1 N))))))
(log N)
(log N)
(log N)
(log N)
(* -1 (log (/ 1 N)))
(* -1 (log (/ 1 N)))
(* -1 (log (/ 1 N)))
(* -1 (log (/ 1 N)))
(+ (log -1) (* -1 (log (/ -1 N))))
(+ (log -1) (* -1 (log (/ -1 N))))
(+ (log -1) (* -1 (log (/ -1 N))))
(+ (log -1) (* -1 (log (/ -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)))
(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)))
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)
(atan2 1 (pow (exp 2) (log N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow (exp 2) (log N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow (exp 2) (log N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow (exp 2) (log N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow (exp 2) (log N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow (exp 2) (log N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow (exp 2) (log N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow (exp 2) (log N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow (exp 2) (log N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow (exp 2) (log N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow (exp 2) (log N)))
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
(atan2 1 (pow (exp 2) (log N)))
(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)
(exp (* 2 (+ (log -1) (* -1 (log (/ -1 N))))))
(*.f64 N N)
(exp (* 2 (+ (log -1) (* -1 (log (/ -1 N))))))
(*.f64 N N)
(exp (* 2 (+ (log -1) (* -1 (log (/ -1 N))))))
(*.f64 N N)
(exp (* 2 (+ (log -1) (* -1 (log (/ -1 N))))))
(*.f64 N N)
(log N)
(log.f64 N)
(log N)
(log.f64 N)
(log N)
(log.f64 N)
(log N)
(log.f64 N)
(* -1 (log (/ 1 N)))
(log.f64 N)
(* -1 (log (/ 1 N)))
(log.f64 N)
(* -1 (log (/ 1 N)))
(log.f64 N)
(* -1 (log (/ 1 N)))
(log.f64 N)
(+ (log -1) (* -1 (log (/ -1 N))))
(log.f64 N)
(+ (log -1) (* -1 (log (/ -1 N))))
(log.f64 N)
(+ (log -1) (* -1 (log (/ -1 N))))
(log.f64 N)
(+ (log -1) (* -1 (log (/ -1 N))))
(log.f64 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))
(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)))

eval16.0ms (0.4%)

Compiler

Compiled 955 to 59 computations (93.8% saved)

prune8.0ms (0.2%)

Pruning

7 alts after pruning (0 fresh and 7 done)

PrunedKeptTotal
New1500150
Fresh000
Picked044
Done033
Total1507157
Accuracy
99.6%
Counts
157 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
97.3%
(atan2.f64 #s(literal 1 binary64) (fma.f64 N N N))
87.9%
(atan2.f64 #s(literal 1 binary64) (pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N)))
97.3%
(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)))))
97.3%
(atan2.f64 #s(literal 1 binary64) (*.f64 N (+.f64 #s(literal 1 binary64) N)))
94.9%
(atan2.f64 #s(literal 1 binary64) (*.f64 N N))
7.8%
(atan2.f64 #s(literal 1 binary64) N)
Compiler

Compiled 114 to 61 computations (46.5% saved)

regimes7.0ms (0.2%)

Counts
10 → 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)))))
(atan2.f64 #s(literal 1 binary64) (fma.f64 N N N))
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
(atan2.f64 #s(literal 1 binary64) (fma.f64 N N (+.f64 #s(literal 1 binary64) N)))
(atan2.f64 #s(literal 1 binary64) (pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 N)))
Outputs
(atan2.f64 #s(literal 1 binary64) (fma.f64 N N (+.f64 #s(literal 1 binary64) N)))
Calls

2 calls:

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

regimes8.0ms (0.2%)

Counts
8 → 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)))))
(atan2.f64 #s(literal 1 binary64) (fma.f64 N N N))
(-.f64 (atan.f64 (+.f64 N #s(literal 1 binary64))) (atan.f64 N))
Outputs
(atan2.f64 #s(literal 1 binary64) (+.f64 #s(literal 1 binary64) (*.f64 N (+.f64 N #s(literal 1 binary64)))))
Calls

2 calls:

6.0ms
N
2.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
97.3%1N
Compiler

Compiled 2 to 1 computations (50% saved)

regimes2.0ms (0%)

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
94.9%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
7.8%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.2%1N
Compiler

Compiled 2 to 1 computations (50% saved)

simplify10.0ms (0.2%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01535
12135
Stop Event
saturated
Calls
Call 1
Inputs
(atan2.f64 #s(literal 1 binary64) (fma.f64 N N (+.f64 #s(literal 1 binary64) N)))
(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) (fma.f64 N N (+.f64 #s(literal 1 binary64) N)))
(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))

soundness1.0s (23.3%)

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
028432
176345
2165345
3570345
43685345
08517345
0624
11619
23219
35519
48119
510619
612219
713019
013019
0616
11516
22716
35416
49116
517116
628816
747716
8220416
9365016
10657016
0842316
Stop Event
done
iter limit
node limit
iter limit
saturated
iter limit
node limit
iter limit
node limit
Compiler

Compiled 135 to 74 computations (45.2% saved)

preprocess44.0ms (1%)

Compiler

Compiled 110 to 52 computations (52.7% saved)

end0.0ms (0%)

Profiling

Loading profile data...