[BACK]Return to parigen.h CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / pari / src / headers

Annotation of OpenXM_contrib/pari/src/headers/parigen.h, Revision 1.1.1.1

1.1       maekawa     1: /******************************************************************/
                      2: /* This file defines the parameters of the GEN type               */
                      3: /* $Id: parigen.h,v 1.1.1.1 1999/09/16 13:47:45 karim Exp $ */
                      4:
                      5: typedef long *GEN;
                      6: typedef int (*QSCOMP)(const void *, const void *);
                      7: #ifdef ULONG_NOT_DEFINED
                      8:   typedef unsigned long ulong;
                      9: #endif
                     10:
                     11: #ifdef __M68K__
                     12: #  define OLD_CODES
                     13: #endif
                     14:
                     15: #ifdef LONG_IS_64BIT
                     16: #  define MAXULONG     (0xffffffffffffffffUL)
                     17: #  define MAXHALFULONG (0x00000000ffffffffUL)
                     18: #  define HIGHBIT      (0x8000000000000000UL)
                     19: #  define HIGHMASK     (0xffffffff00000000UL)
                     20: #  define LOWMASK      (0x00000000ffffffffUL)
                     21: #  define SMALL_MASK   (0x4000000000000000UL)
                     22:
                     23: #  define DEFAULTPREC     3
                     24: #  define MEDDEFAULTPREC  4
                     25: #  define BIGDEFAULTPREC  5
                     26: #  define TWOPOTBYTES_IN_LONG  3
                     27: #  define TWOPOTBITS_IN_LONG   6
                     28: #  define BYTES_IN_LONG        8
                     29: #  define BITS_IN_LONG        64
                     30: #  define BITS_IN_HALFULONG   32
                     31: /* For a 64-bit random generator, change the following 32 to 64 */
                     32: #  define BITS_IN_RANDOM      32
                     33:
                     34: #else
                     35:
                     36: #  define MAXULONG     (0xffffffffUL)
                     37: #  define MAXHALFULONG (0x0000ffffUL)
                     38: #  define HIGHBIT      (0x80000000UL)
                     39: #  define HIGHMASK     (0xffff0000UL)
                     40: #  define LOWMASK      (0x0000ffffUL)
                     41: #  define SMALL_MASK   (0x40000000UL)
                     42:
                     43: #  define DEFAULTPREC     4
                     44: #  define MEDDEFAULTPREC  6
                     45: #  define BIGDEFAULTPREC  8
                     46: #  define TWOPOTBYTES_IN_LONG  2
                     47: #  define TWOPOTBITS_IN_LONG   5
                     48: #  define BYTES_IN_LONG        4
                     49: #  define BITS_IN_LONG        32
                     50: #  define BITS_IN_HALFULONG   16
                     51: #  define BITS_IN_RANDOM      32
                     52: #endif
                     53:
                     54: #ifndef LONG_IS_64BIT
                     55: /*  second codeword x[1], for types: INT,REAL,PADIC,POL,SER */
                     56: #   define EXPOBITS    (0x00ffffffUL)
                     57: #   define HIGHEXPOBIT (0x00800000L)
                     58: #   define LGEFBITS    (0x0000ffffUL)
                     59: #   define VALPBITS    (0x0000ffffUL) /* used only for type PADIC */
                     60: #   define HIGHVALPBIT (0x00008000L)  /* used only for type PADIC, SER */
                     61: #   define PRECPBITS   (0xffff0000UL) /* used only for type PADIC */
                     62: #   define PRECPSHIFT  16
                     63: #   define VARNSHIFT   16
                     64:
                     65: # ifndef OLD_CODES
                     66: #   define SIGNBITS    (0xc0000000UL)
                     67: #   define VARNBITS    (0x3fff0000UL)
                     68: #   define LGEFINTBITS (0x00ffffffUL)
                     69: #   define SIGNSHIFT   30
                     70: #   define MAXVARN     16383
                     71: # else
                     72: #   define SIGNBITS    (0xff000000UL)
                     73: #   define VARNBITS    (0x00ff0000UL)
                     74: #   define LGEFINTBITS (0x0000ffffUL)
                     75: #   define SIGNSHIFT   24
                     76: #   define MAXVARN     255
                     77: # endif
                     78:
                     79: /*  first codeword x[0] */
                     80: # ifndef OLD_CODES
                     81: #   define TYPBITS      (0xfe000000UL)
                     82: #   define CLONEBIT     (0x01000000UL)
                     83: #   define LGBITS       (0x00ffffffUL)
                     84: #   define TYPSHIFT     25
                     85: # else
                     86: #   define TYPBITS      (0xff000000UL)
                     87: #   define CLONEBIT     (0x00010000UL)
                     88: #   define LGBITS       (0x0000ffffUL)
                     89: #   define TYPSHIFT     24
                     90: # endif
                     91: #endif
                     92:
                     93: #ifdef LONG_IS_64BIT
                     94: /*  first codeword x[0] */
                     95: #  define TYPBITS      (0xffff000000000000UL)
                     96: #  define CLONEBIT     (0x0000000100000000UL)
                     97: #  define LGBITS       (0x00000000ffffffffUL)
                     98: #  define TYPSHIFT     48
                     99:
                    100: /*  second codeword x[1] */
                    101: #  define SIGNBITS     (0xffff000000000000UL)
                    102: #  define VARNBITS     (0x0000ffff00000000UL)
                    103: #  define LGEFBITS     (0x00000000ffffffffUL)
                    104: #  define SIGNSHIFT    48
                    105: #  define MAXVARN      65535
                    106:
                    107: #  define EXPOBITS     (0x0000ffffffffffffUL)
                    108: #  define HIGHEXPOBIT  (0x0000800000000000L)
                    109: #  define LGEFINTBITS  (0x00000000ffffffffUL)
                    110: #  define VALPBITS     (0x00000000ffffffffUL)
                    111: #  define HIGHVALPBIT  (0x0000000080000000L)
                    112: #  define PRECPBITS    (0xffffffff00000000UL)
                    113: #  define PRECPSHIFT   32
                    114: #  define VARNSHIFT    32
                    115: #endif
                    116:
                    117: #define evaltyp(x)     (((ulong)(x)) << TYPSHIFT)
                    118: #define evalvarn(x)    (((ulong)(x)) << VARNSHIFT)
                    119: #define evalsigne(x)   (((long)(x)) << SIGNSHIFT)
                    120: #define evalprecp(x)   (((long)(x)) << PRECPSHIFT)
                    121: #define evalexpo(x)    (HIGHEXPOBIT + (x))
                    122: #define evalvalp(x)    (HIGHVALPBIT + (x))
                    123: #define evallgefint(x) (x)
                    124: #define m_evallg(x)    (x)
                    125: #define m_evallgef(x)  (x)
                    126:
                    127: #define typ(x)        ((((long)(x))&1)? t_SMALL: (((ulong) ((GEN) (x))[0]) >> TYPSHIFT))
                    128: #define settyp(x,s)   (((GEN)(x))[0]=\
                    129:                         (((GEN)(x))[0]&(~TYPBITS)) | evaltyp(s))
                    130: #define smalltos(x)   (((long)(x))>>1)
                    131:
                    132: #define isclone(x)    (((GEN) (x))[0] & CLONEBIT)
                    133: #define setisclone(x) (((GEN) (x))[0] |= CLONEBIT)
                    134: #define unsetisclone(x) (((GEN) (x))[0] &= (~CLONEBIT))
                    135:
                    136: #define lg(x)         ((((long)(x))&1)?1: ((long) (((GEN) (x))[0] & LGBITS)))
                    137: #define setlg(x,s)    (((GEN)(x))[0]=\
                    138:                         (((GEN)(x))[0]&(~LGBITS)) | evallg(s))
                    139:
                    140: #define signe(x)      (((long) ((GEN) (x))[1]) >> SIGNSHIFT)
                    141: #define setsigne(x,s) (((GEN)(x))[1]=\
                    142:                         (((GEN)(x))[1]&(~SIGNBITS)) | evalsigne(s))
                    143:
                    144: #define lgef(x)       ((long) (((GEN) (x))[1] & LGEFBITS))
                    145: #define setlgef(x,s)  (((GEN)(x))[1]=\
                    146:                         (((GEN)(x))[1]&(~LGEFBITS)) | evallgef(s))
                    147:
                    148: #define lgefint(x)      ((long) (((GEN) (x))[1] & LGEFINTBITS))
                    149: #define setlgefint(x,s) (((GEN)(x))[1]=\
                    150:                           (((GEN)(x))[1]&(~LGEFINTBITS)) | evallgefint(s))
                    151:
                    152: #define expo(x)       ((long) ((((GEN) (x))[1] & EXPOBITS) - HIGHEXPOBIT))
                    153: #define setexpo(x,s)  (((GEN)(x))[1]=\
                    154:                       (((GEN)(x))[1]&(~EXPOBITS)) | evalexpo(s))
                    155:
                    156: #define valp(x)       ((long) ((((GEN)(x))[1] & VALPBITS) - HIGHVALPBIT))
                    157: #define setvalp(x,s)  (((GEN)(x))[1]=\
                    158:                       (((GEN)(x))[1]&(~VALPBITS)) | evalvalp(s))
                    159:
                    160: #define precp(x)      ((long) (((ulong) ((GEN) (x))[1]) >> PRECPSHIFT))
                    161: #define setprecp(x,s) (((GEN)(x))[1]=\
                    162:                       (((GEN)(x))[1]&(~PRECPBITS)) | evalprecp(s))
                    163:
                    164: #define varn(x)       ((long) ((((GEN) (x))[1]&VARNBITS) >> VARNSHIFT))
                    165: #define setvarn(x,s)  (((GEN)(x))[1]=\
                    166:                       (((GEN)(x))[1]&(~VARNBITS)) | evalvarn(s))
                    167:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>