1. 22 Jan, 2009 1 commit
  2. 19 Jan, 2009 2 commits
    • Liam Healy's avatar
      More callbacks take and return scalars · f15ffdda
      Liam Healy authored
      More usage of callbacks using or computing multiple quantities
      now do so on scalars because the macros in GSLL pull out the
      individual elements of foreign arrays, and accept multiple values and
      put them into the right foreign arrays.  In roots-multi,
      #'multiroot-slot takes a mobject and extracts the mpointer before
      calling the foreign slot value.  Several examples in
      solve-minimize-fit now have optional 'print-steps argument.  These
      examples are now the basis for additional tests.
      f15ffdda
    • Liam Healy's avatar
      Redefine defmcallback to provide and accept scalars from CL functions · c83788ed
      Liam Healy authored
      New definition for defmcallback will now convert C array pointers
      passed to the function by GSL into individual scalar arguments of the
      CL function, and will take multiple value returns and assign as
      elements of the return C arrays.  Applied to def-ode-functions and the
      van der Pol oscillator example.  Redefined #'maref-function-picker as
      a macro from a function, eliminating the need for an eval-when form.
      c83788ed
  3. 16 Jan, 2009 2 commits
    • Liam Healy's avatar
      Remove cl-utilities dependence · 1b22bb29
      Liam Healy authored
      GSLL is no longer dependent on cl-utilities, so remove it.  Generic
      function #'name needs to be loaded before the obsolete-gsl-version
      condition is defined, otherwise CLISP complains.  Conditionalize away
      a couple more 64 bit tests that were overlooked.
      1b22bb29
    • Liam Healy's avatar
      New directory "calculus" and small changes · 65a33d3e
      Liam Healy authored
      New directory "calculus" to hold numerical-differentiation,
      numerical-integeration, and monte-carlo.  Converted some return array
      arguments in BLAS to optional arguments.  Define a condition
      'obsolete-gsl-version to use in #'complete-definition.  Try to
      incorporate cygwin into init.lisp; needs testing by a cygwin user.
      65a33d3e
  4. 15 Jan, 2009 1 commit
    • Liam Healy's avatar
      Pass complex scalars to GSL functions · 4647599b
      Liam Healy authored
      By sending the two parts of a complex as separate doubles (complex
      double-float), or packing the two parts into a one double-float
      argument (complex single-float), it is possible to pass complex
      numbers in GSL function calls.  This is very likely to be
      non-portable, so a test is conducted and the results
      in *pass-complex-scalar-as-two-reals* determine whether defmfun does
      this translation or just creates a function that signals an error.
      The complex tests have been modified so that no longer expect an
      error:
      SBCL 64: TOTAL: 1223 assertions passed, 5 failed, 0 execution errors.
      CCL 64: TOTAL: 1228 assertions passed, 0 failed, 0 execution errors.
      This also works in 32 bit SBCL.
      4647599b
  5. 13 Jan, 2009 1 commit
    • Liam Healy's avatar
      Eliminated style warnings in SBCL · d8fd822a
      Liam Healy authored
      Removed declaration of 'indexed-functions as ignorable in
      #'with-defmfun-key-args, which now lets SBCL compile with no warnings
      of any kind.  Superficial attempt at modernizing simulated-annealing
      so that it compiles, but it still fails.
      d8fd822a
  6. 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
  7. 11 Jan, 2009 2 commits
    • Liam Healy's avatar
      Non-symmetric eigensystems, array outputs for special functions · 12c2be7e
      Liam Healy authored
      Added some functions introduced in GSL 1.9 to solve eigenvectors and
      eigenvalues for non-symmetric matrices.  These are untested as yet.
      Changed array output for special functions to be optional arguments
      which can take a size (integer) and create a marray of the right
      size.
      12c2be7e
    • Liam Healy's avatar
      Use &aux definitions in defmfun; clean up foreign-friendly definitions · 0b69f21e
      Liam Healy authored
      Add &aux to defmfuns to that e.g. array arguments can optionally take
      a size and make an array (bessel.lisp).  Remove several unused
      definitions in foreign-friendly held over from ffa.
      SBCL 64: TOTAL: 1223 assertions passed, 5 failed, 0 execution errors.
      CCL 64: TOTAL: 1228 assertions passed, 0 failed, 0 execution errors.
      0b69f21e
  8. 09 Jan, 2009 1 commit
    • Liam Healy's avatar
      Default optional/key argument values for arrays · 46260bed
      Liam Healy authored
      When used as the default optional/key argument values for arrays, the
      value symbol 'element-type is replaced with the actual element type
      for the method.  This replaces the :make-marray form.  When used as
      the default optional/key argument values for arrays, the form
      (eltcase element-type form element-type form ...)
      will be replaced by the appropriate form.  This replaces the direct
      appending of the (element-type form element-type form) list.
      SBCL same tests pass.
      46260bed
  9. 08 Jan, 2009 2 commits
    • Liam Healy's avatar
      Minor fixes; documentation update · 79a0f72c
      Liam Healy authored
      LU-decomposition now returns signum as a second value.  Remove unused
      *sizet-type*.  Update index.html with clbuild installation procedure
      provided by Glen Henshaw and how to run the tests.
      79a0f72c
    • Liam Healy's avatar
      Split defmfun.lisp; modify index.html · d2018a78
      Liam Healy authored
      Split out defmfun into three files because it was getting unwieldy.
      Small rearrangement of documentation with an update to adsf
      instructions.  64 bit tests results as before.
      d2018a78
  10. 07 Jan, 2009 1 commit
    • Liam Healy's avatar
      Add :gsl-version and :before options to defmfun · 61b839e8
      Liam Healy authored
      The option :gsl-version will allow specification of when the function
      was introduced into GSL.  If the current version preceeds that
      version, the defmfun compiles into an error signal.  The :before
      option allows the placement of code to execute prior to calling the
      foreign function.
      61b839e8
  11. 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
  12. 04 Jan, 2009 1 commit
    • 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
  13. 03 Jan, 2009 1 commit
    • Liam Healy's avatar
      New #'optional-args-to-switch-gsl-functions used by defmfun · d0b63022
      Liam Healy authored
      Instead of relying on repeated and varying checks using llkp, the new
      function #'optional-args-to-switch-gsl-functions provides a uniform
      test for determining when presence/absence of optional arguments in
      the defmfun form require a switch between different GSL functions.
      All the same test results in 64-bit CCL and SBCL.
      d0b63022
  14. 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
  15. 31 Dec, 2008 1 commit
    • Liam Healy's avatar
      Fully functional on CCL · 26ad3502
      Liam Healy authored
      After exiting the foreign call, defmfun now inserts a form to set
      C-invalid to nil for outputs, as well as CL-invalid to T.
      Conditionalize the definition of native-pointer to native, because
      it's only used on native implementations and its definition in CCL was
      causing a spurious warning.  Removed defmfun expansion examples
      because there are plenty of examples available now.  From scratch,
      gsll and gsll-tests compiles and runs cleanly on CCL with no warnings
      or errors, and all 1208 tests pass.
      26ad3502
  16. 30 Dec, 2008 1 commit
  17. 29 Dec, 2008 3 commits
    • Liam Healy's avatar
      Better support for non-native implementations · c01366d6
      Liam Healy authored
      Testing with Clozure reveals more details on the stack overflow
      problem than what CLISP reveals.  This is fixed by using #'slot-value
      instead of #'cl-array in  #'copy-c-to-cl and #'copy-cl-to-c.
      Non-complex arrays were not handled correctly in
      #'copy-array-from-pointer; fixed.  There is a dependency of
      permutation and combination on the definition of #'data-class-name
      through defmfun.  Test results:
      CCL: TOTAL: 1143 assertions passed, 52 failed, 3 execution errors.
      CLISP: TOTAL: 996 assertions passed, 149 failed, 11 execution errors.
      SBCL: TOTAL: 1208 assertions passed, 0 failed, 0 execution errors.
      (But only the second time it's run in SLIME.)
      Variable *print-contents* to disable printing of marray contents in
      print-object; this is helpful for debugging.
      c01366d6
    • Liam Healy's avatar
      Port to non-native implementation and CLISP · b3c65d75
      Liam Healy authored
      Make functional for non-native CL implementation, with allocation of C
      arrays and correct copying between CL and C sides.  Testbed for this
      is CLISP, but CLISP has several problems which may be a problem with
      the GSLL code or may be in CLISP:
       - need to set sys::*inhibit-floating-point-underflow*
       - CLISP doesn't see defconstant defined when it's used in the same file
       - many tests give "Program stack overflow" error and debugging
          procedure not clear
       - failure on amd64 bit platform
      b3c65d75
    • Liam Healy's avatar
      GSL arrays created by GSL functions · 38ddfa1a
      Liam Healy authored
      Made the generic function #'contents-from-pointer that takes a pointer
      to a GSL struct and produces a list of the contents suitable for the
      :initial-contents argument to #'make-marray.  Added an argument
      :from-pointer to #'make-marray that then creates a new marray with the
      same contents.  Some functions in solve-minimize-fit return a pointer
      to a GSL vector with double-floats.  Copying in this way is necessary
      because GSL has malloced the data in a non-CL place.  Sometimes, this
      results in the copying of data whose only further use will be to
      extract a pointer to pass to another GSL function.  Added a method
      to #'mpointer that permits directly passing a pointer, but this isn't
      useful for arrays because there are many element types so the
      functions have been defined as methods.
      38ddfa1a
  18. 28 Dec, 2008 2 commits
  19. 27 Dec, 2008 3 commits
    • Liam Healy's avatar
      Updated tests; all pass · 64fea6a9
      Liam Healy authored
      Fixes to some definitions 
      lognormal, discrete: use #'mpointer
      lu: new syntax for making array
      quasi: order of arguments fixed in make-quasi-random-number-generator
      sorting: syntax to make combination
      All tests have been regenerated because syntax for arrays etc. has
      changed.  Visually inspected that results match previous check in.
      64fea6a9
    • Liam Healy's avatar
      New function #'mpointer replaces #'generator · e88a5593
      Liam Healy authored
      New function #'mpointer replaces #'generator for random functions.
      e88a5593
    • Liam Healy's avatar
      Set mpointer vlaue, show relevant .h file; non-int return for reinitialize-instance · 8a0ac730
      Liam Healy authored
      In defmobject, set the mpointer value if #'allocate is being called.
      For each file that defines a defmobject, I put a comment at the top
      showing the relevant GSL header file.  For generators and quasi, the
      (re)initializing function returns void and not an :int, so that is
      changed in the defmobject definition, which now permits a list of two
      elements in initialize-suffix, with the second element indicating the
      :c-return.
      8a0ac730
  20. 26 Dec, 2008 4 commits
    • Liam Healy's avatar
      Calling mobjects with #'mpointer, generic function #'name · 297c08b2
      Liam Healy authored
      GSL functions that take GSL objects as arguments must have #'mpointer
      called on each argument.  Created a generic function #'name and
      changed all the *-name (or name-*) functions that acted on mobjects to
      this function.
      297c08b2
    • 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
    • Liam Healy's avatar
      New class foreign-array, new names: marray, make-marray, mobject.lisp · 7c66d57b
      Liam Healy authored
      New class foreign-array represents foreign (C) arrays, without GSL or
      mobject superclass.  New class name 'marray was 'gsl-data,
      representing arrays in GSL.  These objects are made by #'make-marray,
      formerely #'make-array*.  New file names: init/mobject.lisp was
      init/gsl-objects.lisp and data/marray.lisp was data/data.lisp.
      7c66d57b
    • Liam Healy's avatar
      Permit alternate origin of mpointer; #'clone · 38d9c4f4
      Liam Healy authored
      Redesign #'defmobject so that a new method #'allocate is defined that
      calls the standard GSL allocate function for each object.  Shrink the
      initialize-instance :after method to call #'allocate if the mpointer
      isn't given, and then set the finalizer.  This way, an :mpointer made
      by something other than the allocate function may be supplied to the
      make-instance, and the object will be made correctly.  This is used by
      #'clone functions in histogram and random number generators.  Not
      compiled or tested, but macroexpansions look right.
      38d9c4f4
  21. 25 Dec, 2008 1 commit
  22. 24 Dec, 2008 1 commit
    • Liam Healy's avatar
      GSL object makers with mixed arguments · adbbbbcd
      Liam Healy authored
      GSL objects made with defmobject and that have use at least one
      argument in some way for both initialization and reinitialization, or
      for using functions of those arguments, are accomodated with an
      optional argument 'arglists-function to defmobject.  This should be a
      function that produces three arglists: for the maker, the
      initialization method, and the reinitialization method.  The order of
      arguments generated for other cases is now preserved with :from-end in
      #'variables-used-in-c-arguments.  Examples for interpolation and
      acceleration (lookup), still commented out.
      adbbbbcd
  23. 22 Dec, 2008 2 commits
    • Liam Healy's avatar
      Merge from master · d310adfd
      Liam Healy authored
      Merged in minor changes from master.
      d310adfd
    • Liam Healy's avatar
      New class mobject, new hierarchy, clean up files · 9b588763
      Liam Healy authored
      Redefine 'mobject from 'gsl-object.  The class 'gsl-data in data.lisp
      is now a subclass of it, and does not explicitly have the mpointer
      slot, because mobject does.  Adapted #'defmobject to work with objects
      that have no "setter" (initialization).  This expands correctly for
      basis-splines (no setter) and hankel (setter).  The basis-splines
      defintions rely on the new mobjects.
      9b588763
  24. 16 Dec, 2008 1 commit
  25. 15 Dec, 2008 2 commits
    • Liam Healy's avatar
      Prototype defmobject · ed5ce113
      Liam Healy authored
      In gsl-objects, define a prototype defmobject which defines:
       - the class for the gsl object
       - initialize-instance :after method to correspond to GSL
        "alloc" and attach the finalizer,
       - define reinitialize-instance :after method to correspond to a setter
        or intialize in GSL,
       - define a make-<class-name> function that will be the customary user
        interface, and will call make-instance and possibly
        reinitialize-instance if defined.
      Worked up example in hankel.lisp.  This compiles successfully and
      looks correct, but has not been tested.
      ed5ce113
    • Liam Healy's avatar
      d207414c
  26. 14 Dec, 2008 1 commit
    • Liam Healy's avatar
      Changes to defmfun to permit method qualifiers and &key arguments · 92b0b413
      Liam Healy authored
      Add :qualifier argument to defmfun, used when methods are defined to
      allow qualifiers such as :after or :before.  Permit &key arguments.
      Check the :after argument to defmfun for usage of argument variables
      to prevent them from being declared ignored.  Note:  This uses
      stupid-code-walk-find-variables, and is, well, stupid.  These changes
      are all designed to permit the definition of #'initialize-instance and
      #'reinitialize-instance methods for GSL objects.
      92b0b413