Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
spbro
OpenXG-RAN
Commits
5fa77558
Commit
5fa77558
authored
Jul 29, 2020
by
Sakthivel Velumani
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed unwanted loop and if
Reordered mod_table to support new changes in the function
parent
f7dc17ec
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
4 additions
and
11 deletions
+4
-11
executables/nr-softmodem.c
executables/nr-softmodem.c
+1
-2
openair1/PHY/MODULATION/nr_modulation.c
openair1/PHY/MODULATION/nr_modulation.c
+2
-8
openair1/PHY/NR_REFSIG/nr_mod_table.h
openair1/PHY/NR_REFSIG/nr_mod_table.h
+1
-1
No files found.
executables/nr-softmodem.c
View file @
5fa77558
...
...
@@ -84,8 +84,7 @@ unsigned short config_frames[4] = {2,9,11,13};
#include "NB_IoT_interface.h"
#include "x2ap_eNB.h"
short
nr_mod_table
[
NR_MOD_TABLE_SIZE_SHORT
]
=
{
0
,
0
,
16384
,
16384
,
-
16384
,
-
16384
,
16384
,
16384
,
16384
,
-
16384
,
-
16384
,
16384
,
-
16384
,
-
16384
,
7327
,
7327
,
7327
,
21981
,
21981
,
7327
,
21981
,
21981
,
7327
,
-
7327
,
7327
,
-
21981
,
21981
,
-
7327
,
21981
,
-
21981
,
-
7327
,
7327
,
-
7327
,
21981
,
-
21981
,
7327
,
-
21981
,
21981
,
-
7327
,
-
7327
,
-
7327
,
-
21981
,
-
21981
,
-
7327
,
-
21981
,
-
21981
,
10726
,
10726
,
10726
,
3576
,
3576
,
10726
,
3576
,
3576
,
10726
,
17876
,
10726
,
25027
,
3576
,
17876
,
3576
,
25027
,
17876
,
10726
,
17876
,
3576
,
25027
,
10726
,
25027
,
3576
,
17876
,
17876
,
17876
,
25027
,
25027
,
17876
,
25027
,
25027
,
10726
,
-
10726
,
10726
,
-
3576
,
3576
,
-
10726
,
3576
,
-
3576
,
10726
,
-
17876
,
10726
,
-
25027
,
3576
,
-
17876
,
3576
,
-
25027
,
17876
,
-
10726
,
17876
,
-
3576
,
25027
,
-
10726
,
25027
,
-
3576
,
17876
,
-
17876
,
17876
,
-
25027
,
25027
,
-
17876
,
25027
,
-
25027
,
-
10726
,
10726
,
-
10726
,
3576
,
-
3576
,
10726
,
-
3576
,
3576
,
-
10726
,
17876
,
-
10726
,
25027
,
-
3576
,
17876
,
-
3576
,
25027
,
-
17876
,
10726
,
-
17876
,
3576
,
-
25027
,
10726
,
-
25027
,
3576
,
-
17876
,
17876
,
-
17876
,
25027
,
-
25027
,
17876
,
-
25027
,
25027
,
-
10726
,
-
10726
,
-
10726
,
-
3576
,
-
3576
,
-
10726
,
-
3576
,
-
3576
,
-
10726
,
-
17876
,
-
10726
,
-
25027
,
-
3576
,
-
17876
,
-
3576
,
-
25027
,
-
17876
,
-
10726
,
-
17876
,
-
3576
,
-
25027
,
-
10726
,
-
25027
,
-
3576
,
-
17876
,
-
17876
,
-
17876
,
-
25027
,
-
25027
,
-
17876
,
-
25027
,
-
25027
,
8886
,
8886
,
8886
,
12439
,
12439
,
8886
,
12439
,
12439
,
8886
,
5332
,
8886
,
1778
,
12439
,
5332
,
12439
,
1778
,
5332
,
8886
,
5332
,
12439
,
1778
,
8886
,
1778
,
12439
,
5332
,
5332
,
5332
,
1778
,
1778
,
5332
,
1778
,
1778
,
8886
,
19547
,
8886
,
15993
,
12439
,
19547
,
12439
,
15993
,
8886
,
23101
,
8886
,
26655
,
12439
,
23101
,
12439
,
26655
,
5332
,
19547
,
5332
,
15993
,
1778
,
19547
,
1778
,
15993
,
5332
,
23101
,
5332
,
26655
,
1778
,
23101
,
1778
,
26655
,
19547
,
8886
,
19547
,
12439
,
15993
,
8886
,
15993
,
12439
,
19547
,
5332
,
19547
,
1778
,
15993
,
5332
,
15993
,
1778
,
23101
,
8886
,
23101
,
12439
,
26655
,
8886
,
26655
,
12439
,
23101
,
5332
,
23101
,
1778
,
26655
,
5332
,
26655
,
1778
,
19547
,
19547
,
19547
,
15993
,
15993
,
19547
,
15993
,
15993
,
19547
,
23101
,
19547
,
26655
,
15993
,
23101
,
15993
,
26655
,
23101
,
19547
,
23101
,
15993
,
26655
,
19547
,
26655
,
15993
,
23101
,
23101
,
23101
,
26655
,
26655
,
23101
,
26655
,
26655
,
8886
,
-
8886
,
8886
,
-
12439
,
12439
,
-
8886
,
12439
,
-
12439
,
8886
,
-
5332
,
8886
,
-
1778
,
12439
,
-
5332
,
12439
,
-
1778
,
5332
,
-
8886
,
5332
,
-
12439
,
1778
,
-
8886
,
1778
,
-
12439
,
5332
,
-
5332
,
5332
,
-
1778
,
1778
,
-
5332
,
1778
,
-
1778
,
8886
,
-
19547
,
8886
,
-
15993
,
12439
,
-
19547
,
12439
,
-
15993
,
8886
,
-
23101
,
8886
,
-
26655
,
12439
,
-
23101
,
12439
,
-
26655
,
5332
,
-
19547
,
5332
,
-
15993
,
1778
,
-
19547
,
1778
,
-
15993
,
5332
,
-
23101
,
5332
,
-
26655
,
1778
,
-
23101
,
1778
,
-
26655
,
19547
,
-
8886
,
19547
,
-
12439
,
15993
,
-
8886
,
15993
,
-
12439
,
19547
,
-
5332
,
19547
,
-
1778
,
15993
,
-
5332
,
15993
,
-
1778
,
23101
,
-
8886
,
23101
,
-
12439
,
26655
,
-
8886
,
26655
,
-
12439
,
23101
,
-
5332
,
23101
,
-
1778
,
26655
,
-
5332
,
26655
,
-
1778
,
19547
,
-
19547
,
19547
,
-
15993
,
15993
,
-
19547
,
15993
,
-
15993
,
19547
,
-
23101
,
19547
,
-
26655
,
15993
,
-
23101
,
15993
,
-
26655
,
23101
,
-
19547
,
23101
,
-
15993
,
26655
,
-
19547
,
26655
,
-
15993
,
23101
,
-
23101
,
23101
,
-
26655
,
26655
,
-
23101
,
26655
,
-
26655
,
-
8886
,
8886
,
-
8886
,
12439
,
-
12439
,
8886
,
-
12439
,
12439
,
-
8886
,
5332
,
-
8886
,
1778
,
-
12439
,
5332
,
-
12439
,
1778
,
-
5332
,
8886
,
-
5332
,
12439
,
-
1778
,
8886
,
-
1778
,
12439
,
-
5332
,
5332
,
-
5332
,
1778
,
-
1778
,
5332
,
-
1778
,
1778
,
-
8886
,
19547
,
-
8886
,
15993
,
-
12439
,
19547
,
-
12439
,
15993
,
-
8886
,
23101
,
-
8886
,
26655
,
-
12439
,
23101
,
-
12439
,
26655
,
-
5332
,
19547
,
-
5332
,
15993
,
-
1778
,
19547
,
-
1778
,
15993
,
-
5332
,
23101
,
-
5332
,
26655
,
-
1778
,
23101
,
-
1778
,
26655
,
-
19547
,
8886
,
-
19547
,
12439
,
-
15993
,
8886
,
-
15993
,
12439
,
-
19547
,
5332
,
-
19547
,
1778
,
-
15993
,
5332
,
-
15993
,
1778
,
-
23101
,
8886
,
-
23101
,
12439
,
-
26655
,
8886
,
-
26655
,
12439
,
-
23101
,
5332
,
-
23101
,
1778
,
-
26655
,
5332
,
-
26655
,
1778
,
-
19547
,
19547
,
-
19547
,
15993
,
-
15993
,
19547
,
-
15993
,
15993
,
-
19547
,
23101
,
-
19547
,
26655
,
-
15993
,
23101
,
-
15993
,
26655
,
-
23101
,
19547
,
-
23101
,
15993
,
-
26655
,
19547
,
-
26655
,
15993
,
-
23101
,
23101
,
-
23101
,
26655
,
-
26655
,
23101
,
-
26655
,
26655
,
-
8886
,
-
8886
,
-
8886
,
-
12439
,
-
12439
,
-
8886
,
-
12439
,
-
12439
,
-
8886
,
-
5332
,
-
8886
,
-
1778
,
-
12439
,
-
5332
,
-
12439
,
-
1778
,
-
5332
,
-
8886
,
-
5332
,
-
12439
,
-
1778
,
-
8886
,
-
1778
,
-
12439
,
-
5332
,
-
5332
,
-
5332
,
-
1778
,
-
1778
,
-
5332
,
-
1778
,
-
1778
,
-
8886
,
-
19547
,
-
8886
,
-
15993
,
-
12439
,
-
19547
,
-
12439
,
-
15993
,
-
8886
,
-
23101
,
-
8886
,
-
26655
,
-
12439
,
-
23101
,
-
12439
,
-
26655
,
-
5332
,
-
19547
,
-
5332
,
-
15993
,
-
1778
,
-
19547
,
-
1778
,
-
15993
,
-
5332
,
-
23101
,
-
5332
,
-
26655
,
-
1778
,
-
23101
,
-
1778
,
-
26655
,
-
19547
,
-
8886
,
-
19547
,
-
12439
,
-
15993
,
-
8886
,
-
15993
,
-
12439
,
-
19547
,
-
5332
,
-
19547
,
-
1778
,
-
15993
,
-
5332
,
-
15993
,
-
1778
,
-
23101
,
-
8886
,
-
23101
,
-
12439
,
-
26655
,
-
8886
,
-
26655
,
-
12439
,
-
23101
,
-
5332
,
-
23101
,
-
1778
,
-
26655
,
-
5332
,
-
26655
,
-
1778
,
-
19547
,
-
19547
,
-
19547
,
-
15993
,
-
15993
,
-
19547
,
-
15993
,
-
15993
,
-
19547
,
-
23101
,
-
19547
,
-
26655
,
-
15993
,
-
23101
,
-
15993
,
-
26655
,
-
23101
,
-
19547
,
-
23101
,
-
15993
,
-
26655
,
-
19547
,
-
26655
,
-
15993
,
-
23101
,
-
23101
,
-
23101
,
-
26655
,
-
26655
,
-
23101
,
-
26655
,
-
26655
};
short
nr_mod_table
[
NR_MOD_TABLE_SIZE_SHORT
]
=
{
0
,
0
,
16384
,
16384
,
-
16384
,
-
16384
,
16384
,
16384
,
-
16384
,
16384
,
16384
,
-
16384
,
-
16384
,
-
16384
,
7327
,
7327
,
-
7327
,
7327
,
7327
,
-
7327
,
-
7327
,
-
7327
,
21981
,
7327
,
-
21981
,
7327
,
21981
,
-
7327
,
-
21981
,
-
7327
,
7327
,
21981
,
-
7327
,
21981
,
7327
,
-
21981
,
-
7327
,
-
21981
,
21981
,
21981
,
-
21981
,
21981
,
21981
,
-
21981
,
-
21981
,
-
21981
,
10726
,
10726
,
-
10726
,
10726
,
10726
,
-
10726
,
-
10726
,
-
10726
,
17876
,
10726
,
-
17876
,
10726
,
17876
,
-
10726
,
-
17876
,
-
10726
,
10726
,
17876
,
-
10726
,
17876
,
10726
,
-
17876
,
-
10726
,
-
17876
,
17876
,
17876
,
-
17876
,
17876
,
17876
,
-
17876
,
-
17876
,
-
17876
,
3576
,
10726
,
-
3576
,
10726
,
3576
,
-
10726
,
-
3576
,
-
10726
,
25027
,
10726
,
-
25027
,
10726
,
25027
,
-
10726
,
-
25027
,
-
10726
,
3576
,
17876
,
-
3576
,
17876
,
3576
,
-
17876
,
-
3576
,
-
17876
,
25027
,
17876
,
-
25027
,
17876
,
25027
,
-
17876
,
-
25027
,
-
17876
,
10726
,
3576
,
-
10726
,
3576
,
10726
,
-
3576
,
-
10726
,
-
3576
,
17876
,
3576
,
-
17876
,
3576
,
17876
,
-
3576
,
-
17876
,
-
3576
,
10726
,
25027
,
-
10726
,
25027
,
10726
,
-
25027
,
-
10726
,
-
25027
,
17876
,
25027
,
-
17876
,
25027
,
17876
,
-
25027
,
-
17876
,
-
25027
,
3576
,
3576
,
-
3576
,
3576
,
3576
,
-
3576
,
-
3576
,
-
3576
,
25027
,
3576
,
-
25027
,
3576
,
25027
,
-
3576
,
-
25027
,
-
3576
,
3576
,
25027
,
-
3576
,
25027
,
3576
,
-
25027
,
-
3576
,
-
25027
,
25027
,
25027
,
-
25027
,
25027
,
25027
,
-
25027
,
-
25027
,
-
25027
,
8886
,
8886
,
-
8886
,
8886
,
8886
,
-
8886
,
-
8886
,
-
8886
,
19547
,
8886
,
-
19547
,
8886
,
19547
,
-
8886
,
-
19547
,
-
8886
,
8886
,
19547
,
-
8886
,
19547
,
8886
,
-
19547
,
-
8886
,
-
19547
,
19547
,
19547
,
-
19547
,
19547
,
19547
,
-
19547
,
-
19547
,
-
19547
,
5332
,
8886
,
-
5332
,
8886
,
5332
,
-
8886
,
-
5332
,
-
8886
,
23101
,
8886
,
-
23101
,
8886
,
23101
,
-
8886
,
-
23101
,
-
8886
,
5332
,
19547
,
-
5332
,
19547
,
5332
,
-
19547
,
-
5332
,
-
19547
,
23101
,
19547
,
-
23101
,
19547
,
23101
,
-
19547
,
-
23101
,
-
19547
,
8886
,
5332
,
-
8886
,
5332
,
8886
,
-
5332
,
-
8886
,
-
5332
,
19547
,
5332
,
-
19547
,
5332
,
19547
,
-
5332
,
-
19547
,
-
5332
,
8886
,
23101
,
-
8886
,
23101
,
8886
,
-
23101
,
-
8886
,
-
23101
,
19547
,
23101
,
-
19547
,
23101
,
19547
,
-
23101
,
-
19547
,
-
23101
,
5332
,
5332
,
-
5332
,
5332
,
5332
,
-
5332
,
-
5332
,
-
5332
,
23101
,
5332
,
-
23101
,
5332
,
23101
,
-
5332
,
-
23101
,
-
5332
,
5332
,
23101
,
-
5332
,
23101
,
5332
,
-
23101
,
-
5332
,
-
23101
,
23101
,
23101
,
-
23101
,
23101
,
23101
,
-
23101
,
-
23101
,
-
23101
,
12439
,
8886
,
-
12439
,
8886
,
12439
,
-
8886
,
-
12439
,
-
8886
,
15993
,
8886
,
-
15993
,
8886
,
15993
,
-
8886
,
-
15993
,
-
8886
,
12439
,
19547
,
-
12439
,
19547
,
12439
,
-
19547
,
-
12439
,
-
19547
,
15993
,
19547
,
-
15993
,
19547
,
15993
,
-
19547
,
-
15993
,
-
19547
,
1778
,
8886
,
-
1778
,
8886
,
1778
,
-
8886
,
-
1778
,
-
8886
,
26655
,
8886
,
-
26655
,
8886
,
26655
,
-
8886
,
-
26655
,
-
8886
,
1778
,
19547
,
-
1778
,
19547
,
1778
,
-
19547
,
-
1778
,
-
19547
,
26655
,
19547
,
-
26655
,
19547
,
26655
,
-
19547
,
-
26655
,
-
19547
,
12439
,
5332
,
-
12439
,
5332
,
12439
,
-
5332
,
-
12439
,
-
5332
,
15993
,
5332
,
-
15993
,
5332
,
15993
,
-
5332
,
-
15993
,
-
5332
,
12439
,
23101
,
-
12439
,
23101
,
12439
,
-
23101
,
-
12439
,
-
23101
,
15993
,
23101
,
-
15993
,
23101
,
15993
,
-
23101
,
-
15993
,
-
23101
,
1778
,
5332
,
-
1778
,
5332
,
1778
,
-
5332
,
-
1778
,
-
5332
,
26655
,
5332
,
-
26655
,
5332
,
26655
,
-
5332
,
-
26655
,
-
5332
,
1778
,
23101
,
-
1778
,
23101
,
1778
,
-
23101
,
-
1778
,
-
23101
,
26655
,
23101
,
-
26655
,
23101
,
26655
,
-
23101
,
-
26655
,
-
23101
,
8886
,
12439
,
-
8886
,
12439
,
8886
,
-
12439
,
-
8886
,
-
12439
,
19547
,
12439
,
-
19547
,
12439
,
19547
,
-
12439
,
-
19547
,
-
12439
,
8886
,
15993
,
-
8886
,
15993
,
8886
,
-
15993
,
-
8886
,
-
15993
,
19547
,
15993
,
-
19547
,
15993
,
19547
,
-
15993
,
-
19547
,
-
15993
,
5332
,
12439
,
-
5332
,
12439
,
5332
,
-
12439
,
-
5332
,
-
12439
,
23101
,
12439
,
-
23101
,
12439
,
23101
,
-
12439
,
-
23101
,
-
12439
,
5332
,
15993
,
-
5332
,
15993
,
5332
,
-
15993
,
-
5332
,
-
15993
,
23101
,
15993
,
-
23101
,
15993
,
23101
,
-
15993
,
-
23101
,
-
15993
,
8886
,
1778
,
-
8886
,
1778
,
8886
,
-
1778
,
-
8886
,
-
1778
,
19547
,
1778
,
-
19547
,
1778
,
19547
,
-
1778
,
-
19547
,
-
1778
,
8886
,
26655
,
-
8886
,
26655
,
8886
,
-
26655
,
-
8886
,
-
26655
,
19547
,
26655
,
-
19547
,
26655
,
19547
,
-
26655
,
-
19547
,
-
26655
,
5332
,
1778
,
-
5332
,
1778
,
5332
,
-
1778
,
-
5332
,
-
1778
,
23101
,
1778
,
-
23101
,
1778
,
23101
,
-
1778
,
-
23101
,
-
1778
,
5332
,
26655
,
-
5332
,
26655
,
5332
,
-
26655
,
-
5332
,
-
26655
,
23101
,
26655
,
-
23101
,
26655
,
23101
,
-
26655
,
-
23101
,
-
26655
,
12439
,
12439
,
-
12439
,
12439
,
12439
,
-
12439
,
-
12439
,
-
12439
,
15993
,
12439
,
-
15993
,
12439
,
15993
,
-
12439
,
-
15993
,
-
12439
,
12439
,
15993
,
-
12439
,
15993
,
12439
,
-
15993
,
-
12439
,
-
15993
,
15993
,
15993
,
-
15993
,
15993
,
15993
,
-
15993
,
-
15993
,
-
15993
,
1778
,
12439
,
-
1778
,
12439
,
1778
,
-
12439
,
-
1778
,
-
12439
,
26655
,
12439
,
-
26655
,
12439
,
26655
,
-
12439
,
-
26655
,
-
12439
,
1778
,
15993
,
-
1778
,
15993
,
1778
,
-
15993
,
-
1778
,
-
15993
,
26655
,
15993
,
-
26655
,
15993
,
26655
,
-
15993
,
-
26655
,
-
15993
,
12439
,
1778
,
-
12439
,
1778
,
12439
,
-
1778
,
-
12439
,
-
1778
,
15993
,
1778
,
-
15993
,
1778
,
15993
,
-
1778
,
-
15993
,
-
1778
,
12439
,
26655
,
-
12439
,
26655
,
12439
,
-
26655
,
-
12439
,
-
26655
,
15993
,
26655
,
-
15993
,
26655
,
15993
,
-
26655
,
-
15993
,
-
26655
,
1778
,
1778
,
-
1778
,
1778
,
1778
,
-
1778
,
-
1778
,
-
1778
,
26655
,
1778
,
-
26655
,
1778
,
26655
,
-
1778
,
-
26655
,
-
1778
,
1778
,
26655
,
-
1778
,
26655
,
1778
,
-
26655
,
-
1778
,
-
26655
,
26655
,
26655
,
-
26655
,
26655
,
26655
,
-
26655
,
-
26655
,
-
26655
};
pthread_cond_t
nfapi_sync_cond
;
pthread_mutex_t
nfapi_sync_mutex
;
...
...
openair1/PHY/MODULATION/nr_modulation.c
View file @
5fa77558
...
...
@@ -36,16 +36,10 @@ void nr_modulation(uint32_t *in,
LOG_D
(
PHY
,
"nr_modulation: length %d, mod_order %d
\n
"
,
length
,
mod_order
);
uint16_t
mask
=
((
1
<<
mod_order
)
-
1
);
for
(
int
i
=
0
;
i
<
length
/
mod_order
;
i
++
)
{
idx
=
0
;
for
(
int
j
=
0
;
j
<
mod_order
;
j
++
)
{
b_idx
=
(
i
*
mod_order
+
j
)
&
0x1f
;
if
(
i
&&
(
!
b_idx
))
in
++
;
idx
^=
(((
*
in
)
>>
b_idx
)
&
1
)
<<
(
mod_order
-
j
-
1
);
}
idx
=
((
in
[
i
*
mod_order
/
32
]
>>
(
i
*
mod_order
))
&
mask
);
out
[
i
<<
1
]
=
nr_mod_table
[(
offset
+
idx
)
<<
1
];
out
[(
i
<<
1
)
+
1
]
=
nr_mod_table
[((
offset
+
idx
)
<<
1
)
+
1
];
...
...
openair1/PHY/NR_REFSIG/nr_mod_table.h
View file @
5fa77558
...
...
@@ -28,6 +28,6 @@
#define NR_MOD_TABLE_QAM16_OFFSET 7
#define NR_MOD_TABLE_QAM64_OFFSET 23
#define NR_MOD_TABLE_QAM256_OFFSET 87
short
nr_mod_table
[
NR_MOD_TABLE_SIZE_SHORT
]
=
{
0
,
0
,
16384
,
16384
,
-
16384
,
-
16384
,
16384
,
16384
,
16384
,
-
16384
,
-
16384
,
16384
,
-
16384
,
-
16384
,
7327
,
7327
,
7327
,
21981
,
21981
,
7327
,
21981
,
21981
,
7327
,
-
7327
,
7327
,
-
21981
,
21981
,
-
7327
,
21981
,
-
21981
,
-
7327
,
7327
,
-
7327
,
21981
,
-
21981
,
7327
,
-
21981
,
21981
,
-
7327
,
-
7327
,
-
7327
,
-
21981
,
-
21981
,
-
7327
,
-
21981
,
-
21981
,
10726
,
10726
,
10726
,
3576
,
3576
,
10726
,
3576
,
3576
,
10726
,
17876
,
10726
,
25027
,
3576
,
17876
,
3576
,
25027
,
17876
,
10726
,
17876
,
3576
,
25027
,
10726
,
25027
,
3576
,
17876
,
17876
,
17876
,
25027
,
25027
,
17876
,
25027
,
25027
,
10726
,
-
10726
,
10726
,
-
3576
,
3576
,
-
10726
,
3576
,
-
3576
,
10726
,
-
17876
,
10726
,
-
25027
,
3576
,
-
17876
,
3576
,
-
25027
,
17876
,
-
10726
,
17876
,
-
3576
,
25027
,
-
10726
,
25027
,
-
3576
,
17876
,
-
17876
,
17876
,
-
25027
,
25027
,
-
17876
,
25027
,
-
25027
,
-
10726
,
10726
,
-
10726
,
3576
,
-
3576
,
10726
,
-
3576
,
3576
,
-
10726
,
17876
,
-
10726
,
25027
,
-
3576
,
17876
,
-
3576
,
25027
,
-
17876
,
10726
,
-
17876
,
3576
,
-
25027
,
10726
,
-
25027
,
3576
,
-
17876
,
17876
,
-
17876
,
25027
,
-
25027
,
17876
,
-
25027
,
25027
,
-
10726
,
-
10726
,
-
10726
,
-
3576
,
-
3576
,
-
10726
,
-
3576
,
-
3576
,
-
10726
,
-
17876
,
-
10726
,
-
25027
,
-
3576
,
-
17876
,
-
3576
,
-
25027
,
-
17876
,
-
10726
,
-
17876
,
-
3576
,
-
25027
,
-
10726
,
-
25027
,
-
3576
,
-
17876
,
-
17876
,
-
17876
,
-
25027
,
-
25027
,
-
17876
,
-
25027
,
-
25027
,
8886
,
8886
,
8886
,
12439
,
12439
,
8886
,
12439
,
12439
,
8886
,
5332
,
8886
,
1778
,
12439
,
5332
,
12439
,
1778
,
5332
,
8886
,
5332
,
12439
,
1778
,
8886
,
1778
,
12439
,
5332
,
5332
,
5332
,
1778
,
1778
,
5332
,
1778
,
1778
,
8886
,
19547
,
8886
,
15993
,
12439
,
19547
,
12439
,
15993
,
8886
,
23101
,
8886
,
26655
,
12439
,
23101
,
12439
,
26655
,
5332
,
19547
,
5332
,
15993
,
1778
,
19547
,
1778
,
15993
,
5332
,
23101
,
5332
,
26655
,
1778
,
23101
,
1778
,
26655
,
19547
,
8886
,
19547
,
12439
,
15993
,
8886
,
15993
,
12439
,
19547
,
5332
,
19547
,
1778
,
15993
,
5332
,
15993
,
1778
,
23101
,
8886
,
23101
,
12439
,
26655
,
8886
,
26655
,
12439
,
23101
,
5332
,
23101
,
1778
,
26655
,
5332
,
26655
,
1778
,
19547
,
19547
,
19547
,
15993
,
15993
,
19547
,
15993
,
15993
,
19547
,
23101
,
19547
,
26655
,
15993
,
23101
,
15993
,
26655
,
23101
,
19547
,
23101
,
15993
,
26655
,
19547
,
26655
,
15993
,
23101
,
23101
,
23101
,
26655
,
26655
,
23101
,
26655
,
26655
,
8886
,
-
8886
,
8886
,
-
12439
,
12439
,
-
8886
,
12439
,
-
12439
,
8886
,
-
5332
,
8886
,
-
1778
,
12439
,
-
5332
,
12439
,
-
1778
,
5332
,
-
8886
,
5332
,
-
12439
,
1778
,
-
8886
,
1778
,
-
12439
,
5332
,
-
5332
,
5332
,
-
1778
,
1778
,
-
5332
,
1778
,
-
1778
,
8886
,
-
19547
,
8886
,
-
15993
,
12439
,
-
19547
,
12439
,
-
15993
,
8886
,
-
23101
,
8886
,
-
26655
,
12439
,
-
23101
,
12439
,
-
26655
,
5332
,
-
19547
,
5332
,
-
15993
,
1778
,
-
19547
,
1778
,
-
15993
,
5332
,
-
23101
,
5332
,
-
26655
,
1778
,
-
23101
,
1778
,
-
26655
,
19547
,
-
8886
,
19547
,
-
12439
,
15993
,
-
8886
,
15993
,
-
12439
,
19547
,
-
5332
,
19547
,
-
1778
,
15993
,
-
5332
,
15993
,
-
1778
,
23101
,
-
8886
,
23101
,
-
12439
,
26655
,
-
8886
,
26655
,
-
12439
,
23101
,
-
5332
,
23101
,
-
1778
,
26655
,
-
5332
,
26655
,
-
1778
,
19547
,
-
19547
,
19547
,
-
15993
,
15993
,
-
19547
,
15993
,
-
15993
,
19547
,
-
23101
,
19547
,
-
26655
,
15993
,
-
23101
,
15993
,
-
26655
,
23101
,
-
19547
,
23101
,
-
15993
,
26655
,
-
19547
,
26655
,
-
15993
,
23101
,
-
23101
,
23101
,
-
26655
,
26655
,
-
23101
,
26655
,
-
26655
,
-
8886
,
8886
,
-
8886
,
12439
,
-
12439
,
8886
,
-
12439
,
12439
,
-
8886
,
5332
,
-
8886
,
1778
,
-
12439
,
5332
,
-
12439
,
1778
,
-
5332
,
8886
,
-
5332
,
12439
,
-
1778
,
8886
,
-
1778
,
12439
,
-
5332
,
5332
,
-
5332
,
1778
,
-
1778
,
5332
,
-
1778
,
1778
,
-
8886
,
19547
,
-
8886
,
15993
,
-
12439
,
19547
,
-
12439
,
15993
,
-
8886
,
23101
,
-
8886
,
26655
,
-
12439
,
23101
,
-
12439
,
26655
,
-
5332
,
19547
,
-
5332
,
15993
,
-
1778
,
19547
,
-
1778
,
15993
,
-
5332
,
23101
,
-
5332
,
26655
,
-
1778
,
23101
,
-
1778
,
26655
,
-
19547
,
8886
,
-
19547
,
12439
,
-
15993
,
8886
,
-
15993
,
12439
,
-
19547
,
5332
,
-
19547
,
1778
,
-
15993
,
5332
,
-
15993
,
1778
,
-
23101
,
8886
,
-
23101
,
12439
,
-
26655
,
8886
,
-
26655
,
12439
,
-
23101
,
5332
,
-
23101
,
1778
,
-
26655
,
5332
,
-
26655
,
1778
,
-
19547
,
19547
,
-
19547
,
15993
,
-
15993
,
19547
,
-
15993
,
15993
,
-
19547
,
23101
,
-
19547
,
26655
,
-
15993
,
23101
,
-
15993
,
26655
,
-
23101
,
19547
,
-
23101
,
15993
,
-
26655
,
19547
,
-
26655
,
15993
,
-
23101
,
23101
,
-
23101
,
26655
,
-
26655
,
23101
,
-
26655
,
26655
,
-
8886
,
-
8886
,
-
8886
,
-
12439
,
-
12439
,
-
8886
,
-
12439
,
-
12439
,
-
8886
,
-
5332
,
-
8886
,
-
1778
,
-
12439
,
-
5332
,
-
12439
,
-
1778
,
-
5332
,
-
8886
,
-
5332
,
-
12439
,
-
1778
,
-
8886
,
-
1778
,
-
12439
,
-
5332
,
-
5332
,
-
5332
,
-
1778
,
-
1778
,
-
5332
,
-
1778
,
-
1778
,
-
8886
,
-
19547
,
-
8886
,
-
15993
,
-
12439
,
-
19547
,
-
12439
,
-
15993
,
-
8886
,
-
23101
,
-
8886
,
-
26655
,
-
12439
,
-
23101
,
-
12439
,
-
26655
,
-
5332
,
-
19547
,
-
5332
,
-
15993
,
-
1778
,
-
19547
,
-
1778
,
-
15993
,
-
5332
,
-
23101
,
-
5332
,
-
26655
,
-
1778
,
-
23101
,
-
1778
,
-
26655
,
-
19547
,
-
8886
,
-
19547
,
-
12439
,
-
15993
,
-
8886
,
-
15993
,
-
12439
,
-
19547
,
-
5332
,
-
19547
,
-
1778
,
-
15993
,
-
5332
,
-
15993
,
-
1778
,
-
23101
,
-
8886
,
-
23101
,
-
12439
,
-
26655
,
-
8886
,
-
26655
,
-
12439
,
-
23101
,
-
5332
,
-
23101
,
-
1778
,
-
26655
,
-
5332
,
-
26655
,
-
1778
,
-
19547
,
-
19547
,
-
19547
,
-
15993
,
-
15993
,
-
19547
,
-
15993
,
-
15993
,
-
19547
,
-
23101
,
-
19547
,
-
26655
,
-
15993
,
-
23101
,
-
15993
,
-
26655
,
-
23101
,
-
19547
,
-
23101
,
-
15993
,
-
26655
,
-
19547
,
-
26655
,
-
15993
,
-
23101
,
-
23101
,
-
23101
,
-
26655
,
-
26655
,
-
23101
,
-
26655
,
-
26655
};
short
nr_mod_table
[
NR_MOD_TABLE_SIZE_SHORT
]
=
{
0
,
0
,
16384
,
16384
,
-
16384
,
-
16384
,
16384
,
16384
,
-
16384
,
16384
,
16384
,
-
16384
,
-
16384
,
-
16384
,
7327
,
7327
,
-
7327
,
7327
,
7327
,
-
7327
,
-
7327
,
-
7327
,
21981
,
7327
,
-
21981
,
7327
,
21981
,
-
7327
,
-
21981
,
-
7327
,
7327
,
21981
,
-
7327
,
21981
,
7327
,
-
21981
,
-
7327
,
-
21981
,
21981
,
21981
,
-
21981
,
21981
,
21981
,
-
21981
,
-
21981
,
-
21981
,
10726
,
10726
,
-
10726
,
10726
,
10726
,
-
10726
,
-
10726
,
-
10726
,
17876
,
10726
,
-
17876
,
10726
,
17876
,
-
10726
,
-
17876
,
-
10726
,
10726
,
17876
,
-
10726
,
17876
,
10726
,
-
17876
,
-
10726
,
-
17876
,
17876
,
17876
,
-
17876
,
17876
,
17876
,
-
17876
,
-
17876
,
-
17876
,
3576
,
10726
,
-
3576
,
10726
,
3576
,
-
10726
,
-
3576
,
-
10726
,
25027
,
10726
,
-
25027
,
10726
,
25027
,
-
10726
,
-
25027
,
-
10726
,
3576
,
17876
,
-
3576
,
17876
,
3576
,
-
17876
,
-
3576
,
-
17876
,
25027
,
17876
,
-
25027
,
17876
,
25027
,
-
17876
,
-
25027
,
-
17876
,
10726
,
3576
,
-
10726
,
3576
,
10726
,
-
3576
,
-
10726
,
-
3576
,
17876
,
3576
,
-
17876
,
3576
,
17876
,
-
3576
,
-
17876
,
-
3576
,
10726
,
25027
,
-
10726
,
25027
,
10726
,
-
25027
,
-
10726
,
-
25027
,
17876
,
25027
,
-
17876
,
25027
,
17876
,
-
25027
,
-
17876
,
-
25027
,
3576
,
3576
,
-
3576
,
3576
,
3576
,
-
3576
,
-
3576
,
-
3576
,
25027
,
3576
,
-
25027
,
3576
,
25027
,
-
3576
,
-
25027
,
-
3576
,
3576
,
25027
,
-
3576
,
25027
,
3576
,
-
25027
,
-
3576
,
-
25027
,
25027
,
25027
,
-
25027
,
25027
,
25027
,
-
25027
,
-
25027
,
-
25027
,
8886
,
8886
,
-
8886
,
8886
,
8886
,
-
8886
,
-
8886
,
-
8886
,
19547
,
8886
,
-
19547
,
8886
,
19547
,
-
8886
,
-
19547
,
-
8886
,
8886
,
19547
,
-
8886
,
19547
,
8886
,
-
19547
,
-
8886
,
-
19547
,
19547
,
19547
,
-
19547
,
19547
,
19547
,
-
19547
,
-
19547
,
-
19547
,
5332
,
8886
,
-
5332
,
8886
,
5332
,
-
8886
,
-
5332
,
-
8886
,
23101
,
8886
,
-
23101
,
8886
,
23101
,
-
8886
,
-
23101
,
-
8886
,
5332
,
19547
,
-
5332
,
19547
,
5332
,
-
19547
,
-
5332
,
-
19547
,
23101
,
19547
,
-
23101
,
19547
,
23101
,
-
19547
,
-
23101
,
-
19547
,
8886
,
5332
,
-
8886
,
5332
,
8886
,
-
5332
,
-
8886
,
-
5332
,
19547
,
5332
,
-
19547
,
5332
,
19547
,
-
5332
,
-
19547
,
-
5332
,
8886
,
23101
,
-
8886
,
23101
,
8886
,
-
23101
,
-
8886
,
-
23101
,
19547
,
23101
,
-
19547
,
23101
,
19547
,
-
23101
,
-
19547
,
-
23101
,
5332
,
5332
,
-
5332
,
5332
,
5332
,
-
5332
,
-
5332
,
-
5332
,
23101
,
5332
,
-
23101
,
5332
,
23101
,
-
5332
,
-
23101
,
-
5332
,
5332
,
23101
,
-
5332
,
23101
,
5332
,
-
23101
,
-
5332
,
-
23101
,
23101
,
23101
,
-
23101
,
23101
,
23101
,
-
23101
,
-
23101
,
-
23101
,
12439
,
8886
,
-
12439
,
8886
,
12439
,
-
8886
,
-
12439
,
-
8886
,
15993
,
8886
,
-
15993
,
8886
,
15993
,
-
8886
,
-
15993
,
-
8886
,
12439
,
19547
,
-
12439
,
19547
,
12439
,
-
19547
,
-
12439
,
-
19547
,
15993
,
19547
,
-
15993
,
19547
,
15993
,
-
19547
,
-
15993
,
-
19547
,
1778
,
8886
,
-
1778
,
8886
,
1778
,
-
8886
,
-
1778
,
-
8886
,
26655
,
8886
,
-
26655
,
8886
,
26655
,
-
8886
,
-
26655
,
-
8886
,
1778
,
19547
,
-
1778
,
19547
,
1778
,
-
19547
,
-
1778
,
-
19547
,
26655
,
19547
,
-
26655
,
19547
,
26655
,
-
19547
,
-
26655
,
-
19547
,
12439
,
5332
,
-
12439
,
5332
,
12439
,
-
5332
,
-
12439
,
-
5332
,
15993
,
5332
,
-
15993
,
5332
,
15993
,
-
5332
,
-
15993
,
-
5332
,
12439
,
23101
,
-
12439
,
23101
,
12439
,
-
23101
,
-
12439
,
-
23101
,
15993
,
23101
,
-
15993
,
23101
,
15993
,
-
23101
,
-
15993
,
-
23101
,
1778
,
5332
,
-
1778
,
5332
,
1778
,
-
5332
,
-
1778
,
-
5332
,
26655
,
5332
,
-
26655
,
5332
,
26655
,
-
5332
,
-
26655
,
-
5332
,
1778
,
23101
,
-
1778
,
23101
,
1778
,
-
23101
,
-
1778
,
-
23101
,
26655
,
23101
,
-
26655
,
23101
,
26655
,
-
23101
,
-
26655
,
-
23101
,
8886
,
12439
,
-
8886
,
12439
,
8886
,
-
12439
,
-
8886
,
-
12439
,
19547
,
12439
,
-
19547
,
12439
,
19547
,
-
12439
,
-
19547
,
-
12439
,
8886
,
15993
,
-
8886
,
15993
,
8886
,
-
15993
,
-
8886
,
-
15993
,
19547
,
15993
,
-
19547
,
15993
,
19547
,
-
15993
,
-
19547
,
-
15993
,
5332
,
12439
,
-
5332
,
12439
,
5332
,
-
12439
,
-
5332
,
-
12439
,
23101
,
12439
,
-
23101
,
12439
,
23101
,
-
12439
,
-
23101
,
-
12439
,
5332
,
15993
,
-
5332
,
15993
,
5332
,
-
15993
,
-
5332
,
-
15993
,
23101
,
15993
,
-
23101
,
15993
,
23101
,
-
15993
,
-
23101
,
-
15993
,
8886
,
1778
,
-
8886
,
1778
,
8886
,
-
1778
,
-
8886
,
-
1778
,
19547
,
1778
,
-
19547
,
1778
,
19547
,
-
1778
,
-
19547
,
-
1778
,
8886
,
26655
,
-
8886
,
26655
,
8886
,
-
26655
,
-
8886
,
-
26655
,
19547
,
26655
,
-
19547
,
26655
,
19547
,
-
26655
,
-
19547
,
-
26655
,
5332
,
1778
,
-
5332
,
1778
,
5332
,
-
1778
,
-
5332
,
-
1778
,
23101
,
1778
,
-
23101
,
1778
,
23101
,
-
1778
,
-
23101
,
-
1778
,
5332
,
26655
,
-
5332
,
26655
,
5332
,
-
26655
,
-
5332
,
-
26655
,
23101
,
26655
,
-
23101
,
26655
,
23101
,
-
26655
,
-
23101
,
-
26655
,
12439
,
12439
,
-
12439
,
12439
,
12439
,
-
12439
,
-
12439
,
-
12439
,
15993
,
12439
,
-
15993
,
12439
,
15993
,
-
12439
,
-
15993
,
-
12439
,
12439
,
15993
,
-
12439
,
15993
,
12439
,
-
15993
,
-
12439
,
-
15993
,
15993
,
15993
,
-
15993
,
15993
,
15993
,
-
15993
,
-
15993
,
-
15993
,
1778
,
12439
,
-
1778
,
12439
,
1778
,
-
12439
,
-
1778
,
-
12439
,
26655
,
12439
,
-
26655
,
12439
,
26655
,
-
12439
,
-
26655
,
-
12439
,
1778
,
15993
,
-
1778
,
15993
,
1778
,
-
15993
,
-
1778
,
-
15993
,
26655
,
15993
,
-
26655
,
15993
,
26655
,
-
15993
,
-
26655
,
-
15993
,
12439
,
1778
,
-
12439
,
1778
,
12439
,
-
1778
,
-
12439
,
-
1778
,
15993
,
1778
,
-
15993
,
1778
,
15993
,
-
1778
,
-
15993
,
-
1778
,
12439
,
26655
,
-
12439
,
26655
,
12439
,
-
26655
,
-
12439
,
-
26655
,
15993
,
26655
,
-
15993
,
26655
,
15993
,
-
26655
,
-
15993
,
-
26655
,
1778
,
1778
,
-
1778
,
1778
,
1778
,
-
1778
,
-
1778
,
-
1778
,
26655
,
1778
,
-
26655
,
1778
,
26655
,
-
1778
,
-
26655
,
-
1778
,
1778
,
26655
,
-
1778
,
26655
,
1778
,
-
26655
,
-
1778
,
-
26655
,
26655
,
26655
,
-
26655
,
26655
,
26655
,
-
26655
,
-
26655
,
-
26655
};
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment