Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def Binary_Matrix_Rank_Test (data, data_len):
- M = Q = 3
- # Число матриц
- N = data_len / (M * Q)
- pm = [0.2888, 0.5776, 0.1284, 0.005, 0]
- matrix = []
- matrix_rank = []
- fm = []
- data = data >> (data_len % (M * Q))
- for i in range(N):
- array = []
- x = data % (2 ** (M * Q))
- data >>= (M * Q)
- data_len -= M * Q
- for j in range (M * Q):
- array.append(x % 2)
- x /= 2
- matrix.append(sympy.Matrix(M, Q, array))
- matrix_rank.append(matrix[i].rank())
- for i in range(M + 1):
- fm.append(0)
- for rank in matrix_rank:
- fm[rank] += 1
- p = 0.005
- for i in range(0, M + 1):
- if i == M:
- p = pm[0]
- elif i == M - 1:
- p = pm[1]
- elif i == M - 2:
- p = pm[2]
- elif i == M - 3:
- p = pm[3]
- fm[i] = float(((fm[i] - N * p) ** 2)) / (N * p)
- xi = 0
- xi = sum(fm)
- result = sympy.uppergamma(1, float(xi)/2)
- return result
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement