diff --git a/compiler/lib/Support/KeySet.cpp b/compiler/lib/Support/KeySet.cpp index f44b34181..dee58f6f0 100644 --- a/compiler/lib/Support/KeySet.cpp +++ b/compiler/lib/Support/KeySet.cpp @@ -267,8 +267,10 @@ llvm::Error KeySet::decrypt_lwe(size_t argPos, LweCiphertext_u64 *ciphertext, decrypt_lwe_u64(&err, std::get<2>(outputSk), ciphertext, &plaintext), "cannot decrypt"); // Decode - output = plaintext._0 >> - (64 - (std::get<0>(outputSk).encryption->encoding.precision + 1)); + double divisor = std::pow( + 2, 64 - (std::get<0>(outputSk).encryption->encoding.precision + 1)); + output = std::round(((double)plaintext._0) / divisor); + output %= (1 << (std::get<0>(outputSk).encryption->encoding.precision + 1)); return llvm::Error::success(); } diff --git a/compiler/lib/Support/V0Parameters.cpp b/compiler/lib/Support/V0Parameters.cpp index d77ae3cca..50b3a1e13 100644 --- a/compiler/lib/Support/V0Parameters.cpp +++ b/compiler/lib/Support/V0Parameters.cpp @@ -9,109 +9,133 @@ namespace mlir { namespace zamalang { using namespace std; -const int NORM2_MAX = 25; +const int NORM2_MAX = 31; const int P_MAX = 7; V0Parameter parameters[NORM2_MAX][P_MAX] = { - {V0Parameter(1, 10, 481, 2, 8, 4, 2), V0Parameter(1, 10, 483, 2, 8, 4, 2), - V0Parameter(1, 10, 491, 2, 8, 4, 2), V0Parameter(1, 10, 484, 3, 6, 4, 2), - V0Parameter(1, 10, 497, 3, 6, 4, 2), V0Parameter(1, 11, 506, 1, 24, 4, 2), - V0Parameter(1, 11, 506, 1, 24, 4, 2)}, - {V0Parameter(1, 11, 506, 1, 23, 4, 2), V0Parameter(1, 11, 508, 1, 23, 4, 2), - V0Parameter(1, 11, 533, 1, 23, 3, 3), V0Parameter(1, 11, 506, 2, 13, 4, 2), - V0Parameter(1, 11, 506, 2, 15, 4, 2), V0Parameter(1, 11, 506, 2, 17, 4, 2), - V0Parameter(1, 11, 506, 2, 15, 4, 2)}, - {V0Parameter(1, 11, 506, 2, 15, 4, 2), V0Parameter(1, 11, 508, 2, 15, 4, 2), - V0Parameter(1, 11, 513, 2, 15, 4, 2), V0Parameter(1, 11, 530, 2, 15, 5, 2), - V0Parameter(1, 11, 507, 3, 12, 4, 2), V0Parameter(1, 11, 511, 3, 11, 4, 2), - V0Parameter(1, 11, 517, 3, 12, 5, 2)}, - {V0Parameter(1, 11, 508, 4, 9, 4, 2), V0Parameter(1, 11, 509, 4, 9, 5, 2), - V0Parameter(1, 11, 507, 5, 8, 5, 2), V0Parameter(1, 11, 541, 5, 8, 5, 2), - V0Parameter(1, 10, 549, 2, 8, 3, 3), V0Parameter(1, 10, 530, 2, 8, 5, 2), - V0Parameter(1, 10, 524, 3, 6, 5, 2)}, - {V0Parameter(1, 10, 536, 3, 6, 5, 2), V0Parameter(1, 11, 571, 1, 22, 3, 3), - V0Parameter(1, 11, 572, 1, 22, 3, 3), V0Parameter(1, 11, 572, 1, 22, 3, 3), - V0Parameter(1, 11, 574, 1, 23, 3, 3), V0Parameter(1, 11, 585, 1, 23, 3, 3), - V0Parameter(1, 11, 541, 2, 14, 5, 2)}, - {V0Parameter(1, 11, 541, 2, 14, 5, 2), V0Parameter(1, 11, 541, 2, 17, 5, 2), - V0Parameter(1, 11, 541, 2, 15, 5, 2), V0Parameter(1, 11, 541, 2, 15, 5, 2), - V0Parameter(1, 11, 542, 2, 15, 5, 2), V0Parameter(1, 11, 547, 2, 15, 5, 2), - V0Parameter(1, 11, 580, 2, 15, 5, 2)}, - {V0Parameter(1, 11, 542, 3, 11, 5, 2), V0Parameter(1, 11, 545, 3, 12, 5, 2), - V0Parameter(1, 11, 561, 3, 12, 5, 2), V0Parameter(1, 11, 543, 4, 9, 5, 2), - V0Parameter(1, 11, 549, 4, 9, 5, 2), V0Parameter(1, 11, 547, 5, 8, 5, 2), - V0Parameter(1, 11, 591, 5, 8, 6, 2)}, - {V0Parameter(1, 11, 550, 7, 6, 5, 2), V0Parameter(1, 10, 576, 2, 8, 5, 2), - V0Parameter(1, 10, 567, 3, 6, 5, 2), V0Parameter(1, 10, 584, 3, 6, 5, 2), - V0Parameter(1, 11, 607, 1, 20, 4, 3), V0Parameter(1, 11, 607, 1, 22, 4, 3), - V0Parameter(1, 11, 607, 1, 22, 4, 3)}, - {V0Parameter(1, 11, 609, 1, 23, 4, 3), V0Parameter(1, 11, 616, 1, 23, 4, 3), - V0Parameter(1, 11, 588, 2, 13, 5, 2), V0Parameter(1, 11, 588, 2, 17, 5, 2), - V0Parameter(1, 11, 588, 2, 14, 5, 2), V0Parameter(1, 11, 588, 2, 16, 5, 2), - V0Parameter(1, 11, 588, 2, 15, 5, 2)}, - {V0Parameter(1, 11, 590, 2, 15, 5, 2), V0Parameter(1, 11, 596, 2, 15, 5, 2), - V0Parameter(1, 11, 622, 2, 15, 6, 2), V0Parameter(1, 11, 589, 3, 11, 5, 2), - V0Parameter(1, 11, 594, 3, 12, 5, 2), V0Parameter(1, 11, 602, 3, 12, 6, 2), - V0Parameter(1, 11, 591, 4, 9, 5, 2)}, - {V0Parameter(1, 11, 591, 4, 9, 6, 2), V0Parameter(1, 11, 589, 5, 8, 6, 2), - V0Parameter(1, 11, 655, 5, 8, 6, 2), V0Parameter(1, 11, 592, 7, 6, 6, 2), - V0Parameter(1, 11, 598, 8, 5, 6, 2), V0Parameter(1, 10, 608, 3, 6, 6, 2), - V0Parameter(1, 10, 625, 3, 6, 6, 2)}, - {V0Parameter(1, 11, 647, 1, 24, 4, 3), V0Parameter(1, 11, 647, 1, 22, 4, 3), - V0Parameter(1, 11, 647, 1, 23, 4, 3), V0Parameter(1, 11, 649, 1, 23, 4, 3), - V0Parameter(1, 11, 658, 1, 23, 4, 3), V0Parameter(1, 11, 647, 2, 19, 4, 3), - V0Parameter(1, 11, 647, 2, 14, 4, 3)}, - {V0Parameter(1, 11, 647, 2, 17, 4, 3), V0Parameter(1, 11, 647, 2, 15, 4, 3), - V0Parameter(1, 11, 647, 2, 15, 4, 3), V0Parameter(1, 11, 648, 2, 15, 4, 3), - V0Parameter(1, 11, 654, 2, 15, 4, 3), V0Parameter(1, 11, 674, 2, 15, 7, 2), - V0Parameter(1, 11, 624, 3, 12, 6, 2)}, - {V0Parameter(1, 11, 627, 3, 11, 6, 2), V0Parameter(1, 11, 648, 3, 12, 6, 2), - V0Parameter(1, 11, 625, 4, 9, 6, 2), V0Parameter(1, 11, 633, 4, 9, 6, 2), - V0Parameter(1, 11, 630, 5, 8, 6, 2), V0Parameter(1, 11, 632, 6, 7, 6, 2), - V0Parameter(1, 11, 634, 7, 6, 6, 2)}, - {V0Parameter(1, 11, 642, 8, 5, 6, 2), V0Parameter(1, 11, 644, 11, 4, 6, 2), - V0Parameter(1, 11, 698, 1, 20, 4, 3), V0Parameter(1, 11, 698, 1, 21, 4, 3), - V0Parameter(1, 11, 698, 1, 22, 4, 3), V0Parameter(1, 11, 699, 1, 22, 4, 3), - V0Parameter(1, 11, 702, 1, 23, 4, 3)}, - {V0Parameter(1, 11, 721, 1, 23, 4, 3), V0Parameter(1, 11, 698, 2, 13, 4, 3), - V0Parameter(1, 11, 698, 2, 17, 4, 3), V0Parameter(1, 11, 698, 2, 14, 4, 3), - V0Parameter(1, 11, 698, 2, 16, 4, 3), V0Parameter(1, 11, 698, 2, 15, 4, 3), - V0Parameter(1, 11, 700, 2, 15, 4, 3)}, - {V0Parameter(1, 11, 711, 2, 15, 4, 3), V0Parameter(1, 11, 674, 3, 12, 6, 2), - V0Parameter(1, 11, 675, 3, 11, 6, 2), V0Parameter(1, 11, 681, 3, 12, 6, 2), - V0Parameter(1, 11, 695, 3, 12, 7, 2), V0Parameter(1, 11, 677, 4, 9, 6, 2), - V0Parameter(1, 11, 677, 4, 9, 7, 2)}, - {V0Parameter(1, 11, 674, 5, 8, 7, 2), V0Parameter(1, 11, 676, 6, 7, 7, 2), - V0Parameter(1, 11, 678, 7, 6, 7, 2), V0Parameter(1, 11, 688, 8, 5, 7, 2), - V0Parameter(1, 11, 690, 11, 4, 7, 2), - V0Parameter(1, 11, 731, 14, 3, 15, 1), - V0Parameter(1, 11, 745, 1, 21, 5, 3)}, - {V0Parameter(1, 11, 745, 1, 22, 5, 3), V0Parameter(1, 11, 746, 1, 23, 5, 3), - V0Parameter(1, 11, 750, 1, 23, 5, 3), V0Parameter(1, 11, 781, 1, 23, 5, 3), - V0Parameter(1, 11, 745, 2, 19, 5, 3), V0Parameter(1, 11, 745, 2, 14, 5, 3), - V0Parameter(1, 11, 745, 2, 17, 5, 3)}, - {V0Parameter(1, 11, 745, 2, 15, 5, 3), V0Parameter(1, 11, 746, 2, 15, 5, 3), - V0Parameter(1, 11, 748, 2, 15, 5, 3), V0Parameter(1, 11, 763, 2, 15, 5, 3), - V0Parameter(1, 11, 745, 3, 12, 5, 3), V0Parameter(1, 11, 747, 3, 11, 5, 3), - V0Parameter(1, 11, 756, 3, 11, 5, 3)}, - {V0Parameter(1, 11, 722, 4, 9, 7, 2), V0Parameter(1, 11, 727, 4, 9, 7, 2), - V0Parameter(1, 11, 750, 4, 9, 8, 2), V0Parameter(1, 11, 747, 5, 8, 7, 2), - V0Parameter(1, 11, 747, 6, 7, 8, 2), V0Parameter(1, 11, 757, 7, 6, 8, 2), - V0Parameter(1, 11, 739, 10, 4, 8, 2)}, - {V0Parameter(1, 11, 735, 14, 3, 8, 2), V0Parameter(1, 11, 767, 21, 2, 8, 2), - V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(1, 12, 839, 1, 22, 4, 4), - V0Parameter(1, 12, 844, 1, 23, 4, 4), V0Parameter(1, 12, 847, 1, 23, 6, 3), - V0Parameter(1, 12, 815, 2, 13, 5, 3)}, - {V0Parameter(1, 12, 815, 2, 17, 5, 3), V0Parameter(1, 12, 815, 2, 14, 5, 3), - V0Parameter(1, 12, 815, 2, 15, 5, 3), V0Parameter(1, 12, 816, 2, 15, 5, 3), - V0Parameter(1, 12, 820, 2, 15, 5, 3), V0Parameter(1, 12, 858, 2, 15, 4, 4), - V0Parameter(1, 12, 815, 3, 11, 5, 3)}, - {V0Parameter(1, 12, 818, 3, 11, 5, 3), V0Parameter(1, 12, 790, 3, 11, 8, 2), - V0Parameter(1, 12, 783, 4, 9, 8, 2), V0Parameter(1, 12, 787, 4, 9, 8, 2), - V0Parameter(1, 12, 823, 4, 9, 8, 2), V0Parameter(1, 12, 822, 5, 8, 8, 2), - V0Parameter(1, 12, 843, 6, 7, 9, 2)}, - {V0Parameter(1, 12, 792, 8, 5, 8, 2), V0Parameter(1, 12, 802, 10, 4, 8, 2), - V0Parameter(1, 12, 804, 14, 3, 8, 2), V0Parameter(1, 12, 825, 22, 2, 9, 2), + {V0Parameter(1, 10, 472, 2, 8, 4, 2), V0Parameter(1, 10, 514, 2, 8, 5, 2), + V0Parameter(1, 10, 564, 2, 8, 5, 2), V0Parameter(1, 10, 599, 3, 6, 6, 2), + V0Parameter(1, 10, 686, 3, 6, 7, 2), V0Parameter(1, 11, 736, 1, 23, 5, 3), + V0Parameter(1, 12, 830, 1, 23, 4, 4)}, + {V0Parameter(1, 10, 474, 2, 8, 4, 2), V0Parameter(1, 10, 519, 2, 8, 5, 2), + V0Parameter(1, 10, 558, 3, 6, 5, 2), V0Parameter(1, 10, 610, 3, 6, 6, 2), + V0Parameter(1, 11, 689, 1, 23, 4, 3), V0Parameter(1, 11, 736, 1, 23, 5, 3), + V0Parameter(1, 12, 831, 1, 23, 4, 4)}, + {V0Parameter(1, 10, 479, 2, 8, 4, 2), V0Parameter(1, 10, 515, 3, 6, 5, 2), + V0Parameter(1, 10, 569, 3, 6, 5, 2), V0Parameter(1, 11, 638, 1, 23, 4, 3), + V0Parameter(1, 11, 689, 1, 23, 4, 3), V0Parameter(1, 11, 737, 1, 23, 5, 3), + V0Parameter(1, 12, 840, 1, 23, 4, 4)}, + {V0Parameter(1, 10, 531, 2, 8, 5, 2), V0Parameter(1, 10, 523, 3, 6, 5, 2), + V0Parameter(1, 11, 598, 1, 23, 4, 3), V0Parameter(1, 11, 639, 1, 23, 4, 3), + V0Parameter(1, 11, 690, 1, 23, 4, 3), V0Parameter(1, 11, 739, 1, 23, 5, 3), + V0Parameter(1, 12, 806, 2, 16, 5, 3)}, + {V0Parameter(1, 10, 483, 3, 6, 4, 2), V0Parameter(1, 11, 563, 1, 23, 3, 3), + V0Parameter(1, 11, 598, 1, 23, 4, 3), V0Parameter(1, 11, 639, 1, 23, 4, 3), + V0Parameter(1, 11, 691, 1, 23, 4, 3), V0Parameter(1, 11, 748, 1, 23, 5, 3), + V0Parameter(1, 12, 806, 2, 15, 5, 3)}, + {V0Parameter(1, 11, 497, 1, 23, 4, 2), V0Parameter(1, 11, 563, 1, 23, 3, 3), + V0Parameter(1, 11, 598, 1, 23, 4, 3), V0Parameter(1, 11, 640, 1, 23, 4, 3), + V0Parameter(1, 11, 699, 1, 23, 4, 3), V0Parameter(1, 11, 736, 2, 15, 5, 3), + V0Parameter(1, 12, 806, 2, 15, 5, 3)}, + {V0Parameter(1, 11, 497, 1, 23, 4, 2), V0Parameter(1, 11, 563, 1, 23, 3, 3), + V0Parameter(1, 11, 599, 1, 23, 4, 3), V0Parameter(1, 11, 643, 1, 23, 4, 3), + V0Parameter(1, 11, 721, 1, 23, 5, 3), V0Parameter(1, 11, 736, 2, 15, 5, 3), + V0Parameter(1, 12, 806, 2, 15, 5, 3)}, + {V0Parameter(1, 11, 497, 1, 23, 4, 2), V0Parameter(1, 11, 564, 1, 23, 3, 3), + V0Parameter(1, 11, 602, 1, 23, 4, 3), V0Parameter(1, 11, 671, 1, 23, 4, 3), + V0Parameter(1, 11, 689, 2, 15, 4, 3), V0Parameter(1, 11, 736, 2, 15, 5, 3), + V0Parameter(1, 12, 807, 2, 15, 5, 3)}, + {V0Parameter(1, 11, 498, 1, 23, 4, 2), V0Parameter(1, 11, 569, 1, 23, 3, 3), + V0Parameter(1, 11, 622, 1, 23, 4, 3), V0Parameter(1, 11, 638, 2, 15, 4, 3), + V0Parameter(1, 11, 689, 2, 16, 4, 3), V0Parameter(1, 11, 736, 2, 16, 5, 3), + V0Parameter(1, 12, 809, 2, 15, 5, 3)}, + {V0Parameter(1, 11, 502, 1, 23, 4, 2), V0Parameter(1, 11, 555, 1, 23, 5, 2), + V0Parameter(1, 11, 579, 2, 15, 5, 2), V0Parameter(1, 11, 638, 2, 15, 4, 3), + V0Parameter(1, 11, 689, 2, 15, 4, 3), V0Parameter(1, 11, 737, 2, 15, 5, 3), + V0Parameter(1, 12, 818, 2, 15, 5, 3)}, + {V0Parameter(1, 11, 537, 1, 23, 3, 3), V0Parameter(1, 11, 532, 2, 15, 5, 2), + V0Parameter(1, 11, 579, 2, 15, 5, 2), V0Parameter(1, 11, 638, 2, 15, 4, 3), + V0Parameter(1, 11, 690, 2, 15, 4, 3), V0Parameter(1, 11, 738, 2, 15, 5, 3), + V0Parameter(1, 12, 832, 2, 15, 9, 2)}, + {V0Parameter(1, 11, 497, 2, 15, 4, 2), V0Parameter(1, 11, 532, 2, 15, 5, 2), + V0Parameter(1, 11, 579, 2, 15, 5, 2), V0Parameter(1, 11, 639, 2, 15, 4, 3), + V0Parameter(1, 11, 691, 2, 15, 4, 3), V0Parameter(1, 11, 743, 2, 16, 5, 3), + V0Parameter(1, 12, 807, 3, 12, 5, 3)}, + {V0Parameter(1, 11, 497, 2, 15, 4, 2), V0Parameter(1, 11, 532, 2, 15, 5, 2), + V0Parameter(1, 11, 579, 2, 16, 5, 2), V0Parameter(1, 11, 639, 2, 15, 4, 3), + V0Parameter(1, 11, 695, 2, 16, 4, 3), + V0Parameter(1, 11, 757, 2, 16, 16, 1), + V0Parameter(1, 12, 811, 3, 12, 5, 3)}, + {V0Parameter(1, 11, 497, 2, 16, 4, 2), V0Parameter(1, 11, 533, 2, 15, 5, 2), + V0Parameter(1, 11, 580, 2, 15, 5, 2), V0Parameter(1, 11, 641, 2, 16, 4, 3), + V0Parameter(1, 11, 699, 2, 16, 5, 3), V0Parameter(1, 11, 737, 3, 12, 5, 3), + V0Parameter(1, 12, 788, 3, 12, 8, 2)}, + {V0Parameter(1, 11, 497, 2, 16, 4, 2), V0Parameter(1, 11, 533, 2, 15, 5, 2), + V0Parameter(1, 11, 583, 2, 16, 5, 2), V0Parameter(1, 11, 653, 2, 16, 4, 3), + V0Parameter(1, 11, 665, 3, 12, 6, 2), V0Parameter(1, 11, 738, 3, 12, 5, 3), + V0Parameter(1, 12, 775, 4, 9, 8, 2)}, + {V0Parameter(1, 11, 498, 2, 15, 4, 2), V0Parameter(1, 11, 535, 2, 16, 5, 2), + V0Parameter(1, 11, 610, 2, 16, 4, 3), V0Parameter(1, 11, 614, 3, 12, 6, 2), + V0Parameter(1, 11, 666, 3, 12, 6, 2), V0Parameter(1, 11, 747, 3, 12, 5, 3), + V0Parameter(1, 12, 782, 4, 9, 8, 2)}, + {V0Parameter(1, 11, 500, 2, 16, 4, 2), V0Parameter(1, 11, 544, 2, 16, 5, 2), + V0Parameter(1, 11, 580, 3, 12, 5, 2), V0Parameter(1, 11, 615, 3, 12, 6, 2), + V0Parameter(1, 11, 661, 3, 12, 7, 2), V0Parameter(1, 11, 715, 4, 9, 7, 2), + V0Parameter(1, 12, 778, 5, 8, 8, 2)}, + {V0Parameter(1, 11, 513, 2, 16, 4, 2), V0Parameter(1, 11, 533, 3, 12, 5, 2), + V0Parameter(1, 11, 581, 3, 12, 5, 2), V0Parameter(1, 11, 618, 3, 12, 6, 2), + V0Parameter(1, 11, 687, 3, 12, 7, 2), V0Parameter(1, 11, 726, 4, 9, 7, 2), + V0Parameter(1, 12, 809, 5, 8, 8, 2)}, + {V0Parameter(1, 11, 497, 3, 12, 4, 2), V0Parameter(1, 11, 533, 3, 12, 5, 2), + V0Parameter(1, 11, 585, 3, 12, 5, 2), V0Parameter(1, 11, 639, 3, 12, 6, 2), + V0Parameter(1, 11, 662, 4, 9, 7, 2), V0Parameter(1, 11, 717, 5, 8, 7, 2), + V0Parameter(1, 12, 820, 6, 7, 9, 2)}, + {V0Parameter(1, 11, 498, 3, 12, 4, 2), V0Parameter(1, 11, 536, 3, 12, 5, 2), + V0Parameter(1, 11, 593, 3, 12, 6, 2), V0Parameter(1, 11, 619, 4, 9, 6, 2), + V0Parameter(1, 11, 693, 4, 9, 7, 2), V0Parameter(1, 11, 737, 5, 8, 7, 2), + V0Parameter(1, 12, 788, 8, 5, 8, 2)}, + {V0Parameter(1, 11, 502, 3, 12, 4, 2), V0Parameter(1, 11, 552, 3, 12, 5, 2), + V0Parameter(1, 11, 585, 4, 9, 5, 2), V0Parameter(1, 11, 644, 4, 9, 6, 2), + V0Parameter(1, 11, 665, 5, 8, 7, 2), V0Parameter(1, 11, 736, 6, 7, 8, 2), + V0Parameter(1, 12, 786, 11, 4, 8, 2)}, + {V0Parameter(1, 11, 508, 3, 12, 5, 2), V0Parameter(1, 11, 536, 4, 9, 5, 2), + V0Parameter(1, 11, 596, 4, 9, 6, 2), V0Parameter(1, 11, 621, 5, 8, 6, 2), + V0Parameter(1, 11, 667, 6, 7, 7, 2), V0Parameter(1, 11, 746, 7, 6, 8, 2), + V0Parameter(1, 12, 798, 14, 3, 9, 2)}, + {V0Parameter(1, 11, 502, 4, 9, 4, 2), V0Parameter(1, 11, 555, 4, 9, 5, 2), + V0Parameter(1, 11, 580, 5, 8, 6, 2), V0Parameter(1, 11, 623, 6, 7, 6, 2), + V0Parameter(1, 11, 669, 7, 6, 7, 2), V0Parameter(1, 11, 723, 11, 4, 7, 2), + V0Parameter(1, 12, 814, 22, 2, 9, 2)}, + {V0Parameter(1, 11, 510, 4, 9, 5, 2), V0Parameter(1, 11, 539, 5, 8, 5, 2), + V0Parameter(1, 11, 636, 5, 8, 6, 2), V0Parameter(1, 11, 625, 7, 6, 6, 2), + V0Parameter(1, 11, 674, 9, 5, 7, 2), V0Parameter(1, 11, 735, 14, 3, 8, 2), + V0Parameter(0, 0, 0, 0, 0, 0, 0)}, + {V0Parameter(1, 11, 498, 5, 8, 5, 2), V0Parameter(1, 11, 579, 5, 8, 6, 2), + V0Parameter(1, 11, 583, 7, 6, 6, 2), V0Parameter(1, 11, 661, 8, 5, 7, 2), + V0Parameter(1, 11, 681, 11, 4, 7, 2), V0Parameter(1, 11, 736, 22, 2, 8, 2), + V0Parameter(0, 0, 0, 0, 0, 0, 0)}, + {V0Parameter(1, 11, 530, 5, 8, 5, 2), V0Parameter(1, 11, 541, 7, 6, 5, 2), + V0Parameter(1, 11, 611, 8, 5, 6, 2), V0Parameter(1, 11, 635, 11, 4, 6, 2), + V0Parameter(1, 11, 704, 15, 3, 7, 2), V0Parameter(0, 0, 0, 0, 0, 0, 0), + V0Parameter(0, 0, 0, 0, 0, 0, 0)}, + {V0Parameter(1, 11, 565, 6, 7, 5, 2), V0Parameter(1, 11, 569, 8, 5, 5, 2), + V0Parameter(1, 11, 590, 11, 4, 6, 2), V0Parameter(1, 11, 647, 15, 3, 7, 2), + V0Parameter(1, 11, 679, 44, 1, 14, 1), V0Parameter(0, 0, 0, 0, 0, 0, 0), + V0Parameter(0, 0, 0, 0, 0, 0, 0)}, + {V0Parameter(1, 11, 520, 8, 5, 5, 2), V0Parameter(1, 11, 549, 11, 4, 5, 2), + V0Parameter(1, 11, 600, 15, 3, 6, 2), + V0Parameter(1, 11, 628, 44, 1, 13, 1), V0Parameter(0, 0, 0, 0, 0, 0, 0), + V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0)}, + {V0Parameter(1, 11, 506, 11, 4, 5, 2), V0Parameter(1, 11, 559, 15, 3, 5, 2), + V0Parameter(1, 11, 584, 44, 1, 12, 1), V0Parameter(0, 0, 0, 0, 0, 0, 0), + V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0), + V0Parameter(0, 0, 0, 0, 0, 0, 0)}, + {V0Parameter(1, 11, 503, 15, 3, 9, 1), + V0Parameter(1, 11, 594, 23, 2, 12, 1), V0Parameter(0, 0, 0, 0, 0, 0, 0), + V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0), + V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0)}, + {V0Parameter(1, 11, 545, 22, 2, 11, 1), V0Parameter(0, 0, 0, 0, 0, 0, 0), + V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0), V0Parameter(0, 0, 0, 0, 0, 0, 0)}}; diff --git a/compiler/tests/unittest/end_to_end_jit_test.cc b/compiler/tests/unittest/end_to_end_jit_test.cc index c8897e991..838aa923c 100644 --- a/compiler/tests/unittest/end_to_end_jit_test.cc +++ b/compiler/tests/unittest/end_to_end_jit_test.cc @@ -426,9 +426,5 @@ func @main(%arg0: !HLFHE.eint<7>) -> !HLFHE.eint<7> { auto maybeResult = engine.run({expected}); ASSERT_TRUE((bool)maybeResult); uint64_t result = maybeResult.get(); - auto rel_err = std::abs(result - expected) / 128; - // Using 7bits, which is currently harcoded, doesn't yield the exact result - // (parameters?) - // ASSERT_EQ(result, expected); - ASSERT_LE(rel_err, 0.1); + ASSERT_EQ(result, expected); } \ No newline at end of file