Пример #1
0
def scalar_vector_zz(a, b, q):
    n = len(a)
    res = 0
    for i in range(n):
        for coef_a, coef_b in zip(a[i], b[i]):
            res += signed_zq(coef_a, q) * signed_zq(coef_b, q)
    return res
Пример #2
0
def scalar_matrix_zz(A, B, q):
    m, n = A.dimensions()
    res = 0
    for i in range(m):
        for j in range(n):
            for coef_a, coef_b in zip(A[i][j], B[i][j]):
                res += signed_zq(coef_a, q) * signed_zq(coef_b, q)
    return res
Пример #3
0
def inf_norm(z, q):
    res = 0
    for coef in z:
        coef = signed_zq(coef, q)
        if abs(coef) > res:
            res = abs(coef)
    return res
Пример #4
0
def l2_norm_matr(Z, q):
    res = 0
    for row in Z:
        for val in row:
            for coef in val:
                res += signed_zq(coef, q)**2
    return sqrt(res)
Пример #5
0
def check_Z_len(PP, Z):
    norm = [0] * PP.amo_n
    for row in Z:
        for j, val in enumerate(row):
            for coef in val:
                norm[j] += signed_zq(coef, PP.q)**2

    for i in range(PP.amo_n):
        norm[i] = sqrt(norm[i])
        if norm[i] > PP.beta2:
            return 1
    return 0
Пример #6
0
def l2_norm_vect(Z, q):
    res = 0
    for val in Z:
        for coef in val:
            res += signed_zq(coef, q)**2
    return sqrt(res)
Пример #7
0
def l2_norm(x, get_q):
    res = 0
    for coef in x:
        res += signed_zq(coef, q)**2
    return sqrt(res)