home *** CD-ROM | disk | FTP | other *** search
- stbeta (n,m,x,h,s)
-
- /* this function computes the density function df = x**(m-1)* */
- /* (1-x)**(n-1)/b(m,n) and cumlative function of beta distribution. */
-
- int m,n;
- float x,*h,*s;
-
- {
-
- int i,ii;
- float fm,fn,fi,fs,h1,h2,hh,s1,s2,fs1,fs2;
- extern double pow();
-
- fn = n;
- fm = m;
- *s = pow(x,fm)/fm;
- fs = 1.;
-
- for(i = 1; i <= 1000; i++)
- {
- fi = i;
- fs = fs * (fn - fi);
- fs = fs / fi;
- ii=i/2;
- if((ii*2) == i) hh = 1.;
- else hh = -1.;
- hh = hh * pow(x,(fm + i))/(fm + fi);
- hh = hh * fs;
- *s = *s + hh;
- if((fn - fi) == 0.) break;
- }
- s1 = 1./fm;
- fs1 = 1.;
-
- for(i = 1; i <= 1000; i++)
- {
- fi = i;
- fs1 = fs1 * (fn - fi);
- fs1 = fs1 / fi;
- ii=i/2;
- if((ii*2) == i) h1 = 1.;
- else h1 = -1.;
- h1 = h1/(fm + fi);
- h1 = h1 * fs1;
- s1 = s1 + h1;
- if ((fn - fi) == 0.) break;
- }
- *s = *s / s1;
- s2 = pow(x,(fm - 1.));
- fs2 = 1;
-
- for(i = 1; i <= 1000; i++)
- {
- fi = i;
- fs2 = fs2 * (fn - fi);
- fs2 = fs2 / fi;
- ii=i/2;
- if((ii*2) == i) h2 = 1.;
- else h2 = -1.;
- h2 = h2 * pow(x,(fm + fi - 1.));
- h2 = h2 * fs2;
- s2 = s2 + h2;
- if ((fn - fi) == 0.) break;
- }
- *h = s2 / s1;
- }