Macros | Functions
GMPrat.cc File Reference
#include <kernel/mod2.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
#include <kernel/spectrum/GMPrat.h>

Go to the source code of this file.

Macros

#define GMPRAT_CC
 

Functions

Rational operator- (const Rational &r)
 
bool operator< (const Rational &a, const Rational &b)
 
bool operator<= (const Rational &a, const Rational &b)
 
bool operator> (const Rational &a, const Rational &b)
 
bool operator>= (const Rational &a, const Rational &b)
 
bool operator== (const Rational &a, const Rational &b)
 
bool operator!= (const Rational &a, const Rational &b)
 
Rational operator+ (const Rational &a, const Rational &b)
 
Rational operator- (const Rational &a, const Rational &b)
 
Rational operator* (const Rational &a, const Rational &b)
 
Rational pow (const Rational &a, int e)
 
Rational operator/ (const Rational &a, const Rational &b)
 
int sgn (const Rational &a)
 
Rational abs (const Rational &a)
 
Rational gcd (const Rational &a, const Rational &b)
 
Rational gcd (Rational *a, int n)
 
Rational lcm (const Rational &a, const Rational &b)
 
Rational lcm (Rational *a, int n)
 

Macro Definition Documentation

#define GMPRAT_CC

Definition at line 9 of file GMPrat.cc.

Function Documentation

Rational abs ( const Rational a)

Definition at line 443 of file GMPrat.cc.

444 {
445  Rational
446  erg;
447 
448  if (mpq_sgn(a.p->rat)<0)
449  mpq_neg(erg.p->rat,a.p->rat);
450  else
451  mpq_set(erg.p->rat,a.p->rat);
452  return erg;
453 }
mpq_t rat
Definition: GMPrat.h:18
rep * p
Definition: GMPrat.h:23
Rational gcd ( const Rational a,
const Rational b 
)

Definition at line 455 of file GMPrat.cc.

456 {
457  if( a == 0 )
458  {
459  if( b == 0 )
460  {
461  return (Rational)1;
462  }
463  else
464  {
465  return abs( b );
466  }
467  }
468  else if( b == 0 )
469  {
470  return abs( a );
471  }
472 
473  Rational erg;
474 
475  mpz_gcd( mpq_numref( erg.p->rat ),
476  mpq_numref( a.p->rat ),mpq_numref( b.p->rat ) );
477  mpz_gcd( mpq_denref( erg.p->rat ),
478  mpq_denref( a.p->rat ),mpq_denref( b.p->rat ) );
479 
480  //mpq_canonicalize( erg.p->rat );
481 
482  return abs( erg );
483 }
mpq_t rat
Definition: GMPrat.h:18
Rational abs(const Rational &a)
Definition: GMPrat.cc:443
rep * p
Definition: GMPrat.h:23
Rational gcd ( Rational a,
int  n 
)

Definition at line 485 of file GMPrat.cc.

486 {
487  if( n == 1 )
488  {
489  return a[0];
490  }
491 
492  Rational g = gcd( a[0],a[1] );
493 
494  for( int i=2; i<n; i++ )
495  {
496  g = gcd( g,a[i] );
497  }
498 
499  return g;
500 }
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
g
Definition: cfModGcd.cc:4031
Rational gcd(const Rational &a, const Rational &b)
Definition: GMPrat.cc:455
int i
Definition: cfEzgcd.cc:123
Rational lcm ( const Rational a,
const Rational b 
)

Definition at line 502 of file GMPrat.cc.

503 {
504  if( a == 0 )
505  {
506  return b;
507  }
508  else if( b == 0 )
509  {
510  return a;
511  }
512 
513  return a*b/gcd(a,b);
514 }
const poly a
Definition: syzextra.cc:212
Rational gcd(const Rational &a, const Rational &b)
Definition: GMPrat.cc:455
const poly b
Definition: syzextra.cc:213
Rational lcm ( Rational a,
int  n 
)

Definition at line 516 of file GMPrat.cc.

517 {
518  if( n == 1 )
519  {
520  return a[0];
521  }
522 
523  Rational g = lcm( a[0],a[1] );
524 
525  for( int i=2; i<n; i++ )
526  {
527  g = lcm( g,a[i] );
528  }
529 
530  return g;
531 }
const CanonicalForm CFMap CFMap int &both_non_zero int n
Definition: cfEzgcd.cc:52
g
Definition: cfModGcd.cc:4031
int i
Definition: cfEzgcd.cc:123
Rational lcm(const Rational &a, const Rational &b)
Definition: GMPrat.cc:502
bool operator!= ( const Rational a,
const Rational b 
)

Definition at line 325 of file GMPrat.cc.

326 {
327  if (mpq_equal(a.p->rat,b.p->rat)) return false;
328  return true;
329 }
mpq_t rat
Definition: GMPrat.h:18
rep * p
Definition: GMPrat.h:23
Rational operator* ( const Rational a,
const Rational b 
)

Definition at line 410 of file GMPrat.cc.

411 {
412  Rational
413  erg(a);
414 
415  return erg*=b;
416 }
const poly b
Definition: syzextra.cc:213
Rational operator+ ( const Rational a,
const Rational b 
)

Definition at line 392 of file GMPrat.cc.

393 {
394  Rational
395  erg(a);
396 
397  return erg+=b;
398 }
const poly b
Definition: syzextra.cc:213
Rational operator- ( const Rational r)

Definition at line 194 of file GMPrat.cc.

195 {
196  Rational erg;
197 
198  mpq_neg(erg.p->rat,r.p->rat);
199  return erg;
200 }
mpq_t rat
Definition: GMPrat.h:18
rep * p
Definition: GMPrat.h:23
Rational operator- ( const Rational a,
const Rational b 
)

Definition at line 401 of file GMPrat.cc.

402 {
403  Rational
404  erg(a);
405 
406  return erg-=b;
407 }
const poly b
Definition: syzextra.cc:213
Rational operator/ ( const Rational a,
const Rational b 
)

Definition at line 429 of file GMPrat.cc.

430 {
431  Rational
432  erg(a);
433 
434  return erg/=b;
435 }
const poly b
Definition: syzextra.cc:213
bool operator< ( const Rational a,
const Rational b 
)

Definition at line 295 of file GMPrat.cc.

296 {
297  if (mpq_cmp(a.p->rat,b.p->rat)<0) return true;
298  return false;
299 }
mpq_t rat
Definition: GMPrat.h:18
rep * p
Definition: GMPrat.h:23
bool operator<= ( const Rational a,
const Rational b 
)

Definition at line 301 of file GMPrat.cc.

302 {
303  if (mpq_cmp(a.p->rat,b.p->rat)>0) return false;
304  return true;
305 }
mpq_t rat
Definition: GMPrat.h:18
rep * p
Definition: GMPrat.h:23
bool operator== ( const Rational a,
const Rational b 
)

Definition at line 319 of file GMPrat.cc.

320 {
321  if (mpq_equal(a.p->rat,b.p->rat)) return true;
322  return false;
323 }
mpq_t rat
Definition: GMPrat.h:18
rep * p
Definition: GMPrat.h:23
bool operator> ( const Rational a,
const Rational b 
)

Definition at line 307 of file GMPrat.cc.

308 {
309  if (mpq_cmp(a.p->rat,b.p->rat)>0) return true;
310  return false;
311 }
mpq_t rat
Definition: GMPrat.h:18
rep * p
Definition: GMPrat.h:23
bool operator>= ( const Rational a,
const Rational b 
)

Definition at line 313 of file GMPrat.cc.

314 {
315  if (mpq_cmp(a.p->rat,b.p->rat)<0) return false;
316  return true;
317 }
mpq_t rat
Definition: GMPrat.h:18
rep * p
Definition: GMPrat.h:23
Rational pow ( const Rational a,
int  e 
)

Definition at line 418 of file GMPrat.cc.

419 {
420  Rational erg(1);
421 
422  for( int i=0; i<e; i++ )
423  {
424  erg *= a;
425  }
426  return erg;
427 }
const poly a
Definition: syzextra.cc:212
int i
Definition: cfEzgcd.cc:123
int sgn ( const Rational a)

Definition at line 437 of file GMPrat.cc.

438 {
439  return mpq_sgn(a.p->rat);
440 }
mpq_t rat
Definition: GMPrat.h:18
rep * p
Definition: GMPrat.h:23