 |
My Project
debian-1:4.1.1-p2+ds-4
|
Base class for solving 0-dim poly systems using u-resultant.
More...
#include <mpr_base.h>
Base class for solving 0-dim poly systems using u-resultant.
Definition at line 61 of file mpr_base.h.
◆ resMatType
Enumerator |
---|
none | |
sparseResMat | |
denseResMat | |
Definition at line 64 of file mpr_base.h.
◆ uResultant() [1/2]
Definition at line 2686 of file mpr_base.cc.
2707 WerrorS(
"uResultant::uResultant: Unknown chosen resultant matrix type!");
◆ ~uResultant()
uResultant::~uResultant |
( |
| ) |
|
◆ uResultant() [2/2]
◆ accessResMat()
◆ extendIdeal()
Definition at line 2716 of file mpr_base.cc.
2718 ideal newGls=
idCopy( igls );
2721 (
IDELEMS(igls) + 1) *
sizeof(poly) );
2732 newGls->m[
i]= newGls->m[
i-1];
2734 newGls->m[0]= linPoly;
2738 WerrorS(
"uResultant::extendIdeal: Unknown chosen resultant matrix type!");
◆ interpolateDense()
poly uResultant::interpolateDense |
( |
const number |
subDetVal = NULL | ) |
|
Definition at line 2771 of file mpr_base.cc.
2781 long mdg=
over(
n-1, tdg );
2784 long l=(long)
pow( (
double)(tdg+1),
n );
2786 #ifdef mprDEBUG_PROT
2787 Print(
"// total deg of D: tdg %ld\n",tdg);
2788 Print(
"// maximum number of terms in D: mdg: %ld\n",mdg);
2789 Print(
"// maximum number of terms in polynom of deg tdg: l %ld\n",
l);
2794 presults= (number *)
omAlloc( mdg *
sizeof( number ) );
2795 for (
i=0;
i < mdg;
i++) presults[
i]=
nInit(0);
2797 number *pevpoint= (number *)
omAlloc(
n *
sizeof( number ) );
2798 number *pev= (number *)
omAlloc(
n *
sizeof( number ) );
2801 mprPROTnl(
"// initial evaluation point: ");
2804 for (
i=0;
i <
n;
i++)
2815 for (
i=0;
i < mdg;
i++ )
2817 for (
j=0;
j <
n;
j++)
2837 ncpoly= vm.interpolateDense( presults );
2840 if ( subDetVal !=
NULL )
2843 for (
i= 0;
i <= mdg;
i++ )
2845 detdiv=
nDiv( ncpoly[
i], subDetVal );
2854 for (
i=0;
i < mdg;
i++ )
2863 for (
i=0;
i < mdg;
i++ )
2882 for (
i=0;
i <
l;
i++ )
2906 for (
j= 0;
j <
n - 1;
j++ )
◆ interpolateDenseSP()
Definition at line 2923 of file mpr_base.cc.
2927 int loops= (matchUp?
n-2:
n-1);
2929 mprPROTnl(
"uResultant::interpolateDenseSP");
2937 presults= (number *)
omAlloc( (tdg + 1) *
sizeof( number ) );
2938 for (
i=0;
i <= tdg;
i++ ) presults[
i]=
nInit(0);
2944 number *pevpoint= (number *)
omAlloc(
n *
sizeof( number ) );
2947 number *pev= (number *)
omAlloc(
n *
sizeof( number ) );
2954 for ( uvar= 0; uvar < loops; uvar++ )
2959 for (
i=0;
i <
n;
i++)
2968 else if (
i <= uvar + 2 )
2980 for (
i=0;
i <
n;
i++)
2991 if (
i == (uvar + 1) ) pevpoint[
i]=
nInit(-1);
2992 else pevpoint[
i]=
nInit(0);
2999 for (
i=0;
i <
n;
i++)
3005 for (
i=0;
i <= tdg;
i++ )
3008 nPower(pevpoint[0],
i,&pev[0]);
3022 number *ncpoly= vm.interpolateDense( presults );
3024 if ( subDetVal !=
NULL )
3027 for (
i= 0;
i <= tdg;
i++ )
3029 detdiv=
nDiv( ncpoly[
i], subDetVal );
3038 for (
i=0;
i <= tdg;
i++ )
3056 omFreeSize( (
void *)presults, (tdg + 1) *
sizeof( number ) );
◆ linearPoly()
Definition at line 2744 of file mpr_base.cc.
2749 poly actlp, rootlp= newlp;
◆ nextPrime()
int uResultant::nextPrime |
( |
const int |
p | ) |
|
|
private |
◆ specializeInU()
Definition at line 3061 of file mpr_base.cc.
3066 int loops=(matchUp?
n-2:
n-1);
3068 if (loops==0) { loops=1;nn++;}
3078 number *pevpoint= (number *)
omAlloc( nn *
sizeof( number ) );
3079 for (
i=0;
i < nn;
i++) pevpoint[
i]=
nInit(0);
3084 for ( uvar= 0; uvar < loops; uvar++ )
3089 for (
i=0;
i <
n;
i++)
3093 if (
i <= uvar + 2 )
3098 else pevpoint[
i]=
nInit(0);
3104 for (
i=0;
i <
n;
i++)
3108 if (
i == (uvar + 1) ) pevpoint[
i]=
nInit(-1);
3109 else pevpoint[
i]=
nInit(0);
3116 number *ncpoly= (number *)
omAlloc( (tdg+1) *
sizeof(number) );
3123 for (
i= tdg;
i >= 0;
i-- )
3145 if ( subDetVal !=
NULL )
3148 for (
i= 0;
i <= tdg;
i++ )
3150 detdiv=
nDiv( ncpoly[
i], subDetVal );
3169 omFreeSize( (
void *)pevpoint,
n *
sizeof( number ) );
◆ gls
◆ resMat
◆ rmt
The documentation for this class was generated from the following files:
#define mprPROTNnl(msg, nval)
#define nPower(a, b, res)
virtual number getDetAt(const number *)
#define mprPROTN(msg, nval)
vandermonde system solver for interpolating polynomials from their values
#define mprPROTL(msg, intval)
ideal extendIdeal(const ideal gls, poly linPoly, const resMatType rmt)
#define mprSTICKYPROT(msg)
static long pTotaldegree(poly p)
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
void PrintS(const char *s)
#define omFreeSize(addr, size)
#define nPrint(a)
only for debug, over any initalized currRing
void fillContainer(number *_coeffs, number *_ievpoint, const int _var, const int _tdg, const rootType _rt, const int _anz)
#define pSetCoeff(p, n)
deletes old coeff before setting the new one
gmp_float exp(const gmp_float &a)
unsigned long over(const unsigned long n, const unsigned long d)
Rational pow(const Rational &a, int e)
void WerrorS(const char *s)
poly linearPoly(const resMatType rmt)
virtual poly getUDet(const number *)
complex root finder for univariate polynomials based on laguers algorithm
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
int nextPrime(const int p)
#define omReallocSize(addr, o_size, size)