Compile and NormalDistribution
- To: mathgroup at smc.vnet.net
- Subject: [mg15187] Compile and NormalDistribution
- From: Brett Patterson <Brett.Patterson at durham.ac.uk>
- Date: Fri, 18 Dec 1998 02:11:03 -0500
- Organization: University of Durham
- Sender: owner-wri-mathgroup at wolfram.com
Hi,
I am trying to speed up the generation of a large array of random
complex Gaussian numbers (e.g. 360 x 360).
The original code is:
<<Statistics`NormalDistribution`
gaussianArray[n_]:=
Table[Random[NormalDistribution[0.0, 1.0]]+
I Random[NormalDistribution[0.0, 1.0]],{i,n},{j, n}]]
The compiled version of the function is:
gaussianArrayC:=
Compile[{n},
Table[Random[NormalDistribution[0.0, 1.0]]+
I Random[NormalDistribution[0.0, 1.0]],{i,n},{j, n}]]
However, this does not work because of the following error:
"Random::randt:Type specification NormalDistribution[0., 1.] in
Random[NormalDistribution[0., 1.]]
should be Real, Intteger, or Complex."
It seems that the NormalDistribution Type is not being handled correctly
by Compile.
Note that the compiled function does work if I define it as:
gaussianArrayC:=
Compile[{n},
Table[Random[]+I Random[],{i,n},{j, n}]]
and the speed increase for calls with n = 64 (for example) is
considerable.
However, it obviously does not produce Gaussian deviates!
Any suggestions?
Thanks in advance,
Brett Patterson
--
======================================================================
Dr Brett A. Patterson Room 148 Astronomical
Instrumentation Group Tel: +44 191 374 2105 Department of Physics
Fax: +44 191 374 3749 University of Durham
mailto:Brett.Patterson at durham.ac.uk South Road, Durham DH1 3LE, UK
http://star-www.dur.ac.uk/~bap