Skip to content

Commit

Permalink
document improved Lehman congruences
Browse files Browse the repository at this point in the history
  • Loading branch information
TilmanNeumann committed Mar 9, 2019
1 parent 9126d69 commit c2970fa
Showing 1 changed file with 120 additions and 0 deletions.
120 changes: 120 additions & 0 deletions doc/Lehman kN congruences.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
Congruences a==kN (mod 2^s)
(c) Tilman Neumann 2019-03-09
evaluating results of class Lehman_AnalyzeCongruences
--------------------------------------------------------------------

MOD=4:
(kN+1)%2==1 (k even):
number of diagonals = 2
distances = {2, 2}
adjust = (kN+1-a)%2
(kN+1)%2==0 (k odd):
number of diagonals = 1
distances = {4}
adjust = (kN+1-a)%4
avg. number of diagonals = 1.5
avg. number of diagonals / MOD = 0.375

MOD=8:
(kN+1)%2==1 (k even):
number of diagonals = 4
distances = {2, 2, ...}
adjust = (kN+1-a)%2
(kN+1)%4==0:
number of diagonals = 1
distances = {8}
adjust = (kN+1-a)%8
(kN+1)%4==2:
number of diagonals = 2
distances = {4, 4}
adjust = (kN+1-a)%4
avg. number of diagonals = 0.5*4 + 0.25*1 + 0.25*2 = 2.75
avg. number of diagonals / MOD = 0.34375

MOD=16:
(kN+1)%2==1 (k even):
number of diagonals = 8
distances = {2, 2, ...}
adjust = (kN+1-a)%2
(kN+1)%4==0:
number of diagonals = 2
distances = {8, 8}
adjust = (kN+1-a)%8
(kN+1)%4==2:
number of diagonals = 2
distances = {4, 12}
adjust = min[(kN+1-a)%16, (-kN-1-a)%16]
avg. number of diagonals = 0.5*8 + 0.25*2 + 0.25*2 = 5
avg. number of diagonals / MOD = 0.3125

MOD=32:
(kN+1)%2==1 (k even):
number of diagonals = 16
distances = {2, 2, ...}
adjust = (kN+1-a)%2
(kN+1)%4==0:
number of diagonals = 4
distances = {8, 8, ...}
adjust = (kN+1-a)%8
(kN+1)%8==6:
number of diagonals = 2
distances = {12, 20}, {4, 28}
adjust = min[(kN+1-a)%32, (-kN-1-a)%32]
(kN+1)%8==2:
number of diagonals = 4
distances = {12, 4, 12, 4}
adjust = min[(kN+1-a)%16, (-kN-1-a)%16]
avg. number of diagonals = 0.5*16 + 0.25*4 + 0.125*4 + 0.125*2 = 9.75
avg. number of diagonals / MOD = 0.3046875

MOD=64:
(kN+1)%2==1 (k even):
number of diagonals = 32
distances = {2, 2, ...}
adjust = (kN+1-a)%2
(kN+1)%4==0:
number of diagonals = 8
distances = {8, 8, ...}
adjust = (kN+1-a)%8
(kN+1)%8==6:
number of diagonals = 4
distances = {20, 12, 20, 12}, {4, 28, 4, 28}
adjust = min[(kN+1-a)%32, (-kN-1-a)%32]
(kN+1)%16==2:
number of diagonals = 4
distances = {16, 28, 16, 4}, {12, 4, 12, 36}
adjust = min[(kN+1-a)%64, (-kN-1-a)%64, (kN+17-a)%64, (-kN-17-a)%64]
(kN+1)%16==10:
number of diagonals = 4
distances = {4, 44, 4, 12}, {16, 12, 16, 20}
adjust = min[(kN+1-a)%64, (-kN-1-a)%64, (kN+49-a)%64, (-kN-49-a)%64]
avg. number of diagonals = 0.5*32 + 0.25*8 + 0.125*4 + 0.0625*4 + 0.0625*4 = 19
avg. number of diagonals / MOD = 0.296875

MOD=128:
(kN+1)%2==1 (k even):
number of diagonals = 64
distances = {2, 2, ...}
adjust = (kN+1-a)%2
(kN+1)%4==0:
number of diagonals = 16
distances = {8, 8, ...}
adjust = (kN+1-a)%8
(kN+1)%8==6:
number of diagonals = 8
distances = {20, 12, 20, 12, 20, 12, 20, 12}, {4, 28, 4, 28, 4, 28, 4, 28}
adjust = min[(kN+1-a)%32, (-kN-1-a)%32]
(kN+1)%16==2:
number of diagonals = 6
distances = {44, 16, 4, 16, 44, 4}, {16, 12, 36, 12, 16, 36}, {16, 4, 60, 4, 16, 28}, {36, 12, 4, 12, 36, 28}
adjust = min[(kN+1-a)%64, (-kN-1-a)%64, (kN+17-a)%64, (-kN-17-a)%64]
(kN+1)%16==10:
number of diagonals = 6
distances = {4, 48, 12, 48, 4, 12}, {16, 28, 20, 28, 16, 20}, {12, 4, 44, 4, 12, 52}, {20, 16, 12, 16, 20, 44}
adjust = min[(kN+1-a)%64, (-kN-1-a)%64, (kN+49-a)%64, (-kN-49-a)%64]
avg. number of diagonals = 0.5*64 + 0.25*16 + 0.125*8 + 0.0625*6 + 0.0625*6 = 37.75
avg. number of diagonals / MOD = 0.294921875

The adjusts are the same as for MOD=64! The only thing that changed is the resolution of the analysis.


0 comments on commit c2970fa

Please sign in to comment.