def run_pieri_homotopies(mdim, pdim, qdeg, planes, *pts, **opt): r""" 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 in *pts*. """ from phcpy.phcpy2c3 import py2c_schubert_pieri_count from phcpy.phcpy2c3 import py2c_schubert_pieri_homotopies from phcpy.phcpy2c3 import py2c_syscon_load_standard_polynomial from phcpy.phcpy2c3 import py2c_solcon_clear_standard_solutions from phcpy.phcpy2c3 import py2c_solcon_number_of_standard_solutions from phcpy.phcpy2c3 import py2c_solcon_length_standard_solution_string from phcpy.phcpy2c3 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)
def load_standard_system(): """ Returns the polynomials stored in the system container for standard double precision arithmetic. """ from phcpy.phcpy2c3 import py2c_syscon_number_of_standard_polynomials from phcpy.phcpy2c3 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
def load_standard_system(): """ Returns the polynomials stored in the system container for standard double precision arithmetic. """ from phcpy.phcpy2c3 import py2c_syscon_number_of_standard_polynomials from phcpy.phcpy2c3 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
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.phcpy2c3 import py2c_schubert_pieri_system from phcpy.phcpy2c3 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
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.phcpy2c3 import py2c_schubert_pieri_system from phcpy.phcpy2c3 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