1. 16 Apr, 2009 1 commit
    • Liam Healy's avatar
      Tests marrays directly · 64a0b6c2
      Liam Healy authored
      Thanks to Malcolm Reynolds and Tom Hermann, lisp-unit:numerical-equal
      is now a generic function, so in the new file test-unit/augment.lisp,
      a method has been defined to work on marrays.  This now permits the
      direct comparison in tests of marrays, rather than looking at their CL
      equivalent with cl-array.  So far the only test changed is
      vector-add.
      64a0b6c2
  2. 12 Jan, 2009 1 commit
    • Liam Healy's avatar
      Redefine #'copy · 419e70d4
      Liam Healy authored
      Redefine #'copy so that it has one required argument (source) and one
      optional argument (destination).  For marrays, create a destination
      using make-marray, if one was not given, and then use the memcpy
      functions to fill the values.  For all other mobjects, copy will copy
      objects by calling one of two generic functions, #'copy-to-destination
      and #'copy-making-destination, depending on whether a destination was
      supplied.  The former is defined if a GSL _memcpy function exists.
      The latter will look for a GSL _clone function, then make a CL
      instance with the pointer returned as mpointer.  If there is no clone
      function, it will attempt to make a new object using make-load-form,
      so will fail if that method has not been defined.
      
      Added a check to defmfun that signals an error if a variable is used
      in the C arguments other than top-level that is not used in the CL
      arglist.  This should not happen and is usually an indication of a
      typo.
      419e70d4
  3. 06 Jan, 2009 1 commit
    • Liam Healy's avatar
      Optional argument defaults as GSL objects · 164cc82c
      Liam Healy authored
      Optional arguments may be specified easily as functions creating GSL
      objects, keying off the element type of the required arguments.  For
      example, the arglist
      ((matrix matrix) i
           &optional (vector :make-marray vector (dim0 matrix)))
      means that if vector is not specified, it will make a vector whose 
      element type is the same as matrix, and whose length is the number of
      rows of matrix.  This is used to proved default arguments for a number
      of functions, including the workspace argument for eigenspaces.  Some
      arguments that were required before are now optional and therefore
      placed after the required arguments.  Renamed to matrix-transpose from
      matrix-transpose-copy, and the the in-place transpose renamed to
      matrix-transpose* from matrix-transpose.  Tests on 64 bit:
      SBCL: TOTAL: 1223 assertions passed, 5 failed, 0 execution errors.
      CCL: TOTAL: 1228 assertions passed, 0 failed, 0 execution errors.
      164cc82c
  4. 04 Jan, 2009 2 commits
    • Liam Healy's avatar
      Elementwise array operations named "elt" · 4bfa337d
      Liam Healy authored
      GSL functions that operate from one corresponding array elements and
      then overwrite the first array, as well as those that operate on each
      element of an array with a scalar, are now named starting with "elt",
      as in "elt+"; formerely they started with "m".  This is to reinforce
      the idea that they are not generally a mathematical solution to
      algebraic problems, just elementwise operations.  The scalar
      operations (addition, multiplication) are methods of elt+ and elt* as
      well. Test results 64 bit:
      SBCL: TOTAL: 1223 assertions passed, 5 failed, 0 execution errors.
      CCL: TOTAL: 1228 assertions passed, 0 failed, 0 execution errors.
      4bfa337d
    • Liam Healy's avatar
      Generic functions for array addition, multiplication with scalar · 2747131e
      Liam Healy authored
      Eliminated the functions #'m+c, #'m*c, turning them into methods of
      #'m+ and #'m*, with the scalar permitted to appear either first or
      second.  New functions #'e*, #'e/ renamed from #'m*, #'m/ to emphasize
      it is elementwise multiplication and division, leaving room for a
      matrix multiplication function #'m* at some point in the future.
      It is now possible to defmfun :definition :methods with 'both as the
      specified category.  Test results 64 bit:
      SBCL: TOTAL: 1223 assertions passed, 5 failed, 0 execution errors.
      CCL: TOTAL: 1228 assertions passed, 0 failed, 0 execution errors.
      2747131e
  5. 01 Jan, 2009 1 commit
    • Liam Healy's avatar
      No 64 bit integers on 32 bit platforms · c057c7f3
      Liam Healy authored
      Both CLISP and SBCL fail when making arrays of 64 bit integers,
      despite cffi-features:no-long-long being absent for either.
      Therefore, conditionalize away these types in *array-element-types* on
      32 bit platforms in general, and conditionalize away all the 64 bit
      tests as well.  Separated out integer size check into types.lisp.
      Restored tests vector-min and vector-max which fail in SBCL for
      (signed-integer 8) and (signed-integer 16) for unknown reasons. 
      Test results:
      64 bit SBCL:   TOTAL: 1223 assertions passed, 5 failed, 0 execution errors.
      64 bit CCL:    TOTAL: 1228 assertions passed, 0 failed, 0 execution errors.
      32 bit SBCL:   TOTAL: 1069 assertions passed, 31 failed, 0 execution errors.
      32 bit CLISP:  TOTAL: 1051 assertions passed, 27 failed, 5 execution errors.
      c057c7f3
  6. 26 Dec, 2008 1 commit
    • Liam Healy's avatar
      Full use of defmobject; elimination of letm · b09dc9d2
      Liam Healy authored
      All GSL objects are full CL objects with garbage collection.  There is
      no need to manually free the associated memory.  All objects may be
      assigned in the normal CL way, e.g. let, so there is not #'letm macro
      anymore.  Everything compiles cleanly in gsll, but nothing has been
      tested.
      b09dc9d2
  7. 01 Dec, 2008 1 commit
    • Liam Healy's avatar
      GSL array making with make-array* and #m · 83cd8040
      Liam Healy authored
      GSL arrays are garbage-collected objects, and so can be made like any
      other lisp object; they do not need to be make inside a wrapper form.
      #m is a macro which makes them; it expands to a #'make-array* call.
      Examples and usage ported to this new form.  Compiled only; not tested
      yet.  No effort to port to non-native implementation yet; tests as
      expanded in the tests/ directory are not ported yet.
      83cd8040
  8. 16 Nov, 2008 1 commit
  9. 09 Nov, 2008 2 commits
    • Liam Healy's avatar
      Create vector-only and matrix-only tests · af2866c2
      Liam Healy authored
      Create vector-only and matrix-only tests, and eliminate old comments
      and test definitions.  Define outputs and returns for some vector and
      matrix functions that didn't have them.
      af2866c2
    • Liam Healy's avatar
      Complete "both" array tests · 32b971a4
      Liam Healy authored
      Complete set of tests on array operations that are defined for both
      vectors and matrices.  Added documentation to generate-tests to
      explain how it works and why it's there.  Fixed bug in
      #'expand-defmfun-generic that occured when both arrays are generated,
      due to key-args being altered.
      32b971a4
  10. 02 Nov, 2008 2 commits
    • Liam Healy's avatar
      #'array-default makes both vectors and matrices; pool numbers with correct type · f8adee82
      Liam Healy authored
      For testing, both vectors and matrices can be made with
      #'array-default, replacing #'vector-default.  The numbers in
      *double-float-pool* in are now double floats (with d0), and the
      #'make-list-from-pool coerces to the right type.  In both.lisp,
      #'set-value and #'get-value are for vectors only, not both, because
      matrices require an extra index argument.  Since these functions are
      for debugging only as the comment says, I'm writing equivalent matrix
      functions, and I'm not doing tests for them.
      f8adee82
    • Liam Healy's avatar
      Complex arrays initialize correctly; pool data 8-bit correct; new array tests · 8f43fe94
      Liam Healy authored
      Complex arrays can be initialized with either reals or complexes.  If
      initialized with reals, there must be an even number.  Now created
      complex arrays are the right length and are not always zero in the
      imaginary part.  Pool data supplied in *signed-byte-pool* is between
      ±127 inclusive, instead of ±255, which is required for making
      (signed-byte 8).  Added some tests from functions in both.lisp to
      generate-tests.lisp.
      8f43fe94
  11. 22 Oct, 2008 1 commit
    • Liam Healy's avatar
      Save test forms with save-test; generate separate files with actual tests · 0fb0effc
      Liam Healy authored
      New function #'save-test saves test forms to a special, and nothing
      more.  Function #'write-test-to-file in generate-tests.lisp will write
      it to a file, which ought to be done rarely.  I have started the task
      of moving all test definitions to save-test, in the
      special-functions.  The files generated have been checked against the
      old definitions, but they have not been checked in yet.
      0fb0effc