 |
My Project
debian-1:4.1.2-p1+ds-2
|
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 2684 of file mpr_base.cc.
2705 WerrorS(
"uResultant::uResultant: Unknown chosen resultant matrix type!");
◆ ~uResultant()
uResultant::~uResultant |
( |
| ) |
|
◆ uResultant() [2/2]
◆ accessResMat()
◆ extendIdeal()
Definition at line 2714 of file mpr_base.cc.
2716 ideal newGls=
idCopy( igls );
2719 (
IDELEMS(igls) + 1) *
sizeof(poly) );
2730 newGls->m[
i]= newGls->m[
i-1];
2732 newGls->m[0]= linPoly;
2736 WerrorS(
"uResultant::extendIdeal: Unknown chosen resultant matrix type!");
◆ interpolateDense()
poly uResultant::interpolateDense |
( |
const number |
subDetVal = NULL | ) |
|
Definition at line 2769 of file mpr_base.cc.
2779 long mdg=
over(
n-1, tdg );
2782 long l=(long)
pow( (
double)(tdg+1),
n );
2784 #ifdef mprDEBUG_PROT
2785 Print(
"// total deg of D: tdg %ld\n",tdg);
2786 Print(
"// maximum number of terms in D: mdg: %ld\n",mdg);
2787 Print(
"// maximum number of terms in polynom of deg tdg: l %ld\n",
l);
2792 presults= (number *)
omAlloc( mdg *
sizeof( number ) );
2793 for (
i=0;
i < mdg;
i++) presults[
i]=
nInit(0);
2795 number *pevpoint= (number *)
omAlloc(
n *
sizeof( number ) );
2796 number *pev= (number *)
omAlloc(
n *
sizeof( number ) );
2799 mprPROTnl(
"// initial evaluation point: ");
2802 for (
i=0;
i <
n;
i++)
2813 for (
i=0;
i < mdg;
i++ )
2815 for (
j=0;
j <
n;
j++)
2835 ncpoly= vm.interpolateDense( presults );
2838 if ( subDetVal !=
NULL )
2841 for (
i= 0;
i <= mdg;
i++ )
2843 detdiv=
nDiv( ncpoly[
i], subDetVal );
2852 for (
i=0;
i < mdg;
i++ )
2861 for (
i=0;
i < mdg;
i++ )
2880 for (
i=0;
i <
l;
i++ )
2904 for (
j= 0;
j <
n - 1;
j++ )
◆ interpolateDenseSP()
Definition at line 2921 of file mpr_base.cc.
2925 int loops= (matchUp?
n-2:
n-1);
2927 mprPROTnl(
"uResultant::interpolateDenseSP");
2935 presults= (number *)
omAlloc( (tdg + 1) *
sizeof( number ) );
2936 for (
i=0;
i <= tdg;
i++ ) presults[
i]=
nInit(0);
2942 number *pevpoint= (number *)
omAlloc(
n *
sizeof( number ) );
2945 number *pev= (number *)
omAlloc(
n *
sizeof( number ) );
2952 for ( uvar= 0; uvar < loops; uvar++ )
2957 for (
i=0;
i <
n;
i++)
2966 else if (
i <= uvar + 2 )
2978 for (
i=0;
i <
n;
i++)
2989 if (
i == (uvar + 1) ) pevpoint[
i]=
nInit(-1);
2990 else pevpoint[
i]=
nInit(0);
2997 for (
i=0;
i <
n;
i++)
3003 for (
i=0;
i <= tdg;
i++ )
3006 nPower(pevpoint[0],
i,&pev[0]);
3020 number *ncpoly= vm.interpolateDense( presults );
3022 if ( subDetVal !=
NULL )
3025 for (
i= 0;
i <= tdg;
i++ )
3027 detdiv=
nDiv( ncpoly[
i], subDetVal );
3036 for (
i=0;
i <= tdg;
i++ )
3054 omFreeSize( (
void *)presults, (tdg + 1) *
sizeof( number ) );
◆ linearPoly()
Definition at line 2742 of file mpr_base.cc.
2747 poly actlp, rootlp= newlp;
◆ nextPrime()
int uResultant::nextPrime |
( |
const int |
p | ) |
|
|
private |
◆ specializeInU()
Definition at line 3059 of file mpr_base.cc.
3064 int loops=(matchUp?
n-2:
n-1);
3066 if (loops==0) { loops=1;nn++;}
3076 number *pevpoint= (number *)
omAlloc( nn *
sizeof( number ) );
3077 for (
i=0;
i < nn;
i++) pevpoint[
i]=
nInit(0);
3082 for ( uvar= 0; uvar < loops; uvar++ )
3087 for (
i=0;
i <
n;
i++)
3091 if (
i <= uvar + 2 )
3096 else pevpoint[
i]=
nInit(0);
3102 for (
i=0;
i <
n;
i++)
3106 if (
i == (uvar + 1) ) pevpoint[
i]=
nInit(-1);
3107 else pevpoint[
i]=
nInit(0);
3114 number *ncpoly= (number *)
omAlloc( (tdg+1) *
sizeof(number) );
3121 for (
i= tdg;
i >= 0;
i-- )
3143 if ( subDetVal !=
NULL )
3146 for (
i= 0;
i <= tdg;
i++ )
3148 detdiv=
nDiv( ncpoly[
i], subDetVal );
3167 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)
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 *)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
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)