home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / math / cephes / cprob / pdtr.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-17  |  2.4 KB  |  182 lines

  1. /*                            pdtr.c
  2.  *
  3.  *    Poisson distribution
  4.  *
  5.  *
  6.  *
  7.  * SYNOPSIS:
  8.  *
  9.  * int k;
  10.  * double m, y, pdtr();
  11.  *
  12.  * y = pdtr( k, m );
  13.  *
  14.  *
  15.  *
  16.  * DESCRIPTION:
  17.  *
  18.  * Returns the sum of the first k terms of the Poisson
  19.  * distribution:
  20.  *
  21.  *   k         j
  22.  *   --   -m  m
  23.  *   >   e    --
  24.  *   --       j!
  25.  *  j=0
  26.  *
  27.  * The terms are not summed directly; instead the incomplete
  28.  * gamma integral is employed, according to the relation
  29.  *
  30.  * y = pdtr( k, m ) = igamc( k+1, m ).
  31.  *
  32.  * The arguments must both be positive.
  33.  *
  34.  *
  35.  *
  36.  * ACCURACY:
  37.  *
  38.  * See igamc().
  39.  *
  40.  */
  41. /*                            pdtrc()
  42.  *
  43.  *    Complemented poisson distribution
  44.  *
  45.  *
  46.  *
  47.  * SYNOPSIS:
  48.  *
  49.  * int k;
  50.  * double m, y, pdtrc();
  51.  *
  52.  * y = pdtrc( k, m );
  53.  *
  54.  *
  55.  *
  56.  * DESCRIPTION:
  57.  *
  58.  * Returns the sum of the terms k+1 to infinity of the Poisson
  59.  * distribution:
  60.  *
  61.  *  inf.       j
  62.  *   --   -m  m
  63.  *   >   e    --
  64.  *   --       j!
  65.  *  j=k+1
  66.  *
  67.  * The terms are not summed directly; instead the incomplete
  68.  * gamma integral is employed, according to the formula
  69.  *
  70.  * y = pdtrc( k, m ) = igam( k+1, m ).
  71.  *
  72.  * The arguments must both be positive.
  73.  *
  74.  *
  75.  *
  76.  * ACCURACY:
  77.  *
  78.  * See igam.c.
  79.  *
  80.  */
  81. /*                            pdtri()
  82.  *
  83.  *    Inverse Poisson distribution
  84.  *
  85.  *
  86.  *
  87.  * SYNOPSIS:
  88.  *
  89.  * int k;
  90.  * double m, y, pdtr();
  91.  *
  92.  * m = pdtri( k, y );
  93.  *
  94.  *
  95.  *
  96.  *
  97.  * DESCRIPTION:
  98.  *
  99.  * Finds the Poisson variable x such that the integral
  100.  * from 0 to x of the Poisson density is equal to the
  101.  * given probability y.
  102.  *
  103.  * This is accomplished using the inverse gamma integral
  104.  * function and the relation
  105.  *
  106.  *    m = igami( k+1, y ).
  107.  *
  108.  *
  109.  *
  110.  *
  111.  * ACCURACY:
  112.  *
  113.  * See igami.c.
  114.  *
  115.  * ERROR MESSAGES:
  116.  *
  117.  *   message         condition      value returned
  118.  * pdtri domain    y < 0 or y >= 1       0.0
  119.  *                     k < 0
  120.  *
  121.  */
  122.  
  123. /*
  124. Cephes Math Library Release 2.0:  April, 1987
  125. Copyright 1984, 1987 by Stephen L. Moshier
  126. Direct inquiries to 30 Frost Street, Cambridge, MA 02140
  127. */
  128.  
  129. #include "mconf.h"
  130.  
  131. double pdtrc( k, m )
  132. int k;
  133. double m;
  134. {
  135. double v;
  136. double igam();
  137.  
  138. if( (k < 0) || (m <= 0.0) )
  139.     {
  140.     mtherr( "pdtrc", DOMAIN );
  141.     return( 0.0 );
  142.     }
  143. v = k+1;
  144. return( igam( v, m ) );
  145. }
  146.  
  147.  
  148.  
  149. double pdtr( k, m )
  150. int k;
  151. double m;
  152. {
  153. double v;
  154. double igamc();
  155.  
  156. if( (k < 0) || (m <= 0.0) )
  157.     {
  158.     mtherr( "pdtr", DOMAIN );
  159.     return( 0.0 );
  160.     }
  161. v = k+1;
  162. return( igamc( v, m ) );
  163. }
  164.  
  165.  
  166. double pdtri( k, y )
  167. int k;
  168. double y;
  169. {
  170. double v;
  171. double igami();
  172.  
  173. if( (k < 0) || (y < 0.0) || (y >= 1.0) )
  174.     {
  175.     mtherr( "pdtri", DOMAIN );
  176.     return( 0.0 );
  177.     }
  178. v = k+1;
  179. v = igami( v, y );
  180. return( v );
  181. }
  182.