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