diff options
author | Jason Gross <jgross@mit.edu> | 2017-11-02 03:25:39 -0400 |
---|---|---|
committer | Jason Gross <jgross@mit.edu> | 2017-11-02 03:25:39 -0400 |
commit | 80e39fc2e71709b098c42ca88dd5bb8736fd9ab9 (patch) | |
tree | a7bc078a40e72bf60cac5f1333b69f16cbdbdd52 /generate_parameters.py | |
parent | ce66cff4fb2ce5ba8160b922767923a939c653d1 (diff) |
Also define modulus_array
Diffstat (limited to 'generate_parameters.py')
-rw-r--r-- | generate_parameters.py | 10 |
1 files changed, 8 insertions, 2 deletions
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] |