Révision 116

pobysoPythonSage/src/pobyso.py (revision 116)
742 742

  
743 743
def pobyso_lib_init():
744 744
    sollya_lib_init(None)
745

  
746
def pobyso_lib_close():
747
    sollya_lib_close(None)
745 748
    
746 749
def pobyso_name_free_variable(freeVariableNameSa):
747 750
    """ Legacy function. See pobyso_name_free_variable_sa_so. """
......
1027 1030
    taylorFormSo = sollya_lib_taylorform(functionSo, degreeSo, \
1028 1031
                                         intervalCenterSo, \
1029 1032
                                         rangeSo, errorTypeSo, None)
1030
    (taylorFormListSo, numElementsSo, isEndEllipticSo) = \
1033
    # taylorFormListSaSo is a Python list of Sollya objects references that 
1034
    # are copies of the elements of taylorFormSo.
1035
    # pobyso_get_list_elements_so_so clears taylorFormSo.
1036
    (taylorFormListSaSo, numElementsSa, isEndEllipticSa) = \
1031 1037
        pobyso_get_list_elements_so_so(taylorFormSo)
1032
    polySo = sollya_lib_copy_obj(taylorFormListSo[0])
1033
    errorRangeSo = taylorFormListSo[2]
1038
    polySo = sollya_lib_copy_obj(taylorFormListSaSo[0])
1039
    #errorRangeSo = sollya_lib_copy_obj(taylorFormListSaSo[2])
1040
    #polySo = taylorFormListSaSo[0]
1041
    errorRangeSo = taylorFormListSaSo[2]
1034 1042
    # No copy_obj needed here: a new object is created.
1035 1043
    maxErrorSo = sollya_lib_sup(errorRangeSo)
1036 1044
    # If changed, reset the Sollya working precision.
......
1039 1047
        sollya_lib_clear_obj(initialPrecSo)
1040 1048
    if errorTypeIsNone:
1041 1049
        sollya_lib_clear_obj(errorTypeSo)
1042
    sollya_lib_clear_obj(taylorFormSo)
1043
    for element in taylorFormListSo:
1050
    for element in taylorFormListSaSo:
1044 1051
        sollya_lib_clear_obj(element)
1045
    # Those are cleared with taylorFormSo.
1046
    #sollya_lib_clear_obj(numElementsSo)
1047
    #sollya_lib_clear_obj(isEndEllipticSo)
1048 1052
    return((polySo, intervalCenterSo, maxErrorSo))
1049 1053
# end pobyso_taylor_expansion_no_change_var_so_so
1050 1054

  
pobysoPythonSage/src/sollya_lib.sage (revision 116)
59 59
        sollya_lib_infnorm = sollya.sollya_lib_infnorm
60 60
        sollya_lib_init= sollya.sollya_lib_init
61 61
        sollya_lib_is_absolute = sollya.sollya_lib_is_absolute
62
        sollya_lib_is_empty_object_list = \
63
            sollya.sollya_lib_is_empty_object_list
62 64
        sollya_lib_is_off = sollya.sollya_lib_is_off
63 65
        sollya_lib_is_on = sollya.sollya_lib_is_on
64 66
        sollya_lib_mid = sollya.sollya_lib_mid
......
134 136
sollya_lib_get_constant_as_int(byref(a), retc)
135 137
print "Precision : ", a.value
136 138
print "Address of a.value ", addressof(a)
139
sollya_lib_close(None)
137 140
print "...Sollya library check done."
138 141
#
139 142
#
pobysoPythonSage/src/testPobyso.sage (revision 116)
1
"""
2
Test module for pobyso.py functions.
3

  
4
AUTHORS:
5
- S.T. (2014-02-26): initial version
6

  
7
TODO:
8
- everything!
9

  
10
"""
11

  
12
print "\ntestPobyso loading..."
13
#
14
import inspect
15
import resource
16

  
17

  
18
def memory_usage_resource():
19
    rusage_denom = RR("1024")
20
    if sys.platform == 'darwin':
21
        # ... it seems that in OSX the output is different units ...
22
        rusage_denom = rusage_denom * rusage_denom
23
    mem = resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / rusage_denom
24
    return mem
25
# End memory_usage_resource()
26

  
27
#
28
def test_pobyso_absolute_so_so():
29
    for index in xrange(0,1000000):
30
        absoluteSo = pobyso_absolute_so_so()
31
        sollya_lib_clear_obj(absoluteSo)
32
# End test_absolute_so_so
33

  
34
def test_pobyso_autoprint_so_so(iterationsNum=1000):
35
    absoluteSo = pobyso_absolute_so_so()
36
    for index in xrange(0,iterationsNum):
37
        pobyso_autoprint(absoluteSo)
38
    sollya_lib_clear_obj(absoluteSo)
39
# End test_pobyso_autoprint
40

  
41
def test_pobyso_bounds_to_range_sa_so(iterationsNum=10000):
42
    global t
43
    print "Running", inspect.stack()[0][3]
44
    lowerBoundSa = RR(1)
45
    upperBoundSa = RR(2)
46
    precSo = pobyso_get_prec_so()
47
    pobyso_autoprint(precSo)
48
    for index in xrange(0,iterationsNum):
49
        rangeSo = pobyso_bounds_to_range_sa_so(lowerBoundSa, upperBoundSa)
50
        sollya_lib_clear_obj(rangeSo)
51
    precSo = pobyso_get_prec_so()
52
    pobyso_autoprint(precSo)
53
    sollya_lib_clear_obj(precSo)
54
# End test_pobyso_bounds_to_range_sa_so
55

  
56
def test_pobyso_get_prec_so_sa(iterationsNum=10000):
57
    print "Running", inspect.stack()[0][3]
58
    for index in xrange(0,iterationsNum):
59
        precSa = pobyso_get_prec_so_sa()
60
# End test_pobyso_get_prec_so_sa  
61

  
62
def test_pobyso_get_prec_of_constant_so_sa(iterationsNum=10000):
63
    print "Running", inspect.stack()[0][3]
64
    constSo = pobyso_constant_from_int_sa_so(2)
65
    for index in xrange(0,iterationsNum):
66
        precSa = pobyso_get_prec_of_constant_so_sa(constSo)
67
    sollya_lib_clear_obj(constSo)
68
# End test_pobyso_get_prec_of_constant_so_sa
69

  
70
def test_pobyso_lib_init(iterationsNum=10000):
71
    """
72
    Must be called exactly once. Leaks lots of memory otherwise.
73
    """
74
    print "Running", inspect.stack()[0][3]
75
    for index in xrange(0,iterationsNum):
76
        pobyso_lib_init()
77
        #pobyso_lib_close()
78
# End test_pobyso_lib_init
79

  
80
def test_pobyso_parse_string_sa_so(iterationsNum=10000):
81
    print "Running", inspect.stack()[0][3]
82
    for index in xrange(0,iterationsNum):
83
        expressionSo = pobyso_parse_string_sa_so('exp(x)+2*x*sin(x)')
84
        sollya_lib_clear_obj(expressionSo)
85
# End pobyso_parse_string_sa_so
86

  
87
def test_pobyso_taylor_expansion_no_change_var_so_so(iterationsNum=10000):
88
    functionSo  = pobyso_parse_string('exp(x)')
89
    degreeSo    = pobyso_constant_from_int_sa_so(20)
90
    rangeSo     = pobyso_bounds_to_range_sa_so(RR(1),RR(2))
91
    errorTypeSo = pobyso_absolute_so_so()
92
    for index in xrange(0,iterationsNum):
93
        teSo = pobyso_taylor_expansion_no_change_var_so_so(functionSo,
94
                                                           degreeSo,
95
                                                           rangeSo,
96
                                                           errorTypeSo)
97
        sollya_lib_clear_obj(teSo[0])
98
        sollya_lib_clear_obj(teSo[1])
99
        sollya_lib_clear_obj(teSo[2])
100
    sollya_lib_clear_obj(functionSo)
101
    sollya_lib_clear_obj(degreeSo)
102
    sollya_lib_clear_obj(rangeSo)
103
    sollya_lib_clear_obj(errorTypeSo)
104
# End test_pobyso_taylor_expansion_no_change_var_so_so
105

  
106
print "\t...testPobyso loaded"

Formats disponibles : Unified diff