Doxygen Source Code Documentation
cdf_07.c File Reference
#include "cdflib.h"
Go to the source code of this file.
Functions | |
double | bfrac (double *a, double *b, double *x, double *y, double *lambda, double *eps) |
Function Documentation
|
Definition at line 2 of file cdf_07.c. References a, bfrac(), brcomp(), c, p, and r. Referenced by bfrac(), and bratio().
00010 { 00011 static double bfrac,alpha,an,anp1,beta,bn,bnp1,c,c0,c1,e,n,p,r,r0,s,t,w,yp1; 00012 /* 00013 .. 00014 .. Executable Statements .. 00015 */ 00016 bfrac = brcomp(a,b,x,y); 00017 if(bfrac == 0.0e0) return bfrac; 00018 c = 1.0e0+*lambda; 00019 c0 = *b/ *a; 00020 c1 = 1.0e0+1.0e0/ *a; 00021 yp1 = *y+1.0e0; 00022 n = 0.0e0; 00023 p = 1.0e0; 00024 s = *a+1.0e0; 00025 an = 0.0e0; 00026 bn = anp1 = 1.0e0; 00027 bnp1 = c/c1; 00028 r = c1/c; 00029 S10: 00030 /* 00031 CONTINUED FRACTION CALCULATION 00032 */ 00033 n += 1.0e0; 00034 t = n/ *a; 00035 w = n*(*b-n)**x; 00036 e = *a/s; 00037 alpha = p*(p+c0)*e*e*(w**x); 00038 e = (1.0e0+t)/(c1+t+t); 00039 beta = n+w/s+e*(c+n*yp1); 00040 p = 1.0e0+t; 00041 s += 2.0e0; 00042 /* 00043 UPDATE AN, BN, ANP1, AND BNP1 00044 */ 00045 t = alpha*an+beta*anp1; 00046 an = anp1; 00047 anp1 = t; 00048 t = alpha*bn+beta*bnp1; 00049 bn = bnp1; 00050 bnp1 = t; 00051 r0 = r; 00052 r = anp1/bnp1; 00053 if(fabs(r-r0) <= *eps*r) goto S20; 00054 /* 00055 RESCALE AN, BN, ANP1, AND BNP1 00056 */ 00057 an /= bnp1; 00058 bn /= bnp1; 00059 anp1 = r; 00060 bnp1 = 1.0e0; 00061 goto S10; 00062 S20: 00063 /* 00064 TERMINATION 00065 */ 00066 bfrac *= r; 00067 return bfrac; 00068 } /* END */ |