Révision 181 pobysoPythonSage/src/pobyso.py

pobyso.py (revision 181)
1158 1158
    #polySo = taylorFormListSaSo[0]
1159 1159
    #errorRangeSo = sollya_lib_copy_obj(taylorFormListSaSo[2])
1160 1160
    errorRangeSo = taylorFormListSaSo[2]
1161
    # No copy_obj needed here: a new object is created.
1162
    maxErrorSo = sollya_lib_sup(errorRangeSo)
1161
    # No copy_obj needed here: a new objects are created.
1162
    maxErrorSo    = sollya_lib_sup(errorRangeSo)
1163
    minErrorSo    = sollya_lib_inf(errorRangeSo)
1164
    absMaxErrorSo = sollya_lib_abs(maxErrorSo)
1165
    absMinErrorSo = sollya_lib_abs(minErrorSo)
1166
    sollya_lib_clear_obj(maxErrorSo)
1167
    sollya_lib_clear_obj(minErrorSo)
1168
    absMaxErrorSa = pobyso_get_constant_as_rn_so_sa(absMaxErrorSo)
1169
    absMinErrorSa = pobyso_get_constant_as_rn_so_sa(absMinErrorSo)
1163 1170
    # If changed, reset the Sollya working precision.
1164 1171
    if not sollyaPrecSo is None:
1165 1172
        sollya_lib_set_prec(initialPrecSo)
......
1167 1174
    if errorTypeIsNone:
1168 1175
        sollya_lib_clear_obj(errorTypeSo)
1169 1176
    pobyso_clear_taylorform_sa_so(taylorFormListSaSo)
1170
    return((polySo, intervalCenterSo, maxErrorSo))
1177
    if absMaxErrorSa > absMinErrorSa:
1178
        sollya_lib_clear_obj(absMinErrorSo)
1179
        return((polySo, intervalCenterSo, absMaxErrorSo))
1180
    else:
1181
        sollya_lib_clear_obj(absMaxErrorSo)
1182
        return((polySo, intervalCenterSo, absMinErrorSo))
1171 1183
# end pobyso_taylor_expansion_no_change_var_so_so
1172 1184

  
1173 1185
def pobyso_taylor_expansion_with_change_var_so_so(functionSo, degreeSo, \
......
1200 1212
        pobyso_get_list_elements_so_so(taylorFormSo)
1201 1213
    polySo = taylorFormListSo[0]
1202 1214
    errorRangeSo = taylorFormListSo[2]
1203
    maxErrorSo = sollya_lib_sup(errorRangeSo)
1215
    maxErrorSo    = sollya_lib_sup(errorRangeSo)
1216
    minErrorSo    = sollya_lib_inf(errorRangeSo)
1217
    absMaxErrorSo = sollya_lib_abs(maxErrorSo)
1218
    absMinErrorSo = sollya_lib_abs(minErrorSo)
1219
    sollya_lib_clear_obj(maxErrorSo)
1220
    sollya_lib_clear_obj(minErrorSo)
1221
    absMaxErrorSa = pobyso_get_constant_as_rn_so_sa(absMaxErrorSo)
1222
    absMinErrorSa = pobyso_get_constant_as_rn_so_sa(absMinErrorSo)
1204 1223
    changeVarExpSo = sollya_lib_build_function_sub(\
1205 1224
                       sollya_lib_build_function_free_variable(),\
1206 1225
                       sollya_lib_copy_obj(intervalCenterSo))
1207
    polyVarChangedSo = sollya_lib_evaluate(polySo, changeVarExpSo) 
1226
    polyVarChangedSo = sollya_lib_evaluate(polySo, changeVarExpSo)
1227
    sollya_lib_clear_obj(polySo) 
1208 1228
    sollya_lib_clear_obj(changeVarExpSo)
1209 1229
    # If changed, reset the Sollya working precision.
1210 1230
    if not sollyaPrecSo is None:
......
1214 1234
        sollya_lib_clear_obj(errorTypeSo)
1215 1235
    sollya_lib_clear_obj(taylorFormSo)
1216 1236
    # Do not clear maxErrorSo.
1217
    return((polyVarChangedSo, intervalCenterSo, maxErrorSo))
1237
    if absMaxErrorSa > absMinErrorSa:
1238
        sollya_lib_clear_obj(absMinErrorSo)
1239
        return((polyVarChangedSo, intervalCenterSo, absMaxErrorSo))
1240
    else:
1241
        sollya_lib_clear_obj(absMaxErrorSo)
1242
        return((polyVarChangedSo, intervalCenterSo, absMinErrorSo))
1218 1243
# end pobyso_taylor_expansion_with_change_var_so_so
1219 1244

  
1220 1245
def pobyso_taylor(function, degree, point):

Formats disponibles : Unified diff