def quaddobl_newton_power_series(pols, lser, idx=1, nbr=4, verbose=True): r""" Computes series in quad double precision for the polynomials in *pols*, where the leading terms are given in the list *lser*. On entry are the following five parameters: *pols*: a list of string representations of polynomials, *lser*: a list of polynomials in the series parameter (e.g.: t), for use as start terms in Newton's method, *idx*: index of the series parameter, by default equals 1, *nbr*: number of steps with Newton's method, *verbose*: whether to write intermediate output to screen or not. On return is a list of lists of strings. Each lists of strings represents the series solution for the variables in the list *pols*. """ from phcpy.solver import number_of_symbols from phcpy.interface import store_quaddobl_system, load_quaddobl_system from phcpy.phcpy2c3 import py2c_quaddobl_Newton_power_series as newton from phcpy.phcpy2c3 import py2c_syspool_quaddobl_init from phcpy.phcpy2c3 import py2c_syspool_quaddobl_create from phcpy.phcpy2c3 import py2c_syspool_quaddobl_size as poolsize from phcpy.phcpy2c3 import py2c_syspool_copy_to_quaddobl_container from phcpy.phcpy2c3 import py2c_syspool_quaddobl_clear nbsym = number_of_symbols(pols) if verbose: print("the polynomials :") for pol in pols: print(pol) print("Number of variables :", nbsym) store_quaddobl_system(lser, nbvar=1) py2c_syspool_quaddobl_init(1) py2c_syspool_quaddobl_create(1) store_quaddobl_system(pols, nbvar=nbsym) fail = newton(idx, nbr, int(verbose)) size = (-1 if fail else poolsize()) if verbose: if size == -1: print("An error occurred in the execution of Newton's method.") else: print("Computed one series solution.") py2c_syspool_copy_to_quaddobl_container(1) result = load_quaddobl_system() result = substitute_symbol(result, idx) py2c_syspool_quaddobl_clear() return result
def quaddobl_newton_power_series(pols, lser, idx=1, nbr=4, verbose=True): r""" Computes series in quad double precision for the polynomials in *pols*, where the leading terms are given in the list *lser*. On entry are the following five parameters: *pols*: a list of string representations of polynomials, *lser*: a list of polynomials in the series parameter (e.g.: t), for use as start terms in Newton's method, *idx*: index of the series parameter, by default equals 1, *nbr*: number of steps with Newton's method, *verbose*: whether to write intermediate output to screen or not. On return is a list of lists of strings. Each lists of strings represents the series solution for the variables in the list *pols*. """ from phcpy.solver import number_of_symbols from phcpy.interface import store_quaddobl_system, load_quaddobl_system from phcpy.phcpy2c3 import py2c_quaddobl_Newton_power_series as newton from phcpy.phcpy2c3 import py2c_syspool_quaddobl_init from phcpy.phcpy2c3 import py2c_syspool_quaddobl_create from phcpy.phcpy2c3 import py2c_syspool_quaddobl_size as poolsize from phcpy.phcpy2c3 import py2c_syspool_copy_to_quaddobl_container from phcpy.phcpy2c3 import py2c_syspool_quaddobl_clear nbsym = number_of_symbols(pols) if verbose: print("the polynomials :") for pol in pols: print(pol) print("Number of variables :", nbsym) store_quaddobl_system(lser, nbvar=1) py2c_syspool_quaddobl_init(1); py2c_syspool_quaddobl_create(1); store_quaddobl_system(pols, nbvar=nbsym) fail = newton(idx, nbr, int(verbose)) size = (-1 if fail else poolsize()) if verbose: if size == -1: print("An error occurred in the execution of Newton's method.") else: print("Computed one series solution.") py2c_syspool_copy_to_quaddobl_container(1) result = load_quaddobl_system() result = substitute_symbol(result, idx) py2c_syspool_quaddobl_clear() return result
def dobldobl_newton_series(pols, sols, idx=1, maxdeg=4, nbr=4, verbose=True): r""" Computes series in double double precision for the polynomials in *pols*, where the leading coefficients are the solutions in *sols*. On entry are the following five parameters: *pols*: a list of string representations of polynomials, *sols*: a list of solutions of the polynomials in pols, *idx*: index of the series parameter, by default equals 1, *maxdeg*: maximal degree of the series, *nbr*: number of steps with Newton's method, *verbose*: whether to write intermediate output to screen or not. On return is a list of lists of strings. Each lists of strings represents the series solution for the variables in the list *pols*. """ from phcpy.solver import number_of_symbols from phcpy.interface import store_dobldobl_solutions from phcpy.interface import store_dobldobl_system, load_dobldobl_system from phcpy.phcpy2c3 import py2c_dobldobl_Newton_series as newton from phcpy.phcpy2c3 import py2c_syspool_dobldobl_size as poolsize from phcpy.phcpy2c3 import py2c_syspool_copy_to_dobldobl_container nbsym = number_of_symbols(pols) if verbose: print("the polynomials :") for pol in pols: print(pol) print("Number of variables :", nbsym) store_dobldobl_system(pols, nbvar=nbsym) store_dobldobl_solutions(nbsym, sols) fail = newton(idx, maxdeg, nbr, int(verbose)) size = (-1 if fail else poolsize()) if verbose: if size == -1: print("An error occurred in the execution of Newton's method.") else: print("Computed %d series solutions." % size) result = [] for k in range(1, size+1): py2c_syspool_copy_to_dobldobl_container(k) sersol = load_dobldobl_system() result.append(substitute_symbol(sersol, idx)) return result
def dobldobl_newton_series(pols, sols, idx=1, nbr=4, verbose=True): r""" Computes series in double double precision for the polynomials in *pols*, where the leading coefficients are the solutions in *sols*. On entry are the following five parameters: *pols*: a list of string representations of polynomials, *sols*: a list of solutions of the polynomials in pols, *idx*: index of the series parameter, by default equals 1, *nbr*: number of steps with Newton's method, *verbose*: whether to write intermediate output to screen or not. On return is a list of lists of strings. Each lists of strings represents the series solution for the variables in the list *pols*. """ from phcpy.solver import number_of_symbols from phcpy.interface import store_dobldobl_solutions from phcpy.interface import store_dobldobl_system, load_dobldobl_system from phcpy.phcpy2c3 import py2c_dobldobl_Newton_series as newton from phcpy.phcpy2c3 import py2c_syspool_dobldobl_size as poolsize from phcpy.phcpy2c3 import py2c_syspool_copy_to_dobldobl_container nbsym = number_of_symbols(pols) if verbose: print("the polynomials :") for pol in pols: print(pol) print("Number of variables :", nbsym) store_dobldobl_system(pols, nbvar=nbsym) store_dobldobl_solutions(nbsym, sols) fail = newton(idx, nbr, int(verbose)) size = (-1 if fail else poolsize()) if verbose: if size == -1: print("An error occurred in the execution of Newton's method.") else: print("Computed %d series solutions." % size) result = [] for k in range(1, size+1): py2c_syspool_copy_to_dobldobl_container(k) sersol = load_dobldobl_system() result.append(substitute_symbol(sersol, idx)) return result
def dobldobl_newton_power_series(pols, lser, idx=1, maxdeg=4, nbr=4, \ checkin=True, verbose=True): r""" Computes series in double double precision for the polynomials in *pols*, where the leading terms are given in the list *lser*. On entry are the following five parameters: *pols*: a list of string representations of polynomials, *lser*: a list of polynomials in the series parameter (e.g.: t), for use as start terms in Newton's method, *idx*: index of the series parameter, by default equals 1, *maxdeg*: maximal degree of the series, *nbr*: number of steps with Newton's method, *checkin*: checks whether the number of symbols in pols matches the length of the list lser if idx == 0, or is one less than the length of the list lser if idx != 0. If the conditions are not satisfied, then an error message is printed and lser is returned. *verbose*: whether to write intermediate output to screen or not. On return is a list of lists of strings. Each lists of strings represents the series solution for the variables in the list *pols*. """ from phcpy.solver import number_of_symbols from phcpy.interface import store_dobldobl_system, load_dobldobl_system from phcpy.phcpy2c3 import py2c_dobldobl_Newton_power_series as newton from phcpy.phcpy2c3 import py2c_syspool_dobldobl_init from phcpy.phcpy2c3 import py2c_syspool_dobldobl_create from phcpy.phcpy2c3 import py2c_syspool_dobldobl_size as poolsize from phcpy.phcpy2c3 import py2c_syspool_copy_to_dobldobl_container from phcpy.phcpy2c3 import py2c_syspool_dobldobl_clear nbsym = number_of_symbols(pols) if verbose: print("the polynomials :") for pol in pols: print(pol) print("Number of variables :", nbsym) if checkin: if not checkin_newton_power_series(nbsym, lser, idx): return lser store_dobldobl_system(lser, nbvar=1) py2c_syspool_dobldobl_init(1); py2c_syspool_dobldobl_create(1); store_dobldobl_system(pols, nbvar=nbsym) fail = newton(idx, maxdeg, nbr, int(verbose)) size = (-1 if fail else poolsize()) if verbose: if size == -1: print("An error occurred in the execution of Newton's method.") else: print("Computed one series solution.") py2c_syspool_copy_to_dobldobl_container(1) result = load_dobldobl_system() result = substitute_symbol(result, idx) py2c_syspool_dobldobl_clear() return result