1 #ifndef RINTEGERS_H
2 #define RINTEGERS_H
3 /****************************************
4 *  Computer Algebra System SINGULAR     *
5 ****************************************/
6 /*
7 * ABSTRACT: numbers modulo n
8 */
9 #include "misc/auxiliary.h"
10 
11 #ifdef HAVE_RINGS
12 #include "coeffs/coeffs.h"
13 
14 #if SI_INTEGER_VARIANT == 3
15 #define SR_HDL(A) ((long)(A))
16 #define SR_INT    1L
17 #define INT_TO_SR(INT)  ((number) (((long)INT << 2) + SR_INT))
18 #define SR_TO_INT(SR)   (((long)SR) >> 2)
19 #define n_Z_IS_SMALL(A)     (SR_HDL(A) & SR_INT)
20 #define INT_IS_SMALL(A) ( ((A << 1) >> 1) == A )
21 #endif
22 
23 //extern int nrzExp;
24 //extern unsigned long nrzModul;
25 
26 BOOLEAN nrzInitChar    (coeffs r,  void * parameter);
27 
28 void    nrzWrite       (number a, const coeffs r); /*for rmodulon.cc*/
29 void    nrzDelete      (number *a, const coeffs);  /*for rmodulon.cc*/
30 int     nrzSize        (number a, const coeffs);   /*for rmodulon.cc*/
31 void nrzWriteFd(number n, const ssiInfo* d, const coeffs); /*for rmodulon.cc*/
32 number nrzReadFd(const ssiInfo *d, const coeffs);  /*for rmodulon.cc*/
33 
34 number  nrzInit        (long i, const coeffs r); /*for SAGE, better: n_Init*/
35 
36 #endif
37 
38 #endif
39