Пример #1
0
def run_pieri_homotopies(mdim, pdim, qdeg, planes, *pts, **opt):
    r"""
    Computes the number of *pdim*-plane producing maps of degree q*deg*
    that meet *mdim*-planes at mdim*pdim + qdeq*(mdim+pdim) points.
    For *qdeg* = 0, there are no interpolation points in *pts*.
    The last parameter in opt contains the value for 'verbose',
    which is True by default.
    """
    from phcpy.phcpy2c2 import py2c_schubert_pieri_count
    from phcpy.phcpy2c2 import py2c_schubert_pieri_homotopies
    from phcpy.phcpy2c2 import py2c_syscon_load_standard_polynomial
    from phcpy.phcpy2c2 import py2c_solcon_number_of_standard_solutions
    from phcpy.phcpy2c2 import py2c_solcon_clear_standard_solutions
    from phcpy.phcpy2c2 import py2c_solcon_length_standard_solution_string
    from phcpy.phcpy2c2 import py2c_solcon_write_standard_solution_string
    if 'verbose' not in opt:
        verbose = True  # by default, the function is verbose
    else:
        verbose = opt['verbose']
    root_count = py2c_schubert_pieri_count(mdim, pdim, qdeg)
    if verbose:
        print 'Pieri root count for', (mdim, pdim, qdeg), 'is', root_count
    strplanes = planes_to_string(planes)
    # print 'length of input data :', len(strplanes)
    if (qdeg > 0):
        strpts = points_to_string(pts[0])
        # print 'the interpolation points :', strpts
    else:
        strpts = ''
    # print 'calling py2c_pieri_homotopies ...'
    py2c_solcon_clear_standard_solutions()
    if verbose:
        print 'passing %d characters for (m, p, q) = (%d, %d, %d)' \
            % (len(strplanes), mdim, pdim, qdeg)
    py2c_schubert_pieri_homotopies(mdim, pdim, qdeg, \
        len(strplanes), strplanes, strpts)
    # print 'making the system ...'
    pols = []
    if (qdeg == 0):
        for i in range(1, mdim * pdim + 1):
            pols.append(py2c_syscon_load_standard_polynomial(i))
    else:
        for i in range(1, mdim * pdim + qdeg * (mdim + pdim) + 1):
            pols.append(py2c_syscon_load_standard_polynomial(i))
    if verbose:
        print 'the system :'
        for poly in pols:
            print poly
        print 'root count :', root_count
    nbsols = py2c_solcon_number_of_standard_solutions()
    sols = []
    for k in range(1, nbsols + 1):
        lns = py2c_solcon_length_standard_solution_string(k)
        sol = py2c_solcon_write_standard_solution_string(k, lns)
        sols.append(sol)
    if verbose:
        print 'the solutions :'
        for solution in sols:
            print solution
    return (pols, sols)
Пример #2
0
def run_pieri_homotopies(mdim, pdim, qdeg, planes, *pts, **opt):
    r"""
    Computes the number of *pdim*-plane producing maps of degree q*deg*
    that meet *mdim*-planes at mdim*pdim + qdeq*(mdim+pdim) points.
    For *qdeg* = 0, there are no interpolation points in *pts*.
    The last parameter in opt contains the value for 'verbose',
    which is True by default.
    """
    from phcpy.phcpy2c2 import py2c_schubert_pieri_count
    from phcpy.phcpy2c2 import py2c_schubert_pieri_homotopies
    from phcpy.phcpy2c2 import py2c_syscon_load_standard_polynomial
    from phcpy.phcpy2c2 import py2c_solcon_number_of_standard_solutions
    from phcpy.phcpy2c2 import py2c_solcon_clear_standard_solutions
    from phcpy.phcpy2c2 import py2c_solcon_length_standard_solution_string
    from phcpy.phcpy2c2 import py2c_solcon_write_standard_solution_string
    if 'verbose' not in opt:
        verbose = True        # by default, the function is verbose
    else:
        verbose = opt['verbose']
    root_count = py2c_schubert_pieri_count(mdim, pdim, qdeg)
    if verbose:
        print 'Pieri root count for', (mdim, pdim, qdeg), 'is', root_count
    strplanes = planes_to_string(planes)
    # print 'length of input data :', len(strplanes)
    if(qdeg > 0):
        strpts = points_to_string(pts[0])
        # print 'the interpolation points :', strpts
    else:
        strpts = ''
    # print 'calling py2c_pieri_homotopies ...'
    py2c_solcon_clear_standard_solutions()
    if verbose:
        print 'passing %d characters for (m, p, q) = (%d, %d, %d)' \
            % (len(strplanes), mdim, pdim, qdeg)
    py2c_schubert_pieri_homotopies(mdim, pdim, qdeg, \
        len(strplanes), strplanes, strpts)
    # print 'making the system ...'
    pols = []
    if(qdeg == 0):
        for i in range(1, mdim*pdim+1):
            pols.append(py2c_syscon_load_standard_polynomial(i))
    else:
        for i in range(1, mdim*pdim+qdeg*(mdim+pdim)+1):
            pols.append(py2c_syscon_load_standard_polynomial(i))
    if verbose:
        print 'the system :'
        for poly in pols:
            print poly
        print 'root count :', root_count
    nbsols = py2c_solcon_number_of_standard_solutions()
    sols = []
    for k in range(1, nbsols+1):
        lns = py2c_solcon_length_standard_solution_string(k)
        sol = py2c_solcon_write_standard_solution_string(k, lns)
        sols.append(sol)
    if verbose:
        print 'the solutions :'
        for solution in sols:
            print solution
    return (pols, sols)
Пример #3
0
def run_pieri_homotopies(mdim, pdim, qdeg, planes, verbose=True, *pts):
    r"""
    Computes the number of *pdim*-plane producing maps of degree q*deg*
    that meet *mdim*-planes at mdim*pdim + qdeq*(mdim+pdim) points.
    For *qdeg* = 0, there are no interpolation points in *pts*.
    """
    from phcpy.phcpy2c2 import py2c_schubert_pieri_count
    from phcpy.phcpy2c2 import py2c_schubert_pieri_homotopies
    from phcpy.phcpy2c2 import py2c_syscon_load_standard_polynomial
    from phcpy.phcpy2c2 import py2c_solcon_number_of_standard_solutions
    from phcpy.phcpy2c2 import py2c_solcon_length_standard_solution_string
    from phcpy.phcpy2c2 import py2c_solcon_write_standard_solution_string

    root_count = py2c_schubert_pieri_count(mdim, pdim, qdeg)
    if verbose:
        print "Pieri root count for", (mdim, pdim, qdeg), "is", root_count
    strplanes = planes_to_string(planes)
    # print 'length of input data :', len(strplanes)
    if qdeg > 0:
        strpts = points_to_string(pts[0])
        # print 'the interpolation points :', strpts
    else:
        strpts = ""
    # print 'calling py2c_pieri_homotopies ...'
    if verbose:
        print "passing %d characters for (m, p, q) = (%d, %d, %d)" % (len(strplanes), mdim, pdim, qdeg)
    py2c_schubert_pieri_homotopies(mdim, pdim, qdeg, len(strplanes), strplanes, strpts)
    # print 'making the system ...'
    pols = []
    if qdeg == 0:
        for i in range(1, mdim * pdim + 1):
            pols.append(py2c_syscon_load_standard_polynomial(i))
    else:
        for i in range(1, mdim * pdim + qdeg * (mdim + pdim) + 1):
            pols.append(py2c_syscon_load_standard_polynomial(i))
    if verbose:
        print "the system :"
        for poly in pols:
            print poly
        print "root count :", root_count
    nbsols = py2c_solcon_number_of_standard_solutions()
    sols = []
    for k in range(1, nbsols + 1):
        lns = py2c_solcon_length_standard_solution_string(k)
        sol = py2c_solcon_write_standard_solution_string(k, lns)
        sols.append(sol)
    if verbose:
        print "the solutions :"
        for solution in sols:
            print solution
    return (pols, sols)
Пример #4
0
def run_pieri_homotopies(mdim, pdim, qdeg, planes, *pts):
    """
    Computes the number of pdim-plane producing maps of degree qdeg
    that meet mdim-planes at mdim*pdim + qdeq*(mdim+pdim) points.
    For qdeg = 0, there are no interpolation points.
    """
    from phcpy.phcpy2c2 import py2c_schubert_pieri_count
    from phcpy.phcpy2c2 import py2c_schubert_pieri_homotopies
    from phcpy.phcpy2c2 import py2c_syscon_load_standard_polynomial
    from phcpy.phcpy2c2 import py2c_solcon_number_of_standard_solutions
    from phcpy.phcpy2c2 import py2c_solcon_length_standard_solution_string
    from phcpy.phcpy2c2 import py2c_solcon_write_standard_solution_string
    root_count = py2c_schubert_pieri_count(mdim, pdim, qdeg)
    print 'Pieri root count for', (mdim, pdim, qdeg), 'is', root_count
    strplanes = planes_to_string(planes)
    # print 'length of input data :', len(strplanes)
    if(qdeg > 0):
        strpts = points_to_string(pts[0])
        # print 'the interpolation points :', strpts
    else:
        strpts = ''
    # print 'calling py2c_pieri_homotopies ...'
    print 'passing %d characters for (m, p, q) = (%d,%d,%d)' \
         % (len(strplanes), mdim, pdim, qdeg)
    py2c_schubert_pieri_homotopies(mdim, pdim, qdeg, \
        len(strplanes), strplanes, strpts)
    # print 'making the system ...'
    pols = []
    if(qdeg == 0):
        for i in range(1, mdim*pdim+1):
            pols.append(py2c_syscon_load_standard_polynomial(i))
    else:
        for i in range(1, mdim*pdim+qdeg*(mdim+pdim)+1):
            pols.append(py2c_syscon_load_standard_polynomial(i))
    print 'the system :'
    for poly in pols:
        print poly
    print 'root count :', root_count
    nbsols = py2c_solcon_number_of_standard_solutions()
    sols = []
    for k in range(1, nbsols+1):
        lns = py2c_solcon_length_standard_solution_string(k)
        sol = py2c_solcon_write_standard_solution_string(k, lns)
        sols.append(sol)
    print 'the solutions :'
    for solution in sols:
        print solution
    return (pols, sols)
Пример #5
0
def run_pieri_homotopies(mdim, pdim, qdeg, planes, *pts):
    """
    Computes the number of pdim-plane producing maps of degree qdeg
    that meet mdim-planes at mdim*pdim + qdeq*(mdim+pdim) points.
    For qdeg = 0, there are no interpolation points.
    """
    from phcpy.phcpy2c2 import py2c_schubert_pieri_count
    from phcpy.phcpy2c2 import py2c_schubert_pieri_homotopies
    from phcpy.phcpy2c2 import py2c_syscon_load_standard_polynomial
    from phcpy.phcpy2c2 import py2c_solcon_number_of_standard_solutions
    from phcpy.phcpy2c2 import py2c_solcon_length_standard_solution_string
    from phcpy.phcpy2c2 import py2c_solcon_write_standard_solution_string
    root_count = py2c_schubert_pieri_count(mdim, pdim, qdeg)
    print 'Pieri root count for', (mdim, pdim, qdeg), 'is', root_count
    strplanes = planes_to_string(planes)
    # print 'length of input data :', len(strplanes)
    if (qdeg > 0):
        strpts = points_to_string(pts[0])
        # print 'the interpolation points :', strpts
    else:
        strpts = ''
    # print 'calling py2c_pieri_homotopies ...'
    print 'passing %d characters for (m, p, q) = (%d,%d,%d)' \
         % (len(strplanes), mdim, pdim, qdeg)
    py2c_schubert_pieri_homotopies(mdim, pdim, qdeg, \
        len(strplanes), strplanes, strpts)
    # print 'making the system ...'
    pols = []
    if (qdeg == 0):
        for i in range(1, mdim * pdim + 1):
            pols.append(py2c_syscon_load_standard_polynomial(i))
    else:
        for i in range(1, mdim * pdim + qdeg * (mdim + pdim) + 1):
            pols.append(py2c_syscon_load_standard_polynomial(i))
    print 'the system :'
    for poly in pols:
        print poly
    print 'root count :', root_count
    nbsols = py2c_solcon_number_of_standard_solutions()
    sols = []
    for k in range(1, nbsols + 1):
        lns = py2c_solcon_length_standard_solution_string(k)
        sol = py2c_solcon_write_standard_solution_string(k, lns)
        sols.append(sol)
    print 'the solutions :'
    for solution in sols:
        print solution
    return (pols, sols)
Пример #6
0
def load_standard_system():
    """
    Returns the polynomials stored in the system container
    for standard double precision arithmetic.
    """
    from phcpy.phcpy2c2 import py2c_syscon_number_of_standard_polynomials
    from phcpy.phcpy2c2 import py2c_syscon_load_standard_polynomial
    dim = py2c_syscon_number_of_standard_polynomials()
    result = []
    for ind in range(1, dim + 1):
        result.append(py2c_syscon_load_standard_polynomial(ind))
    return result
Пример #7
0
def load_standard_system():
    """
    Returns the polynomials stored in the system container
    for standard double precision arithmetic.
    """
    from phcpy.phcpy2c2 import py2c_syscon_number_of_standard_polynomials
    from phcpy.phcpy2c2 import py2c_syscon_load_standard_polynomial
    dim = py2c_syscon_number_of_standard_polynomials()
    result = []
    for ind in range(1, dim+1):
        result.append(py2c_syscon_load_standard_polynomial(ind))
    return result
Пример #8
0
def make_pieri_system(mdim, pdim, qdeg, planes, is_real=False):
    r"""
    Makes the polynomial system defined by the *mdim*-planes
    in the list *planes*.
    """
    from phcpy.phcpy2c2 import py2c_schubert_pieri_system
    from phcpy.phcpy2c2 import py2c_syscon_load_standard_polynomial

    strplanes = planes_to_string(planes)
    # print 'the string of planes :', strplanes
    if is_real:
        py2c_schubert_pieri_system(mdim, pdim, qdeg, len(strplanes), strplanes, 1)
    else:
        py2c_schubert_pieri_system(mdim, pdim, qdeg, len(strplanes), strplanes, 0)
    result = []
    if qdeg == 0:
        for i in range(1, mdim * pdim + 1):
            result.append(py2c_syscon_load_standard_polynomial(i))
    return result
Пример #9
0
def make_pieri_system(mdim, pdim, qdeg, planes, is_real=False):
    """
    Makes the polynomial system defined by the mdim-planes
    in the list planes.
    """
    from phcpy.phcpy2c2 import py2c_schubert_pieri_system
    from phcpy.phcpy2c2 import py2c_syscon_load_standard_polynomial
    strplanes = planes_to_string(planes)
    # print 'the string of planes :', strplanes
    if is_real:
        py2c_schubert_pieri_system(mdim, pdim, qdeg, \
            len(strplanes), strplanes, 1)
    else:
        py2c_schubert_pieri_system(mdim, pdim, qdeg, \
            len(strplanes), strplanes, 0)
    result = []
    if (qdeg == 0):
        for i in range(1, mdim * pdim + 1):
            result.append(py2c_syscon_load_standard_polynomial(i))
    return result