Doxygen Source Code Documentation
ibeta.c File Reference
#include <stdio.h>#include <stdlib.h>#include <math.h>Go to the source code of this file.
| Defines | |
| #define | NJ 9 | 
| #define | NPT ((1<<NJ)*10) | 
| #define | AITKEN(x, y, z) ((x) - ((y)-(x))*((y)-(x)) / (((z)-(y))-((y)-(x))) ) | 
| #define | DMP(tbl, jt) | 
| Functions | |
| void | ibeta (double xcut, double a, double b, double *f1, double *flogx, double *flog1x) | 
| int | main (int argc, char *argv[]) | 
Define Documentation
| 
 | 
| 
 | 
| 
 | 
| Value: do{ fprintf(stderr," table " #tbl ":") ; \ for( jj=0 ; jj <= jt ; jj++ ) fprintf(stderr," %12.5g",tbl[jj]) ; \ fprintf(stderr,"\n") ; } while(0) | 
| 
 | 
| 
 Definition at line 6 of file ibeta.c. Referenced by ibeta(). | 
| 
 | 
| 
 Definition at line 9 of file ibeta.c. Referenced by ibeta(). | 
Function Documentation
| 
 | ||||||||||||||||||||||||||||
| 
 Definition at line 11 of file ibeta.c. Referenced by main(), and spmpar(). 
 00013 {
00014    int nn , ii , jj , istep ;
00015    double dx , s1,sx,s1x , x, a1=a-1.0,b1=b-1.0 ;
00016    double as1[NJ+1] , asx[NJ+1] , as1x[NJ+1] ;
00017    double bs1[NJ-1] , bsx[NJ-1] , bs1x[NJ-1] ;
00018    double cs1[NJ-3] , csx[NJ-3] , cs1x[NJ-3] ;
00019    double xab[NPT] , xabx[NPT] , xab1x[NPT] ;
00020 
00021    if( xcut <= 0.0 || xcut >= 1.0 || a <= 0.0 || b <= 0.0 ) return ;
00022 
00023    if( f1 == NULL && flogx == NULL && flog1x == NULL ) return ;
00024 
00025    dx = xcut / NPT ;
00026    for( ii=1 ; ii <= NPT ; ii++ ){
00027       x = ii*dx ;
00028 /* fprintf(stderr,"ii=%d dx=%g a1=%g b1=%g x=%g\n",ii,dx,a1,b1,x) ; */
00029       xab[ii]   = pow(x,a1) * pow(1.0-x,b1) ;
00030       xabx[ii]  = xab[ii] * log(x) ;
00031       xab1x[ii] = xab[ii] * log(1.0-x) ;
00032 
00033 /* fprintf(stderr,"ii=%d x=%g xab=%g xabx=%g xab1x=%g a1=%g b1=%g dx=%g\n",
00034         ii,x,xab[ii],xabx[ii],xab1x[ii],a1,b1,dx) ; */
00035    }
00036 
00037    for( nn=NPT,istep=1,jj=NJ ; jj >= 0 ; jj--,istep*=2,nn/=2 ){
00038       s1 = sx = s1x = 0.0 ;
00039       for( ii=istep ; ii <= NPT ; ii+=istep ){
00040         s1 += xab[ii] ; sx += xabx[ii] ; s1x += xab1x[ii] ;
00041       }
00042       dx = xcut / nn ;
00043       as1[jj] = s1*dx ; asx[jj] = sx*dx ; as1x[jj] = s1x*dx ;
00044    }
00045 
00046 #undef  AITKEN
00047 #define AITKEN(x,y,z) ((x) - ((y)-(x))*((y)-(x)) / (((z)-(y))-((y)-(x))) )
00048 
00049    for( jj=0 ; jj <= NJ-2 ; jj++ ){
00050       bs1[jj]  = AITKEN( as1[jj]  , as1[jj+1]  , as1[jj+2]  ) ;
00051       bsx[jj]  = AITKEN( asx[jj]  , asx[jj+1]  , asx[jj+2]  ) ;
00052       bs1x[jj] = AITKEN( as1x[jj] , as1x[jj+1] , as1x[jj+2] ) ;
00053    }
00054 
00055    for( jj=0 ; jj <= NJ-4 ; jj++ ){
00056       cs1[jj]  = AITKEN( bs1[jj]  , bs1[jj+1]  , bs1[jj+2]  ) ;
00057       csx[jj]  = AITKEN( bsx[jj]  , bsx[jj+1]  , bsx[jj+2]  ) ;
00058       cs1x[jj] = AITKEN( bs1x[jj] , bs1x[jj+1] , bs1x[jj+2] ) ;
00059    }
00060 
00061 #define DMP(tbl,jt)                                                    \
00062  do{ fprintf(stderr," table " #tbl ":") ;                              \
00063      for( jj=0 ; jj <= jt ; jj++ ) fprintf(stderr," %12.5g",tbl[jj]) ; \
00064      fprintf(stderr,"\n") ; } while(0)
00065 
00066    fprintf(stderr,"ibeta(xc=%g,a=%g,b=%g)\n",xcut,a,b) ;
00067    DMP(as1,NJ) ; DMP(bs1,NJ-2) ; DMP(cs1,NJ-4) ;
00068    DMP(asx,NJ) ; DMP(bsx,NJ-2) ; DMP(csx,NJ-4) ;
00069    DMP(as1x,NJ) ; DMP(bs1x,NJ-2) ; DMP(cs1x,NJ-4) ;
00070 
00071    if( f1     != NULL ) *f1     = cs1[NJ-4]  ;
00072    if( flogx  != NULL ) *flogx  = csx[NJ-4]  ;
00073    if( flog1x != NULL ) *flog1x = cs1x[NJ-4] ;
00074 
00075    return ;
00076 }
 | 
| 
 | ||||||||||||
| \** File : SUMA.c 
 Input paramters : 
 
 
 Definition at line 78 of file ibeta.c. References a, argc, ibeta(), and strtod(). 
 | 
 
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
 
 
 
 
       
	   
	   
	   
	  