Mercurial > octave
view liboctave/external/ranlib/advnst.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/advnst.f@648dabbb4c6b |
children | 32671b14ed7b |
line wrap: on
line source
SUBROUTINE advnst(k) C********************************************************************** C C SUBROUTINE ADVNST(K) C ADV-a-N-ce ST-ate C C Advances the state of the current generator by 2^K values and C resets the initial seed to that value. C C This is a transcription from Pascal to Fortran of routine C Advance_State from the paper C C L'Ecuyer, P. and Cote, S. "Implementing a Random Number Package C with Splitting Facilities." ACM Transactions on Mathematical C Software, 17:98-111 (1991) C C C Arguments C C C K -> The generator is advanced by2^K values C INTEGER K C C********************************************************************** C .. Parameters .. INTEGER numg PARAMETER (numg=32) C .. C .. Scalar Arguments .. INTEGER k C .. C .. Scalars in Common .. INTEGER a1,a1vw,a1w,a2,a2vw,a2w,m1,m2 C .. C .. Arrays in Common .. INTEGER cg1(numg),cg2(numg),ig1(numg),ig2(numg),lg1(numg), + lg2(numg) LOGICAL qanti(numg) C .. C .. Local Scalars .. INTEGER g,i,ib1,ib2 C .. C .. External Functions .. INTEGER mltmod LOGICAL qrgnin EXTERNAL mltmod,qrgnin C .. C .. External Subroutines .. EXTERNAL getcgn,setsd C .. C .. Common blocks .. COMMON /globe/m1,m2,a1,a2,a1w,a2w,a1vw,a2vw,ig1,ig2,lg1,lg2,cg1, + cg2,qanti C .. C .. Save statement .. SAVE /globe/ C .. C .. Executable Statements .. C Abort unless random number generator initialized IF (qrgnin()) GO TO 10 WRITE (*,*) ' ADVNST called before random number generator ', + ' initialized -- abort!' CALL XSTOPX + (' ADVNST called before random number generator initialized') 10 CALL getcgn(g) C ib1 = a1 ib2 = a2 DO 20,i = 1,k ib1 = mltmod(ib1,ib1,m1) ib2 = mltmod(ib2,ib2,m2) 20 CONTINUE CALL setsd(mltmod(ib1,cg1(g),m1),mltmod(ib2,cg2(g),m2)) C C NOW, IB1 = A1**K AND IB2 = A2**K C RETURN END