Exemplo n.º 1
0
def test_util_ntt():
    coeff_count_power = 10
    tables = util.NTTTables(
        coeff_count_power,
        sealapi.Modulus(util.get_prime(1 << coeff_count_power, 40)))
    assert tables.get_root() > 0
    assert tables.get_from_root_powers(1) > 0
    assert tables.get_from_scaled_root_powers(1) > 0
    assert tables.get_from_inv_root_powers(1) > 0
    assert tables.get_from_scaled_inv_root_powers(1) > 0
    assert tables.get_inv_degree_modulo() > 0
    assert tables.modulus() > 0
    assert tables.coeff_count_power() == coeff_count_power
    assert tables.coeff_count() == 1 << coeff_count_power

    tables = util.CreateNTTTables(
        coeff_count_power,
        [sealapi.Modulus(util.get_prime(1 << coeff_count_power, 40))])
    assert tables.get().coeff_count_power() == coeff_count_power

    data = [0] * ((1 << coeff_count_power) * 1)
    data[0] = 1
    assert util.ntt_negacyclic_harvey_lazy(data, tables.get()) != data
    assert util.ntt_negacyclic_harvey(data, tables.get()) != data
    assert util.inverse_ntt_negacyclic_harvey_lazy(data, tables.get()) != data
    assert util.inverse_ntt_negacyclic_harvey(data, tables.get()) != data
Exemplo n.º 2
0
def test_util_numth():
    assert util.naf(12) == [-4, 16]
    assert util.gcd(12, 18) == 6
    assert util.xgcd(12, 18) == (6, -1, 1)
    assert util.are_coprime(9, 8) is True
    assert util.are_coprime(9, 12) is False

    assert util.is_prime(sealapi.Modulus(666013), 10) is True

    assert len(util.get_primes(16, 20, 4)) == 4
    assert util.get_prime(2, 4).value() == 13
    assert util.is_primitive_root(16, 4, sealapi.Modulus(71)) == False
    out = 10
    assert util.try_minimal_primitive_root(4, sealapi.Modulus(71),
                                           out) == False