version 1.9, 2011/11/21 22:19:34
|
version 1.16, 2017/06/17 11:06:25
|
Line 1
|
Line 1
|
*> \brief \b DLARUV |
*> \brief \b DLARUV returns a vector of n random real numbers from a uniform distribution. |
* |
* |
* =========== DOCUMENTATION =========== |
* =========== DOCUMENTATION =========== |
* |
* |
* Online html documentation available at |
* Online html documentation available at |
* http://www.netlib.org/lapack/explore-html/ |
* http://www.netlib.org/lapack/explore-html/ |
* |
* |
*> \htmlonly |
*> \htmlonly |
*> Download DLARUV + dependencies |
*> Download DLARUV + dependencies |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlaruv.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/dlaruv.f"> |
*> [TGZ]</a> |
*> [TGZ]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlaruv.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/dlaruv.f"> |
*> [ZIP]</a> |
*> [ZIP]</a> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlaruv.f"> |
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/dlaruv.f"> |
*> [TXT]</a> |
*> [TXT]</a> |
*> \endhtmlonly |
*> \endhtmlonly |
* |
* |
* Definition: |
* Definition: |
* =========== |
* =========== |
* |
* |
* SUBROUTINE DLARUV( ISEED, N, X ) |
* SUBROUTINE DLARUV( ISEED, N, X ) |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
* INTEGER N |
* INTEGER N |
* .. |
* .. |
Line 27
|
Line 27
|
* INTEGER ISEED( 4 ) |
* INTEGER ISEED( 4 ) |
* DOUBLE PRECISION X( N ) |
* DOUBLE PRECISION X( N ) |
* .. |
* .. |
* |
* |
* |
* |
*> \par Purpose: |
*> \par Purpose: |
* ============= |
* ============= |
Line 67
|
Line 67
|
* Authors: |
* Authors: |
* ======== |
* ======== |
* |
* |
*> \author Univ. of Tennessee |
*> \author Univ. of Tennessee |
*> \author Univ. of California Berkeley |
*> \author Univ. of California Berkeley |
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date November 2011 |
*> \date December 2016 |
* |
* |
*> \ingroup auxOTHERauxiliary |
*> \ingroup OTHERauxiliary |
* |
* |
*> \par Further Details: |
*> \par Further Details: |
* ===================== |
* ===================== |
Line 95
|
Line 95
|
* ===================================================================== |
* ===================================================================== |
SUBROUTINE DLARUV( ISEED, N, X ) |
SUBROUTINE DLARUV( ISEED, N, X ) |
* |
* |
* -- LAPACK auxiliary routine (version 3.4.0) -- |
* -- LAPACK auxiliary routine (version 3.7.0) -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- LAPACK is a software package provided by Univ. of Tennessee, -- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
* November 2011 |
* December 2016 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
INTEGER N |
INTEGER N |
Line 392
|
Line 392
|
I4 = ISEED( 4 ) |
I4 = ISEED( 4 ) |
* |
* |
DO 10 I = 1, MIN( N, LV ) |
DO 10 I = 1, MIN( N, LV ) |
* |
* |
20 CONTINUE |
20 CONTINUE |
* |
* |
* Multiply the seed by i-th power of the multiplier modulo 2**48 |
* Multiply the seed by i-th power of the multiplier modulo 2**48 |
Line 419
|
Line 419
|
* If a real number has n bits of precision, and the first |
* If a real number has n bits of precision, and the first |
* n bits of the 48-bit integer above happen to be all 1 (which |
* n bits of the 48-bit integer above happen to be all 1 (which |
* will occur about once every 2**n calls), then X( I ) will |
* will occur about once every 2**n calls), then X( I ) will |
* be rounded to exactly 1.0. |
* be rounded to exactly 1.0. |
* Since X( I ) is not supposed to return exactly 0.0 or 1.0, |
* Since X( I ) is not supposed to return exactly 0.0 or 1.0, |
* the statistically correct thing to do in this situation is |
* the statistically correct thing to do in this situation is |
* simply to iterate again. |
* simply to iterate again. |
* N.B. the case X( I ) = 0.0 should not be possible. |
* N.B. the case X( I ) = 0.0 should not be possible. |
I1 = I1 + 2 |
I1 = I1 + 2 |
I2 = I2 + 2 |
I2 = I2 + 2 |
I3 = I3 + 2 |
I3 = I3 + 2 |