[BACK]Return to parigen.h CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / windows / pari2 / win32com

Annotation of OpenXM_contrib2/windows/pari2/win32com/parigen.h, Revision 1.1

1.1     ! noro        1: /* $Id: parigen.h,v 1.11 2002/02/27 22:26:00 karim Exp $
        !             2:
        !             3: Copyright (C) 2000  The PARI group.
        !             4:
        !             5: This file is part of the PARI/GP package.
        !             6:
        !             7: PARI/GP is free software; you can redistribute it and/or modify it under the
        !             8: terms of the GNU General Public License as published by the Free Software
        !             9: Foundation. It is distributed in the hope that it will be useful, but WITHOUT
        !            10: ANY WARRANTY WHATSOEVER.
        !            11:
        !            12: Check the License for details. You should have received a copy of it, along
        !            13: with the package; see the file 'COPYING'. If not, write to the Free Software
        !            14: Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
        !            15:
        !            16: /* This file defines the parameters of the GEN type               */
        !            17:
        !            18: typedef long *GEN;
        !            19: typedef int (*QSCOMP)(const void *, const void *);
        !            20:
        !            21: #ifdef ULONG_NOT_DEFINED
        !            22:   typedef unsigned long ulong;
        !            23: #endif
        !            24:
        !            25: #ifdef __M68K__
        !            26: #  define OLD_CODES
        !            27: #endif
        !            28:
        !            29: #ifdef LONG_IS_64BIT
        !            30: #  define TWOPOTBYTES_IN_LONG  3
        !            31: #else
        !            32: #  define TWOPOTBYTES_IN_LONG  2
        !            33: #endif
        !            34:
        !            35: #define DEFAULTPREC    2 + (8>>TWOPOTBYTES_IN_LONG)
        !            36: #define MEDDEFAULTPREC 2 + (16>>TWOPOTBYTES_IN_LONG)
        !            37: #define BIGDEFAULTPREC 2 + (24>>TWOPOTBYTES_IN_LONG)
        !            38: #define TWOPOTBITS_IN_LONG (TWOPOTBYTES_IN_LONG+3)
        !            39: #define BYTES_IN_LONG (1UL<<TWOPOTBYTES_IN_LONG)
        !            40: #define BITS_IN_LONG  (1UL<<TWOPOTBITS_IN_LONG)
        !            41: #define HIGHBIT (1UL << (BITS_IN_LONG-1))
        !            42: #define BITS_IN_HALFULONG (BITS_IN_LONG>>1)
        !            43: #define MAXULONG (~0x0UL)
        !            44: #define MAXHALFULONG ((1UL<<BITS_IN_HALFULONG) - 1)
        !            45: #define LOWMASK  (MAXHALFULONG)
        !            46: #define HIGHMASK (~LOWMASK)
        !            47: #define SMALL_MASK (HIGHBIT>>1)
        !            48: /* You may want to change the following 32 to BITS_IN_LONG */
        !            49: #define BITS_IN_RANDOM 32
        !            50:
        !            51: /* Order of bits in codewords:
        !            52:  *  x[0]         TYPBITS, CLONEBIT, LGBITS
        !            53:  *  x[1].real    SIGNBITS, EXPOBITS
        !            54:  *       int     SIGNBITS, LGEFINTBITS
        !            55:  *       ser,pol SIGNBITS, VARNBITS ,LGEFBITS
        !            56:  *       padic   VALPBITS, PRECPBITS
        !            57:  * Length of bitfields are independant and satisfy:
        !            58:  *  TYPnumBITS  + LGnumBITS   + 1 <= BITS_IN_LONG (optimally =)
        !            59:  *  SIGNnumBITS + EXPOnumBITS     <= BITS_IN_LONG
        !            60:  *  SIGNnumBITS + LGnumBITS       <= BITS_IN_LONG
        !            61:  *  SIGNnumBITS + LGEFnumBITS + 2 <= BITS_IN_LONG
        !            62:  *  VALPnumbits               + 1 <= BITS_IN_LONG */
        !            63: #ifdef OLD_CODES
        !            64: #  define TYPnumBITS   8 /* obsolete (for hard-coded assembler in mp.s) */
        !            65: #  define SIGNnumBITS  8
        !            66: #else
        !            67: #  define TYPnumBITS   7
        !            68: #  define SIGNnumBITS  2
        !            69: #endif
        !            70:
        !            71: #ifdef LONG_IS_64BIT
        !            72: #  define   LGnumBITS 32
        !            73: #  define EXPOnumBITS 48
        !            74: #  define LGEFnumBITS 46 /* otherwise MAXVARN too large */
        !            75: #  define VALPnumBITS 32
        !            76: #else
        !            77: # ifdef OLD_CODES
        !            78: #   define  LGnumBITS 16 /* obsolete */
        !            79: # else
        !            80: #   define  LGnumBITS 24
        !            81: # endif
        !            82: #  define EXPOnumBITS 24
        !            83: #  define LGEFnumBITS 16
        !            84: #  define VALPnumBITS 16
        !            85: #endif
        !            86:
        !            87: /* no user serviceable parts below :-) */
        !            88: #define VARNnumBITS (BITS_IN_LONG - SIGNnumBITS - LGEFnumBITS)
        !            89: #define PRECPSHIFT VALPnumBITS
        !            90: #define  VARNSHIFT LGEFnumBITS
        !            91: #define   TYPSHIFT (BITS_IN_LONG - TYPnumBITS)
        !            92: #define  SIGNSHIFT (LGEFnumBITS+VARNnumBITS)
        !            93:
        !            94: #define EXPOBITS    ((1UL<<EXPOnumBITS)-1)
        !            95: #define SIGNBITS    (0xffffUL << SIGNSHIFT)
        !            96: #define  TYPBITS    (0xffffUL <<  TYPSHIFT)
        !            97: #define PRECPBITS   (~VALPBITS)
        !            98: #define LGBITS      ((1UL<<LGnumBITS)-1)
        !            99: #define LGEFINTBITS LGBITS
        !           100: #define LGEFBITS    ((1UL<<LGEFnumBITS)-1)
        !           101: #define VALPBITS    ((1UL<<VALPnumBITS)-1)
        !           102: #define VARNBITS    (MAXVARN<<VARNSHIFT)
        !           103: #define MAXVARN     ((1UL<<VARNnumBITS)-1)
        !           104: #define HIGHEXPOBIT (1UL<<(EXPOnumBITS-1))
        !           105: #define HIGHVALPBIT (1UL<<(VALPnumBITS-1))
        !           106: #define CLONEBIT    (1UL<<LGnumBITS)
        !           107:
        !           108: #define evaltyp(x)     (((ulong)(x)) << TYPSHIFT)
        !           109: #define evalvarn(x)    (((ulong)(x)) << VARNSHIFT)
        !           110: #define evalsigne(x)   (((long)(x)) << SIGNSHIFT)
        !           111: #define evalprecp(x)   (((long)(x)) << PRECPSHIFT)
        !           112: #define _evalexpo(x)  (HIGHEXPOBIT + (x))
        !           113: #define _evalvalp(x)  (HIGHVALPBIT + (x))
        !           114: #define evallgefint(x) (x)
        !           115: #define _evallg(x)    (x)
        !           116: #define _evallgef(x)  (x)
        !           117:
        !           118: #define typ(x)        ((((ulong)(x))&1)? (long)t_SMALL: (long)(((ulong) ((GEN) (x))[0]) >> TYPSHIFT))
        !           119: #define settyp(x,s)   (((GEN)(x))[0]=\
        !           120:                         (((GEN)(x))[0]&(~TYPBITS)) | evaltyp(s))
        !           121: #define smalltos(x)   (((long)(x))>>1)
        !           122:
        !           123: #define isclone(x)    (((GEN) (x))[0] & CLONEBIT)
        !           124: #define setisclone(x) (((GEN) (x))[0] |= CLONEBIT)
        !           125: #define unsetisclone(x) (((GEN) (x))[0] &= (~CLONEBIT))
        !           126:
        !           127: #define lg(x)         ((((ulong)(x))&1)?1L: ((long) (((GEN) (x))[0] & LGBITS)))
        !           128: #define setlg(x,s)    (((GEN)(x))[0]=\
        !           129:                         (((GEN)(x))[0]&(~LGBITS)) | evallg(s))
        !           130:
        !           131: #define signe(x)      (((long) ((GEN) (x))[1]) >> SIGNSHIFT)
        !           132: #define setsigne(x,s) (((GEN)(x))[1]=\
        !           133:                         (((GEN)(x))[1]&(~SIGNBITS)) | evalsigne(s))
        !           134:
        !           135: #define lgef(x)       (((GEN) (x))[1] & LGEFBITS)
        !           136: #define setlgef(x,s)  (((GEN)(x))[1]=\
        !           137:                         (((GEN)(x))[1]&(~LGEFBITS)) | evallgef(s))
        !           138:
        !           139: #define lgefint(x)      (((GEN) (x))[1] & LGEFINTBITS)
        !           140: #define setlgefint(x,s) (((GEN)(x))[1]=\
        !           141:                           (((GEN)(x))[1]&(~LGEFINTBITS)) | evallgefint(s))
        !           142:
        !           143: #define expo(x)       ((long) ((((GEN) (x))[1] & EXPOBITS) - HIGHEXPOBIT))
        !           144: #define setexpo(x,s)  (((GEN)(x))[1]=\
        !           145:                       (((GEN)(x))[1]&(~EXPOBITS)) | evalexpo(s))
        !           146:
        !           147: #define valp(x)       ((long) ((((GEN)(x))[1] & VALPBITS) - HIGHVALPBIT))
        !           148: #define setvalp(x,s)  (((GEN)(x))[1]=\
        !           149:                       (((GEN)(x))[1]&(~VALPBITS)) | evalvalp(s))
        !           150:
        !           151: #define precp(x)      ((long) (((ulong) ((GEN) (x))[1]) >> PRECPSHIFT))
        !           152: #define setprecp(x,s) (((GEN)(x))[1]=\
        !           153:                       (((GEN)(x))[1]&(~PRECPBITS)) | evalprecp(s))
        !           154:
        !           155: #define varn(x)       ((((GEN) (x))[1]&VARNBITS) >> VARNSHIFT)
        !           156: #define setvarn(x,s)  (((GEN)(x))[1]=\
        !           157:                       (((GEN)(x))[1]&(~VARNBITS)) | evalvarn(s))
        !           158:

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