/projects/lattice-enumeration/
mathematicspythoncode_project
"""Test bases and shortest vectors for SVP algorithm"""

# Dimension 2:
b2 = [
	[-564, -355],
	[-653, 527]]
# Shortest vector:
x2 = [-564, -355]

# Dimension 4:
b4 = [
	[-300, -112, -419, -175],
	[ 495, -152, -608, -174],
	[ 226, -733,  135, -382],
	[-230, -876, -362, 1351]]

# Shortest vector:
x4 = [-300, -112, -419, -175]

# Dimension 6:
b6 = [
	[  57, -161,   32,  -47, -560, -394],
	[-336,  410, -120, -418, -237,  184],
	[ 447,  472, -290,  128, -135,  545],
	[  84 , 384, -342, -421,  595, -605],
	[ 299, -776, -436, -634,  686,   -8],
	[ 496,  -84, 1097, -598, -236,  304]]
# Shortest vector:
x6 = [57, -161, 32, -47, -560, -394]

# Dimension 8:
b8 = [
	[-442,    9, -212, -298,  241,  145, -218,  599],
	[-189, -557, -234, -127,  449, -459,   96, -291],
	[  -6,  855,  -57,  262,   12, -285,  271,  218],
	[ 148, -721, -397,  565, -455, -240,  139,  -98],
	[ 348, -351, -218, -278, -446, -880,  -11,  124],
	[ 138, -580,  720,   32,  158, -524, -469,  -40],
	[-578, -396, -147, -304, -512,  118,  567,  406],
	[ 530, -278,  138,  272,  139, -143,  585,  780]]

# Shortest vector:
x8 = [ 442, -9, 212, 298, -241, -145, 218, -599]

# Dimension 10:
b10 = [
	 [  -30, -277, -297,  269,  384,    20,  409, -328,   66, -232],
	 [   86,  313,  -25, -244,  451,   299, -289,   31,  163,  533],
	 [  496,  129, -203,  348, -248,  -354, -453, -415, -114,   93],
	 [   -8, -317, -431, -859, -494,  -217,  -50,  231, -105,    9],
	 [  196, -146,  233,  604,  -57,   -53,   42,  115,  839,  525],
	 [  185, -610, -244,   57,  200,  -329, -653,   37,  625, -347],
	 [  150, -516,  306, -326,   30, -1061, -418, -125,  316,  257],
	 [-1036, -185, -173, -213,  144,  -543, -143,  -52,  396, -179],
	 [  275,   89,  447, -666,  283,    -7,   50, -282,  632, -559],
	 [ -348, -430,  871, -235,   77,   570, -453, -337,  243,  -55]]
# Shortest vector:
x10 = [30,   277, 297, -269, -384, -20, -409, 328, -66, 232]
# Dimension 20:
b20 = [
	 [ 305,   87, -243,  432,  -11,  544,  546,   13,  394, -159, -101,    3,  214, -269,  267,  204, -422, -580,  -42,   93],
	 [  90,  591, -465, -620,  -20, -437, -286, -112, -125, -327,  421,  172, -101,   54,   36,   74,   54,  586, -200,  -20],
	 [-405,  436,  163,  -95, -492,  254,  438,  -63, -163, -118, -175, -293, -270,  -95, -378,  138,  168, -644, -132, -123],
	 [-633,  148,  135,    7,   30,   42,  426, -153,  -26,  242, -531, -456,  565,  161, -685, -270, -143, -168,    4,  -20],
	 [ 210, -415,   70,  109,  194,  166, -324, -399,   83,  240, -499, -388,  520,  512,  450, -483,  -42, -121,    9, -337],
	 [ 460,   34,  102,  340, -262,  649, -388,  195,  519,  192, -132,  127,  455,  358,  379,   77, -110, -270,  328, -244],
	 [ -58,   13, -283,  167, -182,  132,  -63,  512,  181,  -38, -239,  672,  223, -378, -144, -403, -117,  106,  185,  412],
	 [  46,   64, -141, -141,   -7, -313,  -79, -840, -218,  233,   21, -600, -166,   46, -263, -421,  -98,  597,  398, -377],
	 [-233, -429,  221,  551,  426,  384, -151, -244,  -91,  239,    9,  368,  162,  435,  660,  493,  280, -243,   65, -260],
	 [-336, -124, -283,    9, -688,  285,  176,  257,  276, -173, -461, -729,  396,   70,   -1,  -12, -607, -345, -139, -234],
	 [-189, -666, -292,  332,  330, -509,   38,   -3, -187,  432, -593,  -95,  228,  175,  -48, -279, -161,  211, -359, -715],
	 [ 515, -176,  253,  334,  145, -353,   77, -277,  337,  683,  119, -272, -266, -310,   98,  -53, -385,  295, -524,  -58],
	 [  30, -459,  102, -333, -209, -847,   96, -272, -339,  178,   48, -375, -260,  210,    3, -269,  123, -418,  465, -508],
	 [ 595, -163,  387,  161, -449,  612,   20,  130,  107,  234, -374, -303,   -6, -136,  129,  628,  123, -228, -274,  572],
	 [-236, -594,  227,  335,  -78,  211,  -93,  -12,  155,  178,  137,  357, -250,  390, -178, -101, -627,  509, -193, -281],
	 [  82, -207,   28, -251,   25,  251,  555, -129, -113,  504, -551,  -41, -429, -276,  291,  314, -187, -571,  185, -363],
	 [-342,  446,  199, -759,  -83, -216,  551,   83,  251,  -68,  280, -394,  103, -380,  399, -196,  258,  -87, -451, -350],
	 [ 302,  323,  361, -454, -144,  -24, -316,  289, -371, -323,  -45,  -82,  -77,  -44,  861, -134, -413,   53, -551,   84],
	 [-213,  -82,  194,  391, -159,   28,  117,  -70,  414,  113, -444, -489, -397,  404,  -41, -611,  301,  361,  -49,  253],
	 [ 210,  321, -165,  -38,   18,  -37, -282,  543, -397,  400,  924,  512,  164,  281, -258,  181, -119, -230, -167,  376]]
# Shortest vector:
x20 = [-58, 13, -283, 167, -182, 132, -63, 512, 181, -38, -239, 672, 223, -378, -144, -403, -117, 106, 185, 412]

from vector import Vector
test_bases = [map(Vector, b2), map(Vector, b4), map(Vector, b6), map(Vector, b8), map(Vector, b10), map(Vector, b20)]
test_sols  = [Vector(x2)     , Vector(x4),      Vector(x6),      Vector(x8),       Vector(x10),      Vector(x20)]