Перенос кода с Python на С++

3 000 руб. за проект
14 июля 2020, 15:12 • 9 откликов • 118 просмотров
Переписать код Python (Sagemath 8.8) на С++ с использованием библиотеки Givaro. Скрипт 30 строк, расчет конечных полей Галуа.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%time

from sage.crypto.sboxes import sboxes

from sage.crypto.boolean_function import BooleanFunction

from sage.crypto.sbox import SBox

from collections import Counter



p=3



Sg=[]

for n in [2..4]:

for k in [0..p^(n-1)]:

F = GF(p)

FF.<g> = GF(p^n)

FFlist = list(FF)

FFstar = [i for i in FF][1:]

R.<x> = FF[]

FF1=Set(FFlist).difference([g^0])

z=exp(2*pi*I/p)

zn=exp(2*pi*I/(p^n))

var('x,a,c')

def trace(x):

return sum(x^(p^s) for s in [0..n-1])

def f(x):

return x^(p^2+1)+g^k*x^(p+1)

S=[f(x) for x in FFlist]

for c in FF:

def C(x,a):

return f(x+a)-c*f(x)

def Zn(x,a):

return ZZ(C(x,a).integer_representation()).digits(p)

def cC(a):

return sum(zn^(ZZ(Zn(x,a),base=p)) for x in FF)

Su=[simplify(expand(cC(a))) for a in FFlist]

if set(flatten(simplify(Su)))=={0}:

print((n,k,c))


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Файлы