Révision 236
pobysoPythonSage/src/sageSLZ/runSLZ-113.sage (revision 236) | ||
---|---|---|
50 | 50 |
write = sys.stderr.write |
51 | 51 |
write("\nUsage:\n") |
52 | 52 |
write(" " + scriptName + " <degree> <alpha> <htrn> <intervalCenter>\n") |
53 |
write(" <intervalRadius> [debug]\n")
|
|
53 |
write(" <numberOfNumbers> [debug]\n")
|
|
54 | 54 |
write("\nArguments:\n") |
55 | 55 |
write(" degree the degree of the polynomial (integer)\n") |
56 | 56 |
write(" alpha alpha (integer)\n") |
57 | 57 |
write(" htrn hardness-to-round - a number of bits (integer)\n") |
58 | 58 |
write(" intervalCenter the interval center (a floating-point number)\n") |
59 |
write(" intervalRadius the interval radius (a rational or floating-point number)\n") |
|
59 |
write(" numberOfNumbers the number of floating-point numbers in the interval\n") |
|
60 |
write(" as a positive integral expression\n") |
|
60 | 61 |
write(" debug debug mode (\"debug\", in any case)\n\n") |
61 | 62 |
sys.exit(2) |
62 | 63 |
# End usage. |
... | ... | |
79 | 80 |
intervalCenter = RRR(sys.argv[index]) |
80 | 81 |
intervalCenter = RRR(intervalCenter) |
81 | 82 |
elif index == 5: |
82 |
try: |
|
83 |
intervalRadius = QQ(sage_eval(sys.argv[index])) |
|
84 |
except: |
|
85 |
intervalRadius = RRR(sys.argv[index]) |
|
86 |
intervalRadius = RRR(intervalRadius) |
|
83 |
## Can be read as rational number but must end up as an integer. |
|
84 |
numberOfNumbers = QQ(sage_eval(sys.argv[index])) |
|
85 |
if numberOfNumbers != numberOfNumbers.round(): |
|
86 |
raise Exception("Invalid number of numbers: " + sys.argv[index] + ".") |
|
87 |
numberOfNumbers = numberOfNumbers.round() |
|
88 |
## The number must be strictly positive. |
|
89 |
if numberOfNumbers <= 0: |
|
90 |
raise Exception("Invalid number of numbers: " + sys.argv[index] + ".") |
|
87 | 91 |
elif index == 6: |
88 | 92 |
debugMode = sys.argv[index].upper() |
89 | 93 |
debugMode = (debugMode == "DEBUG") |
... | ... | |
94 | 98 |
print "alpha :", alpha |
95 | 99 |
print "htrn :", htrn |
96 | 100 |
print "interval center:", intervalCenter.n(prec=10).str(truncate=False) |
97 |
print "interval radius:", intervalRadius.log2().n(prec=6).str(truncate=False)
|
|
101 |
print "num of nums :", RR(numberOfNumbers).log2().n(prec=10).str(truncate=False)
|
|
98 | 102 |
print "debug mode :", debugMode |
99 | 103 |
|
100 | 104 |
# |
101 | 105 |
## Set the terminal window title. |
102 | 106 |
terminalWindowTitle = ['stt', str(degree), str(alpha), str(htrn), |
103 | 107 |
intervalCenter.n(prec=10).str(truncate=False), |
104 |
intervalRadius.log2().n(prec=6).str(truncate=False)]
|
|
108 |
RRR(numberOfNumbers).log2().n(prec=10).str(truncate=False)]
|
|
105 | 109 |
call(terminalWindowTitle) |
106 | 110 |
# |
111 |
intervalCenterBinade = slz_compute_binade(intervalCenter) |
|
112 |
intervalRadius = \ |
|
113 |
2^intervalCenterBinade * 2^(-precision + 1) * numberOfNumbers / 2 |
|
107 | 114 |
srs_run_SLZ_v05(inputFunction=func, |
108 | 115 |
inputLowerBound = intervalCenter - intervalRadius, |
109 | 116 |
inputUpperBound = intervalCenter + intervalRadius, |
Formats disponibles : Unified diff