Skip to content
Snippets Groups Projects
Contents

    The SVL vector & matrix package, version 1.5.

    SVL provides 2-, 3- and 4-vector and matrix types, as well as
    arbitrarily-sized vectors and matrices, and various useful functions
    and arithmetic operators.

    SVL is free for commercial and non-commercial use; see the LICENSE file
    for redistribution conditions. (These apply only to the source code.
    Binaries may be freely redistributed, no strings attached.)

Author

    Andrew Willmott, ajw+svl@cs.cmu.edu
    Please send me any suggestions/comments/bug fixes you have.

History

    Briefly: SVL, and its more complex cousin, VL, have their roots in
    an attempt replace the various (inevitably heavily-macroized)
    vector/matrix packages used by the members of the CMU graphics group
    with a single C++ one, so that people could share code more easily.
    SVL makes heavy use of inlines to achieve performance equal to that
    of the C macros and functions it replaced.

To Make

    Running 'make' with no arguments will list possible architectures to
    compile for. The makefiles should work with most makes that have the
    include directive, but try using gmake if something goes wrong.

    If your architecture is not listed, copy and then modify the config file
    in the makefiles directory that's closest to what you need.

    To install, set the DEST variable appropriately and 'make install'.
    DEST defaults to /usr/local.

    E.g., to install into /usr on a linux machine:
        make DEST=/usr linux install
    from this directory.

To Use

    #include svl/SVL.h, and link with -lsvl. To use in debug mode, add the
    switch "-DVL_DEBUG" to your compile line, and link with -lsvl.dbg.  See
    the documentation for more information.

Documentation

    Run your favourite web browser with file:doc/svl.html

Changes

    1.4     Fixed problem with SVLgl.h -- had some wrappers for OpenGL calls that
                don't actually exist(!)
            Fixed bad memory problem with Mat::SetSize
            Makefile for OSX, split sunos/solaris

    1.3.2   Fixed minor MSVC warnings
            Added windows packaging
    1.3.1   Sunday 11/03/01
            Reordered initializers, eliminated signed/unsigned comparisons
            Fixed make clean problem
            Irix CC is warning that 'Mat2::*' is being called before its inline
              definition, but appears to be on crack as the inline '*' is
              defined before the xform() that calls it.
            Fixed afs-lib dependency for afs build
    1.3     Sunday 11/03/01
            Split off from VL 1.3. All VL-dependent code and type
              parameterization macros removed to make code more understandable.
            Fix for the C++ "standard" no longer allowing stack temporaries to
              be passes as non-const refs.  (Fixing this for VL requires more
              significant changes, so it's proved easier to fork SVL at this
              point for the sake of simplicity.)
            Renamed files, general cleanups.
            Added ">>" operators for Vec and Mat.
            Disallowed resize of a vector reference. (This caused more bugs
              than it was worth.)
            Removed all asserts checking that the return value of 'new' is
              not zero. The C++ "standard" has been changed so that new
              instead throws an exception in this situation.
            Added option to use memcpy for general vector copies: VL_USE_MEMCPY.
              It seems that nowadays, on Intel processors at least, using
              memcpy is faster than loops for most cases. See note in Vec.cc.
            Changed the packaging to match the current vl/gcl scheme.
            Updated afs-setup rule to ensure SVLConfig.h winds up in the
            architecture-dependent lib directory.
    1.2     Release to match VL 1.2.
    1.1.3   Fixed some windows compile issues under VC++.
    1.1.2   Added comments about the Real, Vec, etc. types to VL.h
    1.1.1   Fixed problem with += operators and gcc under linux.
    1.1     Added oprod operator, irix n32 CC support, changed makefiles & afs
            support, eliminated most g++ warnings.