From 80e39fc2e71709b098c42ca88dd5bb8736fd9ab9 Mon Sep 17 00:00:00 2001 From: Jason Gross Date: Thu, 2 Nov 2017 03:25:39 -0400 Subject: Also define modulus_array --- generate_parameters.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'generate_parameters.py') diff --git a/generate_parameters.py b/generate_parameters.py index 336b82507..82aab3ca2 100644 --- a/generate_parameters.py +++ b/generate_parameters.py @@ -66,7 +66,7 @@ EXAMPLES (handwritten): ''' -import math,json,sys,os,traceback,re +import math,json,sys,os,traceback,re,textwrap from fractions import Fraction # for montgomery @@ -137,10 +137,16 @@ def sanity_check(p): raise UnexpectedPrimeException("Parsed prime %s has unexpected format" %p) +def eval_numexpr(numexpr): + # copying from https://stackoverflow.com/a/25437733/377022 + numexpr = re.sub(r"\.(?![0-9])", "", numexpr) # purge any instance of '.' not followed by a number + return eval(numexpr, {'__builtins__':None}) + def get_extra_compiler_params(q, base): q_mpz = repr(re.sub(r'2(\s*)\^(\s*)([0-9]+)', r'(1_mpz\1<<\2\3)', str(q))) modulus_bytes_val = repr(str(base)) - return ' -Dq_mpz=%(q_mpz)s -Dmodulus_bytes_val=%(modulus_bytes_val)s' % locals() + modulus_array = '{%s}' % ','.join(textwrap.wrap(hex(eval_numexpr(q))[2:].strip('L'), 2)) + return ' -Dq_mpz=%(q_mpz)s -Dmodulus_bytes_val=%(modulus_bytes_val)s -Dmodulus_array=%(modulus_array)s' % locals() def num_bits(p): return p[0][1] -- cgit v1.2.3