HELP NEWDFLOATARRAY                             David Young
                                                November 1994
                                                revised July 2003

LIB *NEWDFLOATARRAY provides two procedures which make and recognise
packed arrays of double-precision floats. These are suitable for passing
to external procedures that expect such arrays. In addition, a vector
class for the arrayvectors is defined.

newdfloatarray(bounds_list, element_init) -> float_array    [procedure]
    The arguments are as for *newarray. The second is optional.

olddfloatarray(tag, bounds_list, element_init) -> byte_array
    The last two arguments are as above, with element_init optional.

    The tag argument is an identifier such as a word or integer. If
    olddfloatarray is called twice with the same tag, the arrays
    returned may share storage. This can reduce garbage collection, and
    this procedure should be used in preference to newdfloatarray for
    any array which is only needed temporarily. See *oldarray for more
    details.

isdfloatarray(array) -> boolean                             [procedure]
    Returns <true> if array is an array with a packed double-precision
    floating point arrayvector, <false> otherwise. An array for which
    <true> is returned could have been created with, for example,
    newdfloatarray, array_of_double (see *EXTERNAL), newfloatarray from
    the *VEC_MAT package (with popdprecision <true>), or some other
    similar procedure.

A vector class with dataword dfloatvec is defined. This means that the
constant dfloatvec_key and the procedures isdfloatvec, consdfloatvec,
initdfloatvec, destdfloatvec, subscrdfloatvec and fast_subscrdfloatvec
are defined and made available. See REF *DEFSTRUCT for an explanation
of what these do, or REF *INTVEC for a description of the equivalent
procedures for a different vector class.

--- $popvision/help/newdfloatarray
--- Copyright University of Sussex 2003. All rights reserved. ----------
