source: git/factory/singext.cc

spielwiese
Last change on this file was afa00e, checked in by Hans Schoenemann <hannes@…>, 7 years ago
code cleanup
  • Property mode set to 100644
File size: 1.7 KB
Line 
1/* emacs edit mode for this file is -*- C++ -*- */
2
3
4#include "config.h"
5
6
7#include "cf_assert.h"
8
9#include "cf_defs.h"
10#include "singext.h"
11#include "int_cf.h"
12#include "int_int.h"
13#include "int_rat.h"
14#include "imm.h"
15#include "cf_factory.h"
16
17#include "factory/cf_gmp.h"
18
19
20void gmp_numerator ( const CanonicalForm & f, mpz_ptr result )
21{
22    InternalCF * ff = f.getval();
23    ASSERT( ! is_imm( ff ), "illegal type" );
24    if ( ff->levelcoeff() == IntegerDomain )
25    {
26        mpz_init_set( result, (InternalInteger::MPI( ff )) );
27        ff->deleteObject();
28    }
29    else  if ( ff->levelcoeff() == RationalDomain )
30    {
31        mpz_init_set( result, (InternalRational::MPQNUM( ff )) );
32        ff->deleteObject();
33    }
34    else
35    {
36        ASSERT( 0, "illegal type" );
37    }
38}
39
40void gmp_denominator ( const CanonicalForm & f, mpz_ptr result )
41{
42    InternalCF * ff = f.getval();
43    ASSERT( ! is_imm( ff ), "illegal type" );
44    if ( ff->levelcoeff() == IntegerDomain )
45    {
46        mpz_init_set_si( result, 1 );
47        ff->deleteObject();
48    }
49    else  if ( ff->levelcoeff() == RationalDomain )
50    {
51        mpz_init_set( result, (InternalRational::MPQDEN( ff )) );
52        ff->deleteObject();
53    }
54    else
55    {
56        ASSERT( 0, "illegal type" );
57    }
58}
59
60int gf_value (const CanonicalForm & f )
61{
62    InternalCF * ff = f.getval();
63    return ((intptr_t)ff) >>2;
64}
65
66CanonicalForm make_cf ( const mpz_ptr n )
67{
68    return CanonicalForm( CFFactory::basic( n ) );
69}
70
71CanonicalForm make_cf ( const mpz_ptr n, const mpz_ptr d, bool normalize )
72{
73    return CanonicalForm( CFFactory::rational( n, d, normalize ) );
74}
75
76CanonicalForm make_cf_from_gf ( const int z )
77{
78    return CanonicalForm(int2imm_gf(z));
79}
Note: See TracBrowser for help on using the repository browser.