Révision 236 pobysoPythonSage/src/sageSLZ/runSLZ-113.sage

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
print
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