Révision 85 pobysoPythonSage/src/sageSLZ/sageSLZ.sage

sageSLZ.sage (revision 85)
49 49
        sollya_lib_clear_obj(polySo)
50 50
        currentRangeSo = pobyso_bounds_to_range_sa_so(currentLowerBoundSa, 
51 51
                                                      currentUpperBoundSa)
52
        #print "New interval:",
53
        #pobyso_autoprint(currentRangeSo)
52 54
        (polySo, intervalCenterSo, maxErrorSo) = \
53 55
            pobyso_taylor_expansion_no_change_var_so_so(functionSo, degreeSo, 
54 56
                                                        currentRangeSo, 
55 57
                                                        absoluteErrorTypeSo)
56 58
        #maxErrorSa = pobyso_get_constant_as_rn_with_rf_so_sa(maxErrorSo, RRR)
59
        #print "Max errorSo:",
60
        #pobyso_autoprint(maxErrorSo)
57 61
        maxErrorSa = pobyso_get_constant_as_rn_with_rf_so_sa(maxErrorSo)
62
        #print "Max errorSa:", maxErrorSa
63
        #print "Sollya prec:",
64
        #pobyso_autoprint(sollya_lib_get_prec(None))
58 65
    sollya_lib_clear_obj(absoluteErrorTypeSo)
59 66
    return((polySo, currentRangeSo, intervalCenterSo, maxErrorSo))
60 67
# End slz_compute_polynomial_and_interval
......
137 144
    - the center, x0, of the interval;
138 145
    - the corresponding approximation error.
139 146
    """
147
    currentSollyaPrecSo = pobyso_get_prec_so()
148
    currentSollyaPrecSa = pobyso_constant_from_int_so_sa(currentSollyaPrecSo)
149
    if internalSollyaPrecSa > currentSollyaPrecSa:
150
        pobyso_set_prec_sa_so(internalSollyaPrecSa)
140 151
    x = functionSa.variables()[0] # Actual variable name can be anything.
141 152
    (fff, scaledLowerBoundSa, scaledUpperBoundSa, \
142 153
            scaledLowerBoundImageSa, scaledUpperBoundImageSa) = \
......
221 232
                            boundsSa.endpoints()[1] + \
222 233
                            (boundsSa.endpoints()[1] - boundsSa.endpoints()[0]) \
223 234
                             * currentErrorRatio.log2() * 2
235
        # Test for insufficient precision.
236
        if currentScaledUpperBoundSa == scaledLowerBoundSa:
237
            print "Can't shrink the interval anymore!"
238
            print "You should consider increasing the Sollya internal precision"
239
            print "or the polynomial degree."
240
            print "Giving up!"
241
            sollya_lib_clear_obj(functionSo)
242
            sollya_lib_clear_obj(degreeSo)
243
            sollya_lib_clear_obj(scaledBoundsSo)
244
            return None
224 245
        if currentScaledUpperBoundSa > scaledUpperBoundSa:
225 246
            currentScaledUpperBoundSa = scaledUpperBoundSa
226 247
    sollya_lib_clear_obj(functionSo)
227 248
    sollya_lib_clear_obj(degreeSo)
228 249
    sollya_lib_clear_obj(scaledBoundsSo)
250
    if internalSollyaPrecSa > currentSollyaPrecSa:
251
        pobyso_set_prec_so_so(currentSollyaPrecSo)
229 252
    return(resultArray)
230 253
# End slz_get_intervals_and_polynomials
231 254

  

Formats disponibles : Unified diff