Diff for /capa/capa51/pProj/ranlib.c between versions 1.1 and 1.2

version 1.1, 1999/09/28 21:26:21 version 1.2, 2000/02/22 18:19:02
Line 48  S10: Line 48  S10:
 S20:  S20:
     if(!(min(aa,bb) > 1.0)) goto S100;      if(!(min(aa,bb) > 1.0)) goto S100;
 /*  /*
      Alborithm BB       Algorithm BB
      Initialize       Initialize
 */  */
     if(qsame) goto S30;      if(qsame) goto S30;
Line 436  S20: Line 436  S20:
 S30:  S30:
     return gennf;      return gennf;
 }  }
   
 float gennor(float av,float sd)  float gennor(float av,float sd)
 /*  /*
 **********************************************************************  **********************************************************************
Line 458  float gennor(float av,float sd) Line 459  float gennor(float av,float sd)
 **********************************************************************  **********************************************************************
 */  */
 {  {
 static float gennor;  float  gennor;
   float  tmp_f;
   
       tmp_f = snorm();
       
       gennor = sd*tmp_f+av;
       return (gennor);
   }
   
   float capa_gennor(double *num_d, float av,float sd)
   /*
   **********************************************************************
        float gennor(float av,float sd)
            GENerate random deviate from a NORmal distribution
                                 Function
        Generates a single random deviate from a normal distribution
        with mean, AV, and standard deviation, SD.
                                 Arguments
        av --> Mean of the normal distribution.
        sd --> Standard deviation of the normal distribution.
                                 Method
        Renames SNORM from TOMS as slightly modified by BWB to use RANF
        instead of SUNIF.
        For details see:
                  Ahrens, J.H. and Dieter, U.
                  Extensions of Forsythe's Method for Random
                  Sampling from the Normal Distribution.
                  Math. Comput., 27,124 (Oct. 1973), 927 - 937.
   **********************************************************************
   */
   {
   float  gen_num;
   float  tmp_f;
   
     gennor = sd*snorm()+av;      tmp_f = snorm();
     return gennor;      
       gen_num = sd*tmp_f+av;
       /* printf("SNORM()=%f,GENNOR()=%f,%f*%f+%f\n",tmp_f,gen_num,sd,tmp_f,av); */
       *num_d = (double)gen_num;
       
       gen_num = (float)37.358341;
       return (gen_num);
 }  }
   
   
 void genprm(long *iarray,int larray)  void genprm(long *iarray,int larray)
 /*  /*
 **********************************************************************  **********************************************************************
Line 1300  float ranf(void) Line 1341  float ranf(void)
 */  */
 {  {
 static float ranf;  static float ranf;
   long    tmp_l;
   double  tmp_d;
 /*  /*
      4.656613057E-10 is 1/M1  M1 is set in a data statement in IGNLGI       4.656613057E-10 is 1/M1  M1 is set in a data statement in IGNLGI
       and is currently 2147483563. If M1 changes, change this also.        and is currently 2147483563. If M1 changes, change this also.
 */  */
     ranf = ignlgi()*4.656613057E-10;      tmp_l = ignlgi();
       tmp_d = (double)tmp_l * (double)4.656613057E-10;
       ranf = (float)tmp_d;
       /* printf("RANF()=%f\n",ranf); */
     return ranf;      return ranf;
 }  }
   float capa_ranf(void)
   /*
   **********************************************************************
        float ranf(void)
                   RANDom number generator as a Function
        Returns a random floating point number from a uniform distribution
        over 0 - 1 (endpoints of this interval are not returned) using the
        current generator
        This is a transcription from Pascal to Fortran of routine
        Uniform_01 from the paper
        L'Ecuyer, P. and Cote, S. "Implementing a Random Number Package
        with Splitting Facilities." ACM Transactions on Mathematical
        Software, 17:98-111 (1991)
   **********************************************************************
   */
   {
     float ran_f;
     long  my_ran;
     double my_doub;
   /*
        4.656613057E-10 is 1/M1  M1 is set in a data statement in IGNLGI
         and is currently 2147483563. If M1 changes, change this also.
   */
       my_ran = ignlgi();
       /* printf("MY_ignlgi=%ld -- first time\n",my_ran); */
       /* ran_f = my_ran * 4.656613057E-10; */
       
       my_doub = (double)my_ran * (double)4.656613057E-10;
       printf("MY_ranf in double=%.15g -- first time\n",my_doub);
       ran_f = (float)my_doub;
       return (ran_f);
   }
   
 void setgmn(float *meanv,float *covm,long p,float *parm)  void setgmn(float *meanv,float *covm,long p,float *parm)
 /*  /*
 **********************************************************************  **********************************************************************

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>