diff options
author | Steve Langasek <vorlon@debian.org> | 2005-01-10 08:53:33 +0000 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2017-02-20 00:05:30 -0800 |
commit | e33f9eb9cf5cc29c36ce2aa7e10cd0f37ae0cc8e (patch) | |
tree | abbf06041619e445f9d0b772b0d58132009d8234 /randinex.scm | |
parent | f559c149c83da84d0b1c285f0298c84aec564af9 (diff) | |
parent | 8466d8cfa486fb30d1755c4261b781135083787b (diff) | |
download | slib-e33f9eb9cf5cc29c36ce2aa7e10cd0f37ae0cc8e.tar.gz slib-e33f9eb9cf5cc29c36ce2aa7e10cd0f37ae0cc8e.zip |
Import Debian changes 3a1-4.2debian/3a1-4.2
slib (3a1-4.2) unstable; urgency=low
* Non-maintainer upload.
* Add guile.init.local for use within the build dir, since otherwise we
have an (earlier unnoticed) circular build-dep due to a difference
between scm and guile.
slib (3a1-4.1) unstable; urgency=low
* Non-maintainer upload.
* Build-depend on guile-1.6 instead of scm, since the new version of
scm is wedged in unstable (closes: #281809).
slib (3a1-4) unstable; urgency=low
* Also check for expected creation on slibcat. (Closes: #240096)
slib (3a1-3) unstable; urgency=low
* Also check for /usr/share/guile/1.6/slib before installing for guile
1.6. (Closes: #239267)
slib (3a1-2) unstable; urgency=low
* Add format.scm back into slib until gnucash stops using it.
* Call guile-1.6 new-catalog (Closes: #238231)
slib (3a1-1) unstable; urgency=low
* New upstream release
* Remove Info section from doc-base file (Closes: #186950)
* Remove period from end of description (linda, lintian)
* html gen fixed upstream (Closes: #111778)
slib (2d4-2) unstable; urgency=low
* Fix url for upstream source (Closes: #144981)
* Fix typo in slib.texi (enquque->enqueue) (Closes: #147475)
* Add build depends.
slib (2d4-1) unstable; urgency=low
* New upstream.
slib (2d3-1) unstable; urgency=low
* New upstream.
* Remove texi2html call in debian/rules. Now done upstream. Add make
html instead.
* Changes to rules and doc-base to conform to upstream html gen
* Clean up upstream makefile to make sure it cleans up after itself.
Diffstat (limited to 'randinex.scm')
-rw-r--r-- | randinex.scm | 42 |
1 files changed, 23 insertions, 19 deletions
diff --git a/randinex.scm b/randinex.scm index 19b9d81..717b306 100644 --- a/randinex.scm +++ b/randinex.scm @@ -8,7 +8,7 @@ ;1. Any copy made of this software must include this copyright notice ;in full. ; -;2. I have made no warrantee or representation that the operation of +;2. I have made no warranty or representation that the operation of ;this software will be error-free, and I am under no obligation to ;provide any services, by way of maintenance, update, or otherwise. ; @@ -22,19 +22,23 @@ ;;; Sphere and normal functions corrections from: Harald Hanche-Olsen +(require 'random) +(require 'inexact) + +;;@code{(require 'random-inexact)} +;;@ftindex random-inexact + ;;; Generate an inexact real between 0 and 1. -(define random:uniform1 - ; how many chunks fill an inexact? +(define random:uniform1 ; how many chunks fill an inexact? (do ((random:chunks/float 0 (+ 1 random:chunks/float)) (smidgen 1.0 (/ smidgen 256.0))) - ((or (= 1.0 (+ 1 smidgen)) (= 4 random:chunks/float)) + ((or (= 1 (+ 1 smidgen)) (= 4 random:chunks/float)) (lambda (state) (do ((cnt random:chunks/float (+ -1 cnt)) (uni (/ (random:chunk state) 256.0) (/ (+ uni (random:chunk state)) 256.0))) ((= 1 cnt) uni)))))) - ;;@args ;;@args state ;;Returns an uniformly distributed inexact real random number in the @@ -70,24 +74,24 @@ ;;; 1-exp(-r^2/2). This latter means that u=exp(-r^2/2) is uniformly ;;; distributed on [0,1], so r=sqrt(-2 log u) can be used to generate r. -(define *2pi (* 8 (atan 1))) - ;;@args vect ;;@args vect state ;;Fills @1 with inexact real random numbers which are independent ;;and standard normally distributed (i.e., with mean 0 and variance 1). -(define (random:normal-vector! vect . args) - (let ((state (if (null? args) *random-state* (car args))) - (sum2 0)) - (let ((do! (lambda (k x) - (vector-set! vect k x) - (set! sum2 (+ sum2 (* x x)))))) - (do ((n (- (vector-length vect) 1) (- n 2))) - ((negative? n) sum2) - (let ((t (* *2pi (random:uniform1 state))) - (r (sqrt (* -2 (log (random:uniform1 state)))))) - (do! n (* r (cos t))) - (if (positive? n) (do! (- n 1) (* r (sin t))))))))) +(define random:normal-vector! + (let ((*2pi (* 8 (atan 1)))) + (lambda (vect . args) + (let ((state (if (null? args) *random-state* (car args))) + (sum2 0)) + (let ((do! (lambda (k x) + (vector-set! vect k x) + (set! sum2 (+ sum2 (* x x)))))) + (do ((n (- (vector-length vect) 1) (- n 2))) + ((negative? n) sum2) + (let ((t (* *2pi (random:uniform1 state))) + (r (sqrt (* -2 (log (random:uniform1 state)))))) + (do! n (* r (cos t))) + (if (positive? n) (do! (- n 1) (* r (sin t))))))))))) ;;; For the uniform distibution on the hollow sphere, pick a normal |