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
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
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
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)
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
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)
def l2_norm(x, get_q): res = 0 for coef in x: res += signed_zq(coef, q)**2 return sqrt(res)