Révision 117 pobysoPythonSage/src/testPobyso.sage

testPobyso.sage (revision 117)
13 13
#
14 14
import inspect
15 15
import resource
16
import timeit
16 17

  
17 18

  
18 19
def memory_usage_resource():
......
24 25
    return mem
25 26
# End memory_usage_resource()
26 27

  
28
def test_pobyso_wrapper(func, *args, **kwargs):
29
    def wrapped():
30
        return func(*args, **kwargs)
31
    return wrapped
32

  
27 33
#
28 34
def test_pobyso_absolute_so_so():
29 35
    for index in xrange(0,1000000):
......
38 44
    sollya_lib_clear_obj(absoluteSo)
39 45
# End test_pobyso_autoprint
40 46

  
41
def test_pobyso_bounds_to_range_sa_so(iterationsNum=10000):
42
    global t
43
    print "Running", inspect.stack()[0][3]
47
def test_pobyso_bounds_to_range_sa_so(repeat=1000, number=10):
48
    functionName =  inspect.stack()[0][3]
49
    print "Running", inspect.stack()[0][3], "..."
44 50
    lowerBoundSa = RR(1)
45 51
    upperBoundSa = RR(2)
46 52
    precSo = pobyso_get_prec_so()
47
    pobyso_autoprint(precSo)
48
    for index in xrange(0,iterationsNum):
53
    #pobyso_autoprint(precSo)
54
    #
55
    def test(lowerBoundSa, upperBoundSa):
49 56
        rangeSo = pobyso_bounds_to_range_sa_so(lowerBoundSa, upperBoundSa)
50 57
        sollya_lib_clear_obj(rangeSo)
58
    #
59
    wrapped = test_pobyso_wrapper(test,lowerBoundSa, upperBoundSa)
60
    timing = min(timeit.repeat(wrapped, repeat=repeat, number=number))
61
    #
51 62
    precSo = pobyso_get_prec_so()
52
    pobyso_autoprint(precSo)
63
    #pobyso_autoprint(precSo)
53 64
    sollya_lib_clear_obj(precSo)
65
    print "\t...", functionName, "done."
66
    return timing
54 67
# End test_pobyso_bounds_to_range_sa_so
55 68

  
69
def test_pobyso_get_list_elements_so_so(repeat = 1000, number=10):
70
    functionName = inspect.stack()[0][3]
71
    print "Running", functionName, "..."
72
    def test():
73
        listSo = pobyso_parse_string_sa_so("[|0,1,2,3,4,5,6|];")
74
        (listSaSo, elementsNumSa, isEndEllipticSa) = \
75
            pobyso_get_list_elements(listSo)
76
        for elementSo in listSaSo:
77
            sollya_lib_clear_obj(elementSo)
78
        # Notice that we use sollya_lib_clear_obj and not
79
        # sollya_lib_clear_object_list.
80
        sollya_lib_clear_obj(listSo, None)
81
    #
82
    wrapped = test_pobyso_wrapper(test)
83
    timing = min(timeit.repeat(wrapped, repeat=repeat, number=number))
84
    print "\t...", functionName, "done."
85
    return timing
86
# End test_pobyso_get_list_elements    
87

  
56 88
def test_pobyso_get_prec_so_sa(iterationsNum=10000):
57 89
    print "Running", inspect.stack()[0][3]
58 90
    for index in xrange(0,iterationsNum):
......
84 116
        sollya_lib_clear_obj(expressionSo)
85 117
# End pobyso_parse_string_sa_so
86 118

  
87
def test_pobyso_taylor_expansion_no_change_var_so_so(iterationsNum=10000):
119
def test_pobyso_taylor_expansion_no_change_var_so_so(repeat=1000, number=10):
120
    functionName = inspect.stack()[0][3]
121
    print "Running", functionName, "..."
88 122
    functionSo  = pobyso_parse_string('exp(x)')
89 123
    degreeSo    = pobyso_constant_from_int_sa_so(20)
90 124
    rangeSo     = pobyso_bounds_to_range_sa_so(RR(1),RR(2))
91 125
    errorTypeSo = pobyso_absolute_so_so()
92
    for index in xrange(0,iterationsNum):
126
    def test(functionSo, degreeSo, rangeSo, errorTypeSo):
93 127
        teSo = pobyso_taylor_expansion_no_change_var_so_so(functionSo,
94 128
                                                           degreeSo,
95 129
                                                           rangeSo,
......
97 131
        sollya_lib_clear_obj(teSo[0])
98 132
        sollya_lib_clear_obj(teSo[1])
99 133
        sollya_lib_clear_obj(teSo[2])
134
    # End test
135
    wrapped = test_pobyso_wrapper(test, 
136
                                  functionSo, 
137
                                  degreeSo, 
138
                                  rangeSo, 
139
                                  errorTypeSo)
140
    timing = min(timeit.repeat(wrapped, repeat=repeat, number=number))
100 141
    sollya_lib_clear_obj(functionSo)
101 142
    sollya_lib_clear_obj(degreeSo)
102 143
    sollya_lib_clear_obj(rangeSo)
103 144
    sollya_lib_clear_obj(errorTypeSo)
145
    print "\t...", functionName, "done."
146
    return timing
104 147
# End test_pobyso_taylor_expansion_no_change_var_so_so
105 148

  
149
def test_pobyso_taylor_form_so_so_2(repeat=1000, number=10):
150
    functionName = inspect.stack()[0][3]
151
    print "Running", functionName, "..."
152
    functionSo  = pobyso_parse_string('exp(x)')
153
    degreeSo    = pobyso_constant_from_int_sa_so(20)
154
    rangeSo     = pobyso_bounds_to_range_sa_so(RR(1),RR(2))
155
    intervalCenterSo = sollya_lib_mid(rangeSo, None)
156
    errorTypeSo = pobyso_absolute_so_so()
157
    
158
    def test(functionSo, degreeSo, intervalCenterSo, errorTypeSo):
159
        taylorformSo = pobyso_taylorform_so_so(functionSo, 
160
                                               degreeSo, 
161
                                               intervalCenterSo, 
162
                                               errorTypeSo)
163
        sollya_lib_clear_obj(taylorformSo)
164
    wrapped = test_pobyso_wrapper(test, 
165
                                  functionSo, 
166
                                  degreeSo, 
167
                                  intervalCenterSo, 
168
                                  errorTypeSo)
169
    timing = min(timeit.repeat(wrapped, repeat=repeat, number=number))
170
    sollya_lib_clear_obj(functionSo,None)
171
    sollya_lib_clear_obj(degreeSo,None)
172
    sollya_lib_clear_obj(rangeSo,None)
173
    sollya_lib_clear_obj(intervalCenterSo,None)
174
    sollya_lib_clear_obj(errorTypeSo,None)
175
    return timing
176
# End   test_pobyso_taylor_so_so_2
177
 
178
def test_pobyso_dummy_test(iterationsNum=1, executionsNum=1):
179
    aString = "2+3"
180
    def test():
181
        return 2+3
182
    wrapped = test_pobyso_wrapper(test)
183
    timing = timeit.timeit(wrapped, number=executionsNum)
184
    return timing
106 185
print "\t...testPobyso loaded"

Formats disponibles : Unified diff