root / pobysoPythonSage / src / sageSLZ / runSLZ-113gram.sage.py
Historique | Voir | Annoter | Télécharger (5,81 ko)
1 |
# This file was *autogenerated* from the file ./runSLZ-113gram.sage
|
---|---|
2 |
from sage.all_cmdline import * # import sage library |
3 |
_sage_const_3 = Integer(3); _sage_const_2 = Integer(2); _sage_const_1 = Integer(1); _sage_const_0 = Integer(0); _sage_const_6 = Integer(6); _sage_const_5 = Integer(5); _sage_const_4 = Integer(4); _sage_const_113 = Integer(113); _sage_const_10 = Integer(10); _sage_const_16383 = Integer(16383); _sage_const_16382 = Integer(16382)#! /opt/sage/sage |
4 |
# @file runSLZ-113.sage
|
5 |
#
|
6 |
# Run SLZ for p=113
|
7 |
#from scipy.constants.codata import precision
|
8 |
def initialize_env(): |
9 |
"""
|
10 |
Load all necessary modules.
|
11 |
"""
|
12 |
compiledSpyxDir = "/home/storres/recherche/arithmetique/pobysoPythonSage/compiledSpyx"
|
13 |
if compiledSpyxDir not in sys.path: |
14 |
sys.path.append(compiledSpyxDir) |
15 |
if not 'mpfi' in sage.misc.cython.standard_libs: |
16 |
sage.misc.cython.standard_libs.append('mpfi')
|
17 |
load("/home/storres/recherche/arithmetique/pobysoPythonSage/src/sollya_lib.sage")
|
18 |
# load("/home/storres/recherche/arithmetique/pobysoPythonSage/src/sageMpfr.spyx")
|
19 |
# load("/home/storres/recherche/arithmetique/pobysoPythonSage/src/sageGMP.spyx")
|
20 |
load("/home/storres/recherche/arithmetique/pobysoPythonSage/src/pobyso.py")
|
21 |
load("/home/storres/recherche/arithmetique/pobysoPythonSage/src/sageSLZ/sageSLZ.sage")
|
22 |
load("/home/storres/recherche/arithmetique/pobysoPythonSage/src/sageSLZ/sageNumericalOperations.sage")
|
23 |
load("/home/storres/recherche/arithmetique/pobysoPythonSage/src/sageSLZ/sageRationalOperations.sage")
|
24 |
# Matrix operations are loaded by polynomial operations.
|
25 |
load("/home/storres/recherche/arithmetique/pobysoPythonSage/src/sageSLZ/sagePolynomialOperations.sage")
|
26 |
load("/home/storres/recherche/arithmetique/pobysoPythonSage/src/sageSLZ/sageRunSLZ.sage")
|
27 |
|
28 |
|
29 |
print "Running SLZ..." |
30 |
initialize_env() |
31 |
from sageMpfr import * |
32 |
from sageGMP import * |
33 |
import sys |
34 |
from subprocess import call |
35 |
#
|
36 |
## Main variables and parameters.
|
37 |
x = var('x')
|
38 |
__tmp__=var("x"); func = symbolic_expression(exp(x)).function(x)
|
39 |
precision = _sage_const_113 |
40 |
emin = -_sage_const_16382 |
41 |
emax = _sage_const_16383 |
42 |
RRR = RealField(precision) |
43 |
degree = _sage_const_0 |
44 |
alpha = _sage_const_0 |
45 |
htrn = _sage_const_0 |
46 |
intervalCenter = _sage_const_0 |
47 |
intervalRadius = _sage_const_0 |
48 |
debugMode = False
|
49 |
## Local functions
|
50 |
#
|
51 |
def usage(): |
52 |
write = sys.stderr.write |
53 |
write("\nUsage:\n")
|
54 |
write(" " + scriptName + " <degree> <alpha> <htrn> <intervalCenter>\n") |
55 |
write(" <numberOfNumbers> [debug]\n")
|
56 |
write("\nArguments:\n")
|
57 |
write(" degree the degree of the polynomial (integer)\n")
|
58 |
write(" alpha alpha (integer)\n")
|
59 |
write(" htrn hardness-to-round - a number of bits (integer)\n")
|
60 |
write(" intervalCenter the interval center (a floating-point number)\n")
|
61 |
write(" numberOfNumbers the number of floating-point numbers in the interval\n")
|
62 |
write(" as a positive integral expression\n")
|
63 |
write(" debug debug mode (\"debug\", in any case)\n\n")
|
64 |
sys.exit(_sage_const_2 ) |
65 |
# End usage.
|
66 |
#
|
67 |
argsCount = len(sys.argv)
|
68 |
scriptName = os.path.basename(__file__) |
69 |
if argsCount < _sage_const_5 :
|
70 |
usage() |
71 |
for index in xrange(_sage_const_1 ,argsCount): |
72 |
if index == _sage_const_1 :
|
73 |
degree = int(sys.argv[index])
|
74 |
elif index == _sage_const_2 :
|
75 |
alpha = int(sys.argv[index])
|
76 |
elif index == _sage_const_3 :
|
77 |
htrn = int(eval(sys.argv[index])) |
78 |
elif index == _sage_const_4 :
|
79 |
try:
|
80 |
intervalCenter = QQ(sage_eval(sys.argv[index])) |
81 |
except:
|
82 |
intervalCenter = RRR(sys.argv[index]) |
83 |
intervalCenter = RRR(intervalCenter) |
84 |
elif index == _sage_const_5 :
|
85 |
## Can be read as rational number but must end up as an integer.
|
86 |
numberOfNumbers = QQ(sage_eval(sys.argv[index])) |
87 |
if numberOfNumbers != numberOfNumbers.round():
|
88 |
raise Exception("Invalid number of numbers: " + sys.argv[index] + ".") |
89 |
numberOfNumbers = numberOfNumbers.round() |
90 |
## The number must be strictly positive.
|
91 |
if numberOfNumbers <= _sage_const_0 :
|
92 |
raise Exception("Invalid number of numbers: " + sys.argv[index] + ".") |
93 |
elif index == _sage_const_6 :
|
94 |
debugMode = sys.argv[index].upper() |
95 |
debugMode = (debugMode == "DEBUG")
|
96 |
# Done with command line arguments collection.
|
97 |
#
|
98 |
## Debug printing
|
99 |
print "degree :", degree |
100 |
print "alpha :", alpha |
101 |
print "htrn :", htrn |
102 |
print "interval center:", intervalCenter.n(prec=_sage_const_10 ).str(truncate=False) |
103 |
print "num of nums :", RR(numberOfNumbers).log2().n(prec=_sage_const_10 ).str(truncate=False) |
104 |
print "debug mode :", debugMode |
105 |
print
|
106 |
#
|
107 |
## Set the terminal window title.
|
108 |
terminalWindowTitle = ['stt', str(degree), str(alpha), str(htrn), |
109 |
intervalCenter.n(prec=_sage_const_10 ).str(truncate=False),
|
110 |
RRR(numberOfNumbers).log2().n(prec=_sage_const_10 ).str(truncate=False)]
|
111 |
call(terminalWindowTitle) |
112 |
#
|
113 |
intervalCenterBinade = slz_compute_binade(intervalCenter) |
114 |
intervalRadius = \ |
115 |
_sage_const_2 **intervalCenterBinade * _sage_const_2 **(-precision + _sage_const_1 ) * numberOfNumbers / _sage_const_2 |
116 |
srs_run_SLZ_v05_gram(inputFunction=func, |
117 |
inputLowerBound = intervalCenter - intervalRadius, |
118 |
inputUpperBound = intervalCenter + intervalRadius, |
119 |
alpha = alpha, |
120 |
degree = degree, |
121 |
precision = precision, |
122 |
emin = emin, |
123 |
emax = emax, |
124 |
targetHardnessToRound = htrn, |
125 |
debug = debugMode) |
126 |
|