#include <fglmvec.h>
Definition at line 18 of file fglmvec.h.
◆ fglmVector() [1/5]
Implementation of class fglmVector
Definition at line 152 of file fglmvec.cc.
◆ fglmVector() [2/5]
fglmVector::fglmVector |
( |
| ) |
|
Definition at line 156 of file fglmvec.cc.
156 :
rep (
new fglmVectorRep ())
157{
158}
◆ fglmVector() [3/5]
fglmVector::fglmVector |
( |
int | size | ) |
|
◆ fglmVector() [4/5]
fglmVector::fglmVector |
( |
int | size, |
|
|
int | basis ) |
◆ fglmVector() [5/5]
Definition at line 169 of file fglmvec.cc.
170{
171 rep =
v.rep->copyObject ();
172}
const Variable & v
< [in] a sqrfree bivariate poly
◆ ~fglmVector()
fglmVector::~fglmVector |
( |
| ) |
|
Definition at line 174 of file fglmvec.cc.
175{
176 if(
rep->deleteObject ())
178}
◆ clearDenom()
number fglmVector::clearDenom |
( |
| ) |
|
Definition at line 505 of file fglmvec.cc.
506{
507 number theLcm =
nInit (1);
509 {
510 return theLcm;
511 }
515 {
517 {
521 theLcm = temp;
522 }
523 }
525 {
528 }
529 else
530 {
532 {
533 *this *= theLcm;
535 {
537 }
538 }
539 }
540 return theLcm;
541}
static FORCE_INLINE number n_NormalizeHelper(number a, number b, const coeffs r)
assume that r is a quotient field (otherwise, return 1) for arguments (a1/a2,b1/b2) return (lcm(a1,...
static FORCE_INLINE n_coeffType getCoeffType(const coeffs r)
Returns the type of coeffs domain.
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
◆ elemIsZero()
int fglmVector::elemIsZero |
( |
int | i | ) |
|
◆ gcd()
number fglmVector::gcd |
( |
| ) |
const |
Definition at line 458 of file fglmvec.cc.
459{
460 int i =
rep->size ();
463 number theGcd;
464 number current;
466 {
467 current =
rep->getconstelem (
i);
469 {
470 theGcd =
nCopy (current);
473 {
475 }
478 }
480 }
482 {
484 {
485 while(
i > 0 && !gcdIsOne)
486 {
487 current =
rep->getconstelem (
i);
489 {
492 theGcd = temp;
495 }
497 }
498 }
499 }
500 else
502 return theGcd;
503}
static FORCE_INLINE number n_SubringGcd(number a, number b, const coeffs r)
◆ getconstelem()
number fglmVector::getconstelem |
( |
int | i | ) |
const |
Definition at line 446 of file fglmvec.cc.
447{
448 return rep->getconstelem (
i);
449}
◆ getelem()
number & fglmVector::getelem |
( |
int | i | ) |
|
◆ isZero()
int fglmVector::isZero |
( |
| ) |
|
◆ makeUnique()
void fglmVector::makeUnique |
( |
| ) |
|
|
protected |
Definition at line 198 of file fglmvec.cc.
199{
200 if(
rep->refcount () != 1)
201 {
202 rep->deleteObject ();
204 }
205}
◆ nihilate()
Definition at line 218 of file fglmvec.cc.
220{
222 int vsize =
v.size ();
223 number term1, term2;
224 fglmASSERT (vsize <= rep->
size (),
"v has to be smaller or equal");
226 {
227 for(
i = vsize;
i > 0;
i--)
228 {
229 term1 =
nMult (fac1,
rep->getconstelem (
i));
230 term2 =
nMult (fac2,
v.rep->getconstelem (
i));
231 rep->setelem (
i,
nSub (term1, term2));
234 }
235 for(
i =
rep->size ();
i > vsize;
i--)
236 {
238 }
239 }
240 else
241 {
242 number *newelems;
243 newelems = (number *)
omAlloc (
rep->size () * sizeof (number));
244 for(
i = vsize;
i > 0;
i--)
245 {
246 term1 =
nMult (fac1,
rep->getconstelem (
i));
247 term2 =
nMult (fac2,
v.rep->getconstelem (
i));
248 newelems[
i - 1] =
nSub (term1, term2);
251 }
252 for(
i =
rep->size ();
i > vsize;
i--)
253 {
254 newelems[
i - 1] =
nMult (fac1,
rep->getconstelem (
i));
255 }
256 rep->deleteObject ();
257 rep =
new fglmVectorRep (
rep->size (), newelems);
258 }
259}
#define fglmASSERT(ignore1, ignore2)
◆ numNonZeroElems()
int fglmVector::numNonZeroElems |
( |
| ) |
const |
Definition at line 212 of file fglmvec.cc.
213{
214 return rep->numNonZeroElems ();
215}
◆ operator!=()
Definition at line 290 of file fglmvec.cc.
291{
292 return !(*
this ==
v);
293}
◆ operator*=()
Definition at line 350 of file fglmvec.cc.
351{
352 int s =
rep->size ();
354 if(!
rep->isUnique ())
355 {
356 number *temp;
357 temp = (number *)
omAlloc (
s *
sizeof (number));
358 for(
i =
s;
i > 0;
i--)
359 temp[
i - 1] =
nMult (
rep->getconstelem (
i), n);
360 rep->deleteObject ();
361 rep =
new fglmVectorRep (
s, temp);
362 }
363 else
364 {
365 for(
i =
s;
i > 0;
i--)
367 }
368 return *this;
369}
const CanonicalForm int s
◆ operator+=()
Definition at line 305 of file fglmvec.cc.
306{
308
311 {
312 for(
i =
rep->size ();
i > 0;
i--)
314 }
315 else
316 {
317 int n =
rep->size ();
318 number *newelems;
319 newelems = (number *)
omAlloc (n *
sizeof (number));
320 for(
i = n;
i > 0;
i--)
321 newelems[
i - 1] =
nAdd (
rep->getconstelem (
i),
v.rep->getconstelem (
i));
322 rep->deleteObject ();
323 rep =
new fglmVectorRep (n, newelems);
324 }
325 return *this;
326}
static FORCE_INLINE void n_InpAdd(number &a, number b, const coeffs r)
addition of 'a' and 'b'; replacement of 'a' by the sum a+b
◆ operator-=()
Definition at line 328 of file fglmvec.cc.
329{
333 {
334 for(
i =
rep->size ();
i > 0;
i--)
335 rep->setelem (
i,
nSub (
rep->getconstelem (
i),
v.rep->getconstelem (
i)));
336 }
337 else
338 {
339 int n =
rep->size ();
340 number *newelems;
341 newelems = (number *)
omAlloc (n *
sizeof (number));
342 for(
i = n;
i > 0;
i--)
343 newelems[
i - 1] =
nSub (
rep->getconstelem (
i),
v.rep->getconstelem (
i));
344 rep->deleteObject ();
345 rep =
new fglmVectorRep (n, newelems);
346 }
347 return *this;
348}
◆ operator/=()
Definition at line 371 of file fglmvec.cc.
372{
373 int s =
rep->size ();
375 if(!
rep->isUnique ())
376 {
377 number *temp;
378 temp = (number *)
omAlloc (
s *
sizeof (number));
379 for(
i =
s;
i > 0;
i--)
380 {
381 temp[
i - 1] =
nDiv (
rep->getconstelem (
i), n);
383 }
384 rep->deleteObject ();
385 rep =
new fglmVectorRep (
s, temp);
386 }
387 else
388 {
389 for(
i =
s;
i > 0;
i--)
390 {
393 }
394 }
395 return *this;
396}
◆ operator=()
Definition at line 261 of file fglmvec.cc.
262{
264 {
265 if(
rep->deleteObject ())
267 rep =
v.rep->copyObject ();
268 }
269 return *this;
270}
◆ operator==()
Definition at line 272 of file fglmvec.cc.
273{
274 if(
rep->size () ==
v.rep->size ())
275 {
277 return 1;
278 else
279 {
281 for(
i =
rep->size ();
i > 0;
i--)
282 if(!
nEqual (
rep->getconstelem (
i),
v.rep->getconstelem (
i)))
283 return 0;
284 return 1;
285 }
286 }
287 return 0;
288}
◆ setelem()
void fglmVector::setelem |
( |
int | i, |
|
|
number & | n ) |
Definition at line 451 of file fglmvec.cc.
452{
456}
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
◆ size()
int fglmVector::size |
( |
| ) |
const |
◆ operator* [1/2]
Definition at line 426 of file fglmvec.cc.
427{
429 temp *= n;
430 return temp;
431}
fglmVector(fglmVectorRep *rep)
◆ operator* [2/2]
Definition at line 433 of file fglmvec.cc.
434{
436 temp *= n;
437 return temp;
438}
◆ operator+
Definition at line 412 of file fglmvec.cc.
413{
415 temp += rhs;
416 return temp;
417}
◆ operator- [1/2]
Definition at line 419 of file fglmvec.cc.
420{
422 temp -= rhs;
423 return temp;
424}
◆ operator- [2/2]
Definition at line 398 of file fglmvec.cc.
399{
402 number n;
403 for(
i =
v.size ();
i > 0;
i--)
404 {
405 n =
nCopy (
v.getconstelem (
i));
408 }
409 return temp;
410}
◆ rep
The documentation for this class was generated from the following files: