LAPACK  3.6.1 LAPACK: Linear Algebra PACKage
dlarnd.f
Go to the documentation of this file.
1 *> \brief \b DLARND
2 *
3 * =========== DOCUMENTATION ===========
4 *
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
7 *
8 * Definition:
9 * ===========
10 *
11 * DOUBLE PRECISION FUNCTION DLARND( IDIST, ISEED )
12 *
13 * .. Scalar Arguments ..
14 * INTEGER IDIST
15 * ..
16 * .. Array Arguments ..
17 * INTEGER ISEED( 4 )
18 * ..
19 *
20 *
21 *> \par Purpose:
22 * =============
23 *>
24 *> \verbatim
25 *>
26 *> DLARND returns a random real number from a uniform or normal
27 *> distribution.
28 *> \endverbatim
29 *
30 * Arguments:
31 * ==========
32 *
33 *> \param[in] IDIST
34 *> \verbatim
35 *> IDIST is INTEGER
36 *> Specifies the distribution of the random numbers:
37 *> = 1: uniform (0,1)
38 *> = 2: uniform (-1,1)
39 *> = 3: normal (0,1)
40 *> \endverbatim
41 *>
42 *> \param[in,out] ISEED
43 *> \verbatim
44 *> ISEED is INTEGER array, dimension (4)
45 *> On entry, the seed of the random number generator; the array
46 *> elements must be between 0 and 4095, and ISEED(4) must be
47 *> odd.
48 *> On exit, the seed is updated.
49 *> \endverbatim
50 *
51 * Authors:
52 * ========
53 *
54 *> \author Univ. of Tennessee
55 *> \author Univ. of California Berkeley
56 *> \author Univ. of Colorado Denver
57 *> \author NAG Ltd.
58 *
59 *> \date November 2011
60 *
61 *> \ingroup double_matgen
62 *
63 *> \par Further Details:
64 * =====================
65 *>
66 *> \verbatim
67 *>
68 *> This routine calls the auxiliary routine DLARAN to generate a random
69 *> real number from a uniform (0,1) distribution. The Box-Muller method
70 *> is used to transform numbers from a uniform to a normal distribution.
71 *> \endverbatim
72 *>
73 * =====================================================================
74  DOUBLE PRECISION FUNCTION dlarnd( IDIST, ISEED )
75 *
76 * -- LAPACK auxiliary routine (version 3.4.0) --
77 * -- LAPACK is a software package provided by Univ. of Tennessee, --
78 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
79 * November 2011
80 *
81 * .. Scalar Arguments ..
82  INTEGER IDIST
83 * ..
84 * .. Array Arguments ..
85  INTEGER ISEED( 4 )
86 * ..
87 *
88 * =====================================================================
89 *
90 * .. Parameters ..
91  DOUBLE PRECISION ONE, TWO
92  parameter ( one = 1.0d+0, two = 2.0d+0 )
93  DOUBLE PRECISION TWOPI
94  parameter ( twopi = 6.2831853071795864769252867663d+0 )
95 * ..
96 * .. Local Scalars ..
97  DOUBLE PRECISION T1, T2
98 * ..
99 * .. External Functions ..
100  DOUBLE PRECISION DLARAN
101  EXTERNAL dlaran
102 * ..
103 * .. Intrinsic Functions ..
104  INTRINSIC cos, log, sqrt
105 * ..
106 * .. Executable Statements ..
107 *
108 * Generate a real random number from a uniform (0,1) distribution
109 *
110  t1 = dlaran( iseed )
111 *
112  IF( idist.EQ.1 ) THEN
113 *
114 * uniform (0,1)
115 *
116  dlarnd = t1
117  ELSE IF( idist.EQ.2 ) THEN
118 *
119 * uniform (-1,1)
120 *
121  dlarnd = two*t1 - one
122  ELSE IF( idist.EQ.3 ) THEN
123 *
124 * normal (0,1)
125 *
126  t2 = dlaran( iseed )
127  dlarnd = sqrt( -two*log( t1 ) )*cos( twopi*t2 )
128  END IF
129  RETURN
130 *
131 * End of DLARND
132 *
133  END
double precision function dlarnd(IDIST, ISEED)
DLARND
Definition: dlarnd.f:75