Mercurial > octave
view liboctave/external/ranlib/gennch.f @ 23434:f4d4d83f15c5
maint: rename cruft/ directory to external/
* liboctave/external: Renamed from liboctave/cruft.
*
* configure.ac: Rename XTRA_CRUFT_SH_LDFLAGS to XTRA_EXTERNAL_SH_LDFLAGS.
Rename CRUFT_DLL_DEFS to EXTERNAL_DLL_DEFS.
* install.txi: Update documentation to refer to liboctave/external.
* HACKING: Update explanation of directory tree.
* liboctave/module.mk: Update build system to include liboctave/external
* liboctave/numeric/module.mk: Update CPPFLAGS to find Faddeeva in external/
directory.
* lo-blas-proto.h, lo-lapack-proto.h: Update comments which referred to cruft
directory.
author | Rik <rik@octave.org> |
---|---|
date | Mon, 24 Apr 2017 21:03:38 -0700 |
parents | liboctave/cruft/ranlib/gennch.f@446c46af4b42 |
children |
line wrap: on
line source
REAL FUNCTION gennch(df,xnonc) C********************************************************************** C C REAL FUNCTION GENNCH( DF, XNONC ) C Generate random value of Noncentral CHIsquare variable C C C Function C C C Generates random deviate from the distribution of a noncentral C chisquare with DF degrees of freedom and noncentrality parameter C XNONC. C C C Arguments C C C DF --> Degrees of freedom of the chisquare C (Must be >= 1.0) C REAL DF C C XNONC --> Noncentrality parameter of the chisquare C (Must be >= 0.0) C REAL XNONC C C C Method C C C Uses fact that noncentral chisquare is the sum of a chisquare C deviate with DF-1 degrees of freedom plus the square of a normal C deviate with mean sqrt(XNONC) and standard deviation 1. C C********************************************************************** C .. Scalar Arguments .. REAL df,xnonc C .. C .. External Functions .. C JJV changed these to call SGAMMA and SNORM directly C REAL genchi,gennor C EXTERNAL genchi,gennor REAL sgamma,snorm EXTERNAL sgamma,snorm C .. C .. Intrinsic Functions .. INTRINSIC sqrt C .. C JJV changed abort to df < 1, and added case: df = 1 C .. Executable Statements .. IF (.NOT. (df.LT.1.0.OR.xnonc.LT.0.0)) GO TO 10 WRITE (*,*) 'DF < 1 or XNONC < 0 in GENNCH - ABORT' WRITE (*,*) 'Value of DF: ',df,' Value of XNONC',xnonc CALL XSTOPX ('DF < 1 or XNONC < 0 in GENNCH - ABORT') C JJV changed this to call SGAMMA and SNORM directly C gennch = genchi(df-1.0) + gennor(sqrt(xnonc),1.0)**2 10 IF (df.GE.1.000001) GO TO 20 C JJV case DF = 1.0 gennch = (snorm() + sqrt(xnonc))**2 GO TO 30 C JJV case DF > 1.0 20 gennch = 2.0*sgamma((df-1.0)/2.0) + (snorm() + sqrt(xnonc))**2 30 RETURN END