mp-h.in
上传用户:qaz666999
上传日期:2022-08-06
资源大小:2570k
文件大小:5k
源码类别:

数学计算

开发平台:

Unix_Linux

  1. /* mp-h.in -- Definitions for the GNU multiple precision library  -*-mode:c-*-
  2.    BSD mp compatible functions.
  3. Copyright 1991, 1993, 1994, 1995, 1996, 2000, 2001, 2002, 2004 Free Software
  4. Foundation, Inc.
  5. This file is part of the GNU MP Library.
  6. The GNU MP Library is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU Lesser General Public License as published by
  8. the Free Software Foundation; either version 3 of the License, or (at your
  9. option) any later version.
  10. The GNU MP Library is distributed in the hope that it will be useful, but
  11. WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  12. or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
  13. License for more details.
  14. You should have received a copy of the GNU Lesser General Public License
  15. along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.  */
  16. #ifndef __MP_H__
  17. /* The following (everything under ifndef __GNU_MP__) must be identical in
  18.    gmp.h and mp.h to allow both to be included in an application or during
  19.    the library build.  Use the t-gmp-mp-h.pl script to check.  */
  20. #ifndef __GNU_MP__
  21. #define __GNU_MP__ 5
  22. #define __need_size_t  /* tell gcc stddef.h we only want size_t */
  23. #if defined (__cplusplus)
  24. #include <cstddef>     /* for size_t */
  25. #else
  26. #include <stddef.h>    /* for size_t */
  27. #endif
  28. #undef __need_size_t
  29. /* The following instantiated by configure, for internal use only */
  30. #if ! defined (__GMP_WITHIN_CONFIGURE)
  31. @DEFN_LONG_LONG_LIMB@
  32. #define __GMP_LIBGMP_DLL  @LIBGMP_DLL@
  33. #endif
  34. #if  defined (__STDC__)                                 
  35.   || defined (__cplusplus)                              
  36.   || defined (_AIX)                                     
  37.   || defined (__DECC)                                   
  38.   || (defined (__mips) && defined (_SYSTYPE_SVR4))      
  39.   || defined (_MSC_VER)                                 
  40.   || defined (_WIN32)
  41. #define __GMP_HAVE_CONST        1
  42. #define __GMP_HAVE_PROTOTYPES   1
  43. #define __GMP_HAVE_TOKEN_PASTE  1
  44. #else
  45. #define __GMP_HAVE_CONST        0
  46. #define __GMP_HAVE_PROTOTYPES   0
  47. #define __GMP_HAVE_TOKEN_PASTE  0
  48. #endif
  49. #if __GMP_HAVE_CONST
  50. #define __gmp_const   const
  51. #define __gmp_signed  signed
  52. #else
  53. #define __gmp_const
  54. #define __gmp_signed
  55. #endif
  56. #if defined (__GNUC__)
  57. #define __GMP_DECLSPEC_EXPORT  __declspec(__dllexport__)
  58. #define __GMP_DECLSPEC_IMPORT  __declspec(__dllimport__)
  59. #endif
  60. #if defined (_MSC_VER) || defined (__BORLANDC__)
  61. #define __GMP_DECLSPEC_EXPORT  __declspec(dllexport)
  62. #define __GMP_DECLSPEC_IMPORT  __declspec(dllimport)
  63. #endif
  64. #ifdef __WATCOMC__
  65. #define __GMP_DECLSPEC_EXPORT  __export
  66. #define __GMP_DECLSPEC_IMPORT  __import
  67. #endif
  68. #ifdef __IBMC__
  69. #define __GMP_DECLSPEC_EXPORT  _Export
  70. #define __GMP_DECLSPEC_IMPORT  _Import
  71. #endif
  72. #if __GMP_LIBGMP_DLL
  73. #if __GMP_WITHIN_GMP
  74. #define __GMP_DECLSPEC  __GMP_DECLSPEC_EXPORT
  75. #else
  76. #define __GMP_DECLSPEC  __GMP_DECLSPEC_IMPORT
  77. #endif
  78. #else
  79. #define __GMP_DECLSPEC
  80. #endif
  81. #ifdef __GMP_SHORT_LIMB
  82. typedef unsigned int mp_limb_t;
  83. typedef int mp_limb_signed_t;
  84. #else
  85. #ifdef _LONG_LONG_LIMB
  86. typedef unsigned long long int mp_limb_t;
  87. typedef long long int mp_limb_signed_t;
  88. #else
  89. typedef unsigned long int mp_limb_t;
  90. typedef long int mp_limb_signed_t;
  91. #endif
  92. #endif
  93. typedef unsigned long int mp_bitcnt_t;
  94. typedef struct
  95. {
  96.   int _mp_alloc; /* Number of *limbs* allocated and pointed
  97.    to by the _mp_d field.  */
  98.   int _mp_size; /* abs(_mp_size) is the number of limbs the
  99.    last field points to.  If _mp_size is
  100.    negative this is a negative number.  */
  101.   mp_limb_t *_mp_d; /* Pointer to the limbs.  */
  102. } __mpz_struct;
  103. #endif /* __GNU_MP__ */
  104. /* User-visible types.  */
  105. typedef __mpz_struct MINT;
  106. #if __GMP_HAVE_PROTOTYPES
  107. #define __GMP_PROTO(x) x
  108. #else
  109. #define __GMP_PROTO(x) ()
  110. #endif
  111. #if defined (__cplusplus)
  112. extern "C" {
  113. #endif
  114. #define mp_set_memory_functions __gmp_set_memory_functions
  115. __GMP_DECLSPEC void mp_set_memory_functions __GMP_PROTO ((void *(*) (size_t),
  116.                                       void *(*) (void *, size_t, size_t),
  117.                                       void (*) (void *, size_t)));
  118. __GMP_DECLSPEC MINT *itom __GMP_PROTO ((signed short int));
  119. __GMP_DECLSPEC MINT *xtom __GMP_PROTO ((const char *));
  120. __GMP_DECLSPEC void move __GMP_PROTO ((const MINT *, MINT *));
  121. __GMP_DECLSPEC void madd __GMP_PROTO ((const MINT *, const MINT *, MINT *));
  122. __GMP_DECLSPEC void msub __GMP_PROTO ((const MINT *, const MINT *, MINT *));
  123. __GMP_DECLSPEC void mult __GMP_PROTO ((const MINT *, const MINT *, MINT *));
  124. __GMP_DECLSPEC void mdiv __GMP_PROTO ((const MINT *, const MINT *, MINT *, MINT *));
  125. __GMP_DECLSPEC void sdiv __GMP_PROTO ((const MINT *, signed short int, MINT *, signed short int *));
  126. __GMP_DECLSPEC void msqrt __GMP_PROTO ((const MINT *, MINT *, MINT *));
  127. __GMP_DECLSPEC void pow __GMP_PROTO ((const MINT *, const MINT *, const MINT *, MINT *));
  128. __GMP_DECLSPEC void rpow __GMP_PROTO ((const MINT *, signed short int, MINT *));
  129. __GMP_DECLSPEC void gcd __GMP_PROTO ((const MINT *, const MINT *, MINT *));
  130. __GMP_DECLSPEC int  mcmp __GMP_PROTO ((const MINT *, const MINT *));
  131. __GMP_DECLSPEC void min __GMP_PROTO ((MINT *));
  132. __GMP_DECLSPEC void mout __GMP_PROTO ((const MINT *));
  133. __GMP_DECLSPEC char *mtox __GMP_PROTO ((const MINT *));
  134. __GMP_DECLSPEC void mfree __GMP_PROTO ((MINT *));
  135. #if defined (__cplusplus)
  136. }
  137. #endif
  138. #define __MP_H__
  139. #endif /* __MP_H__ */