1 /* Code by Fabrizio Caruso */
2 /* Modified by Alexandre Le Meur and Marie-Françoise Roy */
4 /* --------------------------------------------------- */
5 /* High level aliases */
6 /* --------------------------------------------------- */
8 /* --------------------------------------------------- */
11 det(A):=bareissDet(A);
13 elim(A) := gaussElim(A);
15 /* --------------------------------------------------- */
16 /* Characteristic polynomial */
17 /* other methods : Gauss or Bareiss */
19 charPol(A,var) := babyGiantCharPol(A,var);
21 /* --------------------------------------------------- */
24 /* The method chosen by default is the one with the subresultants */
25 /* other methods : Signed Remainder Sequence */
27 cauchyIndexBetween(q,p,var,a,b) :=
28 sSubResCauchyIndexBetween(q,p,var,a,b);
30 cauchyIndex(q,p,var) :=
31 sSubResCauchyIndex(q,p,var);
35 /* The method chosen by default is the one with the subresultants */
36 /* other methods : Signed Remainder Sequence */
38 tarskiQueryBetween(q,p,var,a,b) :=
39 sSubResTarskiQueryBetween(q,p,var,a,b);
41 tarskiQuery(q,p,var) :=
42 sSubResTarskiQuery(q,p,var);
46 /* The Method used by default is the De Casteljau's method*/
47 /* other method : Monomial (not yet working) */
49 isolateRoots(pol,var) :=
50 deCasteljauIsolateRoots(pol,var);
52 isolateRootsBetween(pol,var,a,b) :=
53 deCasteljauIsolateRootsBetween(pol,var,a,b);
55 deCasteljauIsolateRoots(pol,var) :=
56 deCasteljauIsolateRootsWithZ(pol,var); /* isolateRoots is defined with Z by default */
58 deCasteljauIsolateRootsBetween(pol,var,a,b) :=
59 deCasteljauIsolateRootsBetweenWithZ(pol,var,a,b);
61 isolateRootsBetweenCert(pol,var,a,b) :=
62 deCasteljauIsolateRootsBetweenWithZCert(pol,var,a,b);
66 /* The Method used by default is the De Casteljau's method*/
67 /* other method : Monomial (not yet working) */
69 findRoots(pol,var,threshold) :=
70 deCasteljauFindRoots(pol,var,threshold);
72 findRootsBetween(pol,var,threshold,a,b) :=
73 deCasteljauFindRootsBetween(pol,var,threshold,a,b);
75 deCasteljauFindRoots(pol,var,threshold) :=
76 deCasteljauFindRootsWithZ(pol,var,threshold); /* findRoots is defined with Z by default */
78 deCasteljauFindRootsBetween(pol,var,threshold,a,b) :=
79 deCasteljauFindRootsBetweenWithZ(pol,var,threshold,a,b); /* findRoots is defined with Z by default */
83 /* The Method used by default is the De Casteljau's method*/
84 /* other methods : Signed Remainder and Signed Subresultants and Monomial (not yet working) */
86 numberOfRootsBetween(p,var,a,b) :=
87 deCasteljauNumberOfRootsBetween(p,var,a,b);
89 numberOfRoots(p,var) :=
90 sSubResNumberOfRoots(p,var);
94 /* The Method used by default is the De Casteljau's method*/
95 /* other method : Monomial (not yet working) */
97 signsAtRoots(isolListForP,p,q,var) :=
98 deCasteljauSignsAtRoots(isolListForP,p,q,var);
100 rootsSign(isLst,isPol,sgnPol,var) :=
101 deCasteljauRootsSign(isLst,isPol,sgnPol,var);
103 evaluateSignsAtRoots(p,q,var) :=
104 deCasteljauEvaluateSignsAtRoots(p,q,var);
108 /* The Method used by default is the De Casteljau's method*/
111 /* Certificate of positivity from MAXIMA 5.39.0*/
113 sqFreeCertificate(pol,var,verbosity):=
114 deCasteljauSqFreeCertificateBetween(pol,var, [DEFAULT_LEFT_END,DEFAULT_RIGHT_END]);
117 sqFreeCertificate(pol,var) :=
118 deCasteljauSqFreeCertificateBetween(pol,var,[DEFAULT_LEFT_END,DEFAULT_RIGHT_END]);
120 noCheckCertificate(pol,var) :=
121 sqFreeCertificate(pol,var);
124 sqFreeCertificateBetween(pol,var,search_interval) :=
125 deCasteljauSqFreeCertificateBetween(pol,var,search_interval);
128 noCheckCertificateBetween(pol,var,search_interval) :=
129 sqFreeCertificateBetween(pol,var,search_interval);
132 deCasteljauSqFreeCertificateBetween(pol,var,search_interval) :=
133 deCasteljauSqFreeCertificateBetweenVerbose(pol,var,search_interval,DEFAULT_VERBOSITY);
135 deCasteljauSqFreeCertificateBetweenVerbose(pol,var, search_interval,verbosity):=
136 deCasteljauNoCheckCertificateBetweenVerbose(pol,var, search_interval,verbosity);
139 certificate([args]) := block([pol,var,interval],
142 if length(args) = 3 then
143 interval : third(args)
145 interval : [DEFAULT_LEFT_END, DEFAULT_RIGHT_END],
146 if length(args) = 4 then
147 interval : [third(args), fourth(args)],
148 return (deCasteljauCertificateBetween(pol,var,interval))
152 certificate(pol,var) :=
153 deCasteljauCertificateBetween(pol,var,[DEFAULT_LEFT_END,DEFAULT_RIGHT_END]);
155 certificateVerbose(pol,var,verbosity) :=
156 deCasteljauCertificateBetweenVerbose(pol,var,[DEFAULT_LEFT_END, DEFAULT_RIGHT_END],verbosity);
159 certificateBetween(pol,var,search_interval):=
160 deCasteljauCertificateBetween(pol,var,search_interval);
163 deCasteljauCertificateBetween(pol,var,search_interval) :=
164 deCasteljauCertificateBetweenVerbose(pol,var,search_interval,DEFAULT_VERBOSITY);
167 /* --------------------------------------------------- */
168 /* Sign determination */
170 signDetermination(polList,ptSet,sqAlg,var) :=
171 quickSignDetermination(polList,ptSet,sqAlg,var);
173 /* Sign determination with cardinals */
175 signDeterminationwithcardinals(polylist,P,TaQu,var):=
176 quickSignDeterminationwithcardinals(polylist,P,TaQu,var);
178 /* Invertibility Query */
180 invertibilityQuery(q,p,var) :=
181 gcdInvertibilityQuery(q,p,var);
183 /* Invertibility determination */
185 zerononzeroDetermination(polList,ptSet,sqAlg,var) :=
186 quickZerononzeroDetermination(polList,ptSet,sqAlg,var);
188 zerononzeroDeterminationwithcardinals(polylist,P,Qu,var):=
189 quickZerononzeroDeterminationwithcardinals(polylist,P,Qu,var);
192 /* archimedean method */
194 archimedeanTopology(pol,isolateRoots,x,y);