Added flvector-copy (with tests and docs).

This commit is contained in:
Will M. Farr 2010-09-16 17:34:42 -05:00 committed by Matthew Flatt
parent 7ec8835bc4
commit beb2175456
3 changed files with 22 additions and 1 deletions

View File

@ -9,6 +9,7 @@
->fl fl->exact-integer
flvector? flvector make-flvector
flvector-length flvector-ref flvector-set!
flvector-copy
flreal-part flimag-part make-flrectangular
in-flvector for/flvector for*/flvector shared-flvector make-shared-flvector)
@ -83,4 +84,9 @@
#:when (< i len))
(flvector-set! v i (begin body ...))
(add1 i))
v))))))
v))))))
(define (flvector-copy flv)
(for/flvector #:length (flvector-length flv)
((x (in-flvector flv)))
x))

View File

@ -1096,6 +1096,10 @@ Sets the inexact real number in slot @racket[pos] of @racket[vec]. The
first slot is position @racket[0], and the last slot is one less than
@racket[(flvector-length vec)].}
@defproc[(flvector-copy (v flvector?)) flvector?]{
Returns a fresh copy of @racket[v].}
@defproc[(in-flvector (v flvector?)) sequence?]{
Produces a sequence that gives the elements of @scheme[v] in order.

View File

@ -61,4 +61,15 @@
(test (flvector 2.0 3.0 4.0) 'for/flvector-many-body flv2)
(test (flvector 3.0 4.0 5.0) 'for/flvector-length-many-body flv3))
;; flvector-copy test
(let ((v (flvector 0.0 1.0 2.0 3.0)))
(let ((vc (flvector-copy v)))
(test (flvector-length v) 'flvector-copy (flvector-length vc))
(for ((vx (in-flvector v))
(vcx (in-flvector vc)))
(test vx 'flvector-copy vcx))
(flvector-set! vc 2 -10.0)
(test 2.0 'flvector-copy (flvector-ref v 2))
(test -10.0 'flvector-copy (flvector-ref vc 2))))
(report-errs)