Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

cdf_48.c File Reference

#include "cdflib.h"

Go to the source code of this file.


Defines

#define hln2pi   0.91893853320467274178e0
#define ncoef   10

Functions

double dstrem (double *z)

Define Documentation

#define hln2pi   0.91893853320467274178e0
 

#define ncoef   10
 


Function Documentation

double dstrem double *    z
 

Definition at line 2 of file cdf_48.c.

References devlpl(), dlngam(), dstrem(), and ftnstop().

Referenced by dbetrm(), and dstrem().

00003 {
00004 /*
00005 **********************************************************************
00006      double dstrem(double *z)
00007              Double precision Sterling Remainder
00008                               Function
00009      Returns   Log(Gamma(Z))  -  Sterling(Z)  where   Sterling(Z)  is
00010      Sterling's Approximation to Log(Gamma(Z))
00011      Sterling(Z) = LOG( SQRT( 2*PI ) ) + ( Z-0.5 ) * LOG( Z ) - Z
00012                               Arguments
00013      Z --> Value at which Sterling remainder calculated
00014            Must be positive.
00015                   DOUBLE PRECISION Z
00016                               Method
00017      If Z >= 6 uses 9 terms of series in Bernoulli numbers
00018      (Values calculated using Maple)
00019      Otherwise computes difference explicitly
00020 **********************************************************************
00021 */
00022 #define hln2pi 0.91893853320467274178e0
00023 #define ncoef 10
00024 static double coef[ncoef] = {
00025     0.0e0,0.0833333333333333333333333333333e0,
00026     -0.00277777777777777777777777777778e0,0.000793650793650793650793650793651e0,
00027     -0.000595238095238095238095238095238e0,
00028     0.000841750841750841750841750841751e0,-0.00191752691752691752691752691753e0,
00029     0.00641025641025641025641025641026e0,-0.0295506535947712418300653594771e0,
00030     0.179644372368830573164938490016e0
00031 };
00032 static int K1 = 10;
00033 static double dstrem,sterl,T2;
00034 /*
00035      ..
00036      .. Executable Statements ..
00037 */
00038 /*
00039     For information, here are the next 11 coefficients of the
00040     remainder term in Sterling's formula
00041             -1.39243221690590111642743221691
00042             13.4028640441683919944789510007
00043             -156.848284626002017306365132452
00044             2193.10333333333333333333333333
00045             -36108.7712537249893571732652192
00046             691472.268851313067108395250776
00047             -0.152382215394074161922833649589D8
00048             0.382900751391414141414141414141D9
00049             -0.108822660357843910890151491655D11
00050             0.347320283765002252252252252252D12
00051             -0.123696021422692744542517103493D14
00052 */
00053     if(*z <= 0.0e0) ftnstop("Zero or negative argument in DSTREM");
00054     if(!(*z > 6.0e0)) goto S10;
00055     T2 = 1.0e0/pow(*z,2.0);
00056     dstrem = devlpl(coef,&K1,&T2)**z;
00057     goto S20;
00058 S10:
00059     sterl = hln2pi+(*z-0.5e0)*log(*z)-*z;
00060     dstrem = dlngam(z)-sterl;
00061 S20:
00062     return dstrem;
00063 #undef hln2pi
00064 #undef ncoef
00065 } /* END */
 

Powered by Plone

This site conforms to the following standards: