|
19 | 19 | gamma, lgamma, digamma, erf, erfc, zeta, log1p, airyai, iceil, ifloor,
|
20 | 20 | itrunc, eps, signbit, sin, cos, tan, sec, csc, cot, acos, asin, atan,
|
21 | 21 | cosh, sinh, tanh, sech, csch, coth, acosh, asinh, atanh, atan2,
|
22 |
| - serialize, deserialize, inf, nan, hash, cbrt, rand, rand! |
| 22 | + serialize, deserialize, inf, nan, hash, cbrt, rand, rand!, randn, randn! |
23 | 23 |
|
24 | 24 | import Base.Math.lgamma_r
|
25 | 25 |
|
@@ -757,4 +757,23 @@ function rand!(r::BigRNG, A::Array{BigFloat})
|
757 | 757 | end
|
758 | 758 | rand!(A::Array{BigFloat}) = rand!(Base.GMP.DEFAULT_BIGRNG, A)
|
759 | 759 |
|
| 760 | +function randn(::Type{BigFloat}, randstate::BigRNG) |
| 761 | + z = BigFloat() |
| 762 | + ccall((:mpfr_grandom,:libmpfr), Int32, |
| 763 | + (Ptr{BigFloat}, Ptr{BigFloat}, Ptr{BigRNG}, Int32), |
| 764 | + &z, C_NULL, &randstate, ROUNDING_MODE[end]) |
| 765 | + z |
| 766 | +end |
| 767 | +randn(::Type{BigFloat}) = randn(BigFloat, Base.GMP.DEFAULT_BIGRNG) |
| 768 | +randn(::Type{BigFloat}, dims::Dims) = randn!(Array(BigFloat, dims)) |
| 769 | +randn(::Type{BigFloat}, dims::Int...) = randn!(Array(BigFloat, dims...)) |
| 770 | + |
| 771 | +function randn!(r::BigRNG, A::Array{BigFloat}) |
| 772 | + for i = 1:length(A) |
| 773 | + A[i] = randn(BigFloat, r) |
| 774 | + end |
| 775 | + A |
| 776 | +end |
| 777 | +randn!(A::Array{BigFloat}) = randn!(Base.GMP.DEFAULT_BIGRNG, A) |
| 778 | + |
760 | 779 | end #module
|
0 commit comments