source: git/factory/singext.cc @ f5d2647

spielwiese
Last change on this file since f5d2647 was 564e39, checked in by Hans Schoenemann <hannes@…>, 10 years ago
fix: convert ptr to int via intptr_t
  • Property mode set to 100644
File size: 1.7 KB
Line 
1/* emacs edit mode for this file is -*- C++ -*- */
2
3#ifdef HAVE_CONFIG_H
4#include "config.h"
5#endif /* HAVE_CONFIG_H */
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
67make_cf ( const mpz_ptr n )
68{
69    return CanonicalForm( CFFactory::basic( n ) );
70}
71
72CanonicalForm
73make_cf ( const mpz_ptr n, const mpz_ptr d, bool normalize )
74{
75    return CanonicalForm( CFFactory::rational( n, d, normalize ) );
76}
77
78CanonicalForm make_cf_from_gf ( const int z )
79{
80    return CanonicalForm(int2imm_gf(z));
81}
Note: See TracBrowser for help on using the repository browser.