ncbi_math.h
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:5k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: ncbi_math.h,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 18:04:18  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.7
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* $Id: ncbi_math.h,v 1000.1 2004/06/01 18:04:18 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Authors:  Gish, Kans, Ostell, Schuler
  35.  *
  36.  * Version Creation Date:   10/23/91
  37.  *
  38.  * ==========================================================================
  39.  */
  40. /** @file ncbi_math.h
  41.  * Prototypes for portable math library (ported from C Toolkit)
  42.  * @todo FIXME doxygen comments
  43.  */
  44. #include <algo/blast/core/ncbi_std.h> 
  45. #ifndef _NCBIMATH_
  46. #define _NCBIMATH_
  47. #ifdef __cplusplus
  48. extern "C" {
  49. #endif
  50. /* log(x+1) for all x > -1 */
  51. extern double BLAST_Log1p (double);
  52. /* exp(x)-1 for all x */
  53. extern double BLAST_Expm1 (double);
  54. /* Factorial function */
  55. extern double BLAST_Factorial(Int4 n);
  56. /* Logarithm of the factorial Fn */
  57. extern double BLAST_LnFactorial (double x);
  58. /* log(gamma(n)), integral n */
  59. extern double BLAST_LnGammaInt (Int4);
  60. /* Romberg numerical integrator */
  61. extern double BLAST_RombergIntegrate (double (*f) (double, void*), void* fargs, double p, double q, double eps, Int4 epsit, Int4 itmin);
  62. /* Greatest common divisor */
  63. extern long BLAST_Gcd (long, long);
  64. /* Nearest integer */
  65. extern long BLAST_Nint (double);
  66. /* Integral power of x */
  67. extern double BLAST_Powi (double x, Int4 n);
  68. /* Error codes for the CTX_NCBIMATH context */
  69. #define ERR_NCBIMATH_INVAL 1 /* invalid parameter */
  70. #define ERR_NCBIMATH_DOMAIN 2 /* domain error */
  71. #define ERR_NCBIMATH_RANGE 3 /* range error */
  72. #define ERR_NCBIMATH_ITER 4 /* iteration limit exceeded */
  73. #define LOGDERIV_ORDER_MAX 4
  74. #define POLYGAMMA_ORDER_MAX LOGDERIV_ORDER_MAX
  75. #define NCBIMATH_PI 3.1415926535897932384626433832795
  76. #define NCBIMATH_E 2.7182818284590452353602874713527
  77. /* Euler's constant */
  78. #define NCBIMATH_EULER 0.5772156649015328606065120900824
  79. /* Catalan's constant */
  80. #define NCBIMATH_CATALAN 0.9159655941772190150546035149324
  81. /* sqrt(2) */
  82. #define NCBIMATH_SQRT2 1.4142135623730950488016887242097
  83. /* sqrt(3) */
  84. #define NCBIMATH_SQRT3 1.7320508075688772935274463415059
  85. /* sqrt(PI) */
  86. #define NCBIMATH_SQRTPI 1.7724538509055160272981674833411
  87. /* Natural log(2) */
  88. #define NCBIMATH_LN2 0.69314718055994530941723212145818
  89. /* Natural log(10) */
  90. #define NCBIMATH_LN10 2.3025850929940456840179914546844
  91. /* Natural log(PI) */
  92. #define NCBIMATH_LNPI 1.1447298858494001741434273513531
  93. #ifdef __cplusplus
  94. }
  95. #endif
  96. /*
  97.  * ===========================================================================
  98.  *
  99.  * $Log: ncbi_math.h,v $
  100.  * Revision 1000.1  2004/06/01 18:04:18  gouriano
  101.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.7
  102.  *
  103.  * Revision 1.7  2004/05/19 14:52:01  camacho
  104.  * 1. Added doxygen tags to enable doxygen processing of algo/blast/core
  105.  * 2. Standardized copyright, CVS $Id string, $Log and rcsid formatting and i
  106.  *    location
  107.  * 3. Added use of @todo doxygen keyword
  108.  *
  109.  * Revision 1.6  2003/09/26 20:38:12  dondosha
  110.  * Returned prototype for the factorial function (BLAST_Factorial)
  111.  *
  112.  * Revision 1.5  2003/09/26 19:02:31  madden
  113.  * Prefix ncbimath functions with BLAST_
  114.  *
  115.  * Revision 1.4  2003/09/10 21:35:20  dondosha
  116.  * Removed Nlm_ prefix from math functions
  117.  *
  118.  * Revision 1.3  2003/08/25 22:30:24  dondosha
  119.  * Added LnGammaInt definition and Factorial prototype
  120.  *
  121.  * Revision 1.2  2003/08/11 14:57:16  dondosha
  122.  * Added algo/blast/core path to all #included headers
  123.  *
  124.  * Revision 1.1  2003/08/02 16:32:11  camacho
  125.  * Moved ncbimath.h -> ncbi_math.h
  126.  *
  127.  * Revision 1.2  2003/08/01 21:18:48  dondosha
  128.  * Correction of a #include
  129.  *
  130.  * Revision 1.1  2003/08/01 21:03:40  madden
  131.  * Cleaned up version of file for C++ toolkit
  132.  *
  133.  * ===========================================================================
  134.  */
  135. #endif /* !_NCBIMATH_ */