1. 25 Oct, 2009 1 commit
    • Sumant Oemrawsingh's avatar
      Preliminary FFT functionality · 68d8dee7
      Sumant Oemrawsingh authored
      Only complex fast fourier transforms have been added. The radix-2 versions
      have been tested and found to work. The decimation-in-frequency versions have
      been added, but not tested. The mixed-radix versions only work for complex
      double-float at the moment.
      68d8dee7
  2. 20 Sep, 2009 1 commit
    • Liam Healy's avatar
      Matrix generation for linear algebra tests · 72eaac6d
      Liam Healy authored
      Matrices (and vectors) may be created from functions of the element
      indices.  This is needed to create the matrices used in testing the
      linear algebra functions.  It also can be of general use, especially
      with further generalization.  For now, there are no exported symbols
      from these definitions.
      72eaac6d
  3. 27 Aug, 2009 1 commit
  4. 24 Aug, 2009 1 commit
  5. 23 Aug, 2009 1 commit
    • Liam Healy's avatar
      Handle cflags in the grovel file · 6f287646
      Liam Healy authored
      Handle conditional cflags in the grovel file instead of modifying the
      cffi-grovel::*cc-flags* variable.  Also use strings for depends-on
      in asdf file.
      6f287646
  6. 18 Jun, 2009 1 commit
  7. 16 Jun, 2009 1 commit
  8. 15 Jun, 2009 1 commit
  9. 10 Jun, 2009 1 commit
  10. 08 Jun, 2009 1 commit
    • Liam Healy's avatar
      Grovel physical constants using new CFFI-grovel · 5386a514
      Liam Healy authored
      Stelian Ionescu has modified CFFI-grovel to generate double-float
      constants with :type double-float in constant.  GSLL has been ported
      to use that.  This requires a version of CFFI which includes the patch
      of Mon Jun 8 10:29:44 EDT 2009.  It works, but until this has a
      release number, it will stay out of the master GSLL branch.
      5386a514
  11. 06 Jun, 2009 1 commit
    • Liam Healy's avatar
      Define C structures using CFFI-grovel · 8c0e6eb7
      Liam Healy authored
      Almost all GSL structures are now defined using CFFI-grovel, which
      makes the code more robust should there be changes in GSL.  The
      exceptions are complex-float-c, complex-double-c, and
      simulated-annealing-parameters; because these structures are used by
      value, they need to be defined with fsbv:defcstruct at the present.
      8c0e6eb7
  12. 05 Jun, 2009 1 commit
    • Liam Healy's avatar
      Reader macro #m evaluates arguments · 70bd2986
      Liam Healy authored
      The reader macro #m now evaluates its arguments, so creating a vector
      with e.g. #m(pi (sqrt 3) (cos (/ pi 4))) is now possible.  Matrices
      are specified by using ^ in the list to separate rows.  GSLL now
      requires cl-utilities once again.
      70bd2986
  13. 04 Jun, 2009 1 commit
  14. 29 May, 2009 1 commit
    • Liam Healy's avatar
      Physical constants added · 722fa9e2
      Liam Healy authored
      All physical constants in gsl/gsl_const_mksa.h and
      gsl/gsl_const_cgsm.h are defined as Lisp constants and exported.  This
      requires a patch to CFFI grovel/grovel.lisp.  Since this patch has
      just been sent to the CFFI mailing list and is not generally
      available, this will remain off the master branch until the patched
      CFFI is generally available.
      722fa9e2
  15. 25 May, 2009 3 commits
    • Liam Healy's avatar
      Use CFFI-grovel to parse physical constants · a683fea3
      Liam Healy authored
      Started writing definitions of constants based on GSL's physical
      constants, using cffi-grovel.  This has not proceeded beyond the first
      definition because cffi-grovel at the present time casts everything to
      an integer.
      a683fea3
    • Liam Healy's avatar
      Use CFFI-grovel to define enumerations and programming constants · 5b255beb
      Liam Healy authored
      Instead of hardwiring GSL's #define or enum values, define them in
      init/libgsl-unix.lisp and run CFFI-grovel on them.  This has the
      advantage that if these values change in GSL, GSLL will automatically
      get the new values; also, there was an error in the 'integrate-method
      enum due to an incorrect starting value.  It has the disadvantage that
      building GSLL now requires a C compiler and some of the header (.h)
      files for GSL.  Also, it's not clear what the form for libgsl-*.lisp
      files are for non-unix OSes.
      5b255beb
    • Liam Healy's avatar
      Random number distribution functions are methods of #'sample · 09648af2
      Liam Healy authored
      The random number distribution functions have been made methods of
      #'sample, with 'source being the generator.
      09648af2
  16. 20 May, 2009 1 commit
    • Liam Healy's avatar
      Simulated annealing loaded in defsystem · 5e1b9c33
      Liam Healy authored
      Simulated annealing is now loaded with the defsystem, and its presence
      advertised in documentation/index.html.  The file
      simulated-annealing.lisp has been moved to solve-minimize-fit.
      The GSL "make check" tests have been added at the end of the file, but
      they are not added to GSLL's examples/tests yet because of how slow it
      runs.
      5e1b9c33
  17. 03 May, 2009 1 commit
    • Liam Healy's avatar
      Conditionalize FSBV · 8a08f552
      Liam Healy authored
      All source code is now conditionalized so that FSBV is optional.  If
      present, functions using complex scalars will work.  If absent, GSLL
      will compile and load correctly, and all functions except those using
      complex scalars will work.  The examples and tests are defined
      appropriately.  Documentation on FSBV dependence has been added to
      index.html.
      8a08f552
  18. 20 Apr, 2009 1 commit
    • Liam Healy's avatar
      Use fsbv:with-foreign-objects in body-expand · 8dea4bbc
      Liam Healy authored
      The setting of foreign structures will now be handled by
      fsbv:with-foreign-objects for a suitably defined fsbv:defcstruct. 
      The new definitions are loaded but GSLL will not compile completely.
      8dea4bbc
  19. 12 Apr, 2009 1 commit
    • Liam Healy's avatar
      Use FSBV; complex-types.lisp work · bf7b9bc7
      Liam Healy authored
      Use Foreign Structures By Value (FSBV) to handle passing and returning
      complex scalars defined by one of the GSL structs.  This works
      correctly for the four functions in complex.lisp, but there is
      compiler error in SBCL on set-all: "cannot use values types here",
      though the expansion looks correct.  Does not work on
      solve-quadratic-complex and solve-cubic-complex in polynomial.lisp
      because defmfun takes the structure type specified and converts it to
      :pointer automatically.  Not tried on functions that return complex
      scalars yet.
      bf7b9bc7
  20. 05 Apr, 2009 1 commit
    • Liam Healy's avatar
      Standardized names of GSL function structs · eb1420b4
      Liam Healy authored
      All defcstruct definitions for functions are in the new file
      init/callback-struct.lisp.  They all have standard name format
      beginning with "fnstruct" and have been consolidated where there were
      redundant definitions.
      eb1420b4
  21. 04 Apr, 2009 2 commits
    • Liam Healy's avatar
      Added integration methods QAWS, QAWO, QAWF; new tests for numerical integration · 2217c408
      Liam Healy authored
      Integration methods 
      integration-QAWS: adaptive integration for singular functions
      integration-QAWO: adaptive integration for oscillatory functions
      integration-QAWF: adaptive integration for Fourier integrals
      have been added in a file numerical-integration-with-tables.lisp.
      These require tables with are new mobjects.  All of the tests from GSL
      in gsl-1.11/integration/test.c and gsl-1.11/integration/tests.c for
      ported functions are now in either this file or
      numerical-integration.lisp. 
      SBCL 64: TOTAL: 1522 assertions passed, 5 failed, 0 execution errors.
      CCL 64:  TOTAL: 1525 assertions passed, 2 failed, 0 execution errors.
      2217c408
    • Liam Healy's avatar
      Eliminated dependency on cl-utilities; error for obsolete defmpar · 45ca8e88
      Liam Healy authored
      The defmobject argument 'class-slots-instance is no longer used, so
      #'callback-arg-p and the only use of with-unique-names can be
      eliminated, and thus the dependency on cl-utilities.
      
      Constant GSL functions in the library (such as minimizers) which
      were introduced in a GSL version newer than loaded now expand as
      symbol macros which signal the 'obsolete-gsl-version error.
      45ca8e88
  22. 03 Apr, 2009 1 commit
    • Liam Healy's avatar
      Number symbols sequentially; intern specials for defmfun · 86d01196
      Liam Healy authored
      Created file init/utility.lisp, which now includes
      make-symbol-cardinal and make-symbol-cardinals.  These functions in
      turn will now take a list for name, and join the symbols together with
      "-", and will optionally intern in a package.  In #'callback-args in
      callback.lisp, the args are now numbered sequentionally (still
      uninterned, but no longer gensymmed).  In #'expand-defmfun-wrap in
      defmfun.lisp, the symbols for specials "dynfn" and "cbfn" that are
      made are now interned, numbered sequentially, and named after the
      function in which they occur.  This doesn't affect the functionality
      of the functions, it is just for readability of the macroexpansion.
      Expected tests pass.
      86d01196
  23. 01 Apr, 2009 1 commit
    • Liam Healy's avatar
      Pure defmfun callbacks dynamically specified fully functional · 42e2d608
      Liam Healy authored
      Redefine the form of :callback-dynamic to be
      (dimensions (function scalarsp) ...)
      and usage in numerical-differentiation, numerical-integration, and
      monte-carlo.  Parse this variable in callbacks.lisp with #'cbd-dimensions
      and #'cbd-functions.  Fix error in wfo-declare which had gsl-function
      hardwired.  If manually defined (defconstant +success+ 0),
      all tests that pass in master also pass here:
      SBCL
      TOTAL: 1451 assertions passed, 5 failed, 0 execution errors.
      CCL
      TOTAL: 1454 assertions passed, 2 failed, 0 execution errors.
      42e2d608
  24. 31 Mar, 2009 1 commit
    • Liam Healy's avatar
      Pure-defmfun callbacks with funcallables · 74c8475e
      Liam Healy authored
      Both numerical-differentiation and numerical-integration have new
      :callbacks and the expansion calls new function
      #'make-compiled-funcallable which makes the funcallable at
      function-call time.  Spot tests of both work.  If a function passed to
      set-slot-function is nil, it will set the slot to null-pointer.
      74c8475e
  25. 29 Mar, 2009 1 commit
    • Liam Healy's avatar
      Most mobject-based callbacks ported to funcallables · 1349c73a
      Liam Healy authored
      All mobject-based callbacks now use the funcallable mechanism, except
      ODE, which has been ported but fails to compile.  All other tests
      pass.  In the event of some or all arguments are scalars and not
      arrays, #'array-element-refs will return just the argument symbol.  To
      avoid double quoting the function name when calling the object maker,
      let bind 'function-designator in #'make-funcallable-form which does
      the quoting.
      1349c73a
  26. 23 Mar, 2009 1 commit
    • Liam Healy's avatar
      Dynamic callbacks for nonlinear-least-squares · 26e3b36e
      Liam Healy authored
      Dynamic callbacks now operational for nonlinear-least-squares, test
      passes.  Callback struct slot name(s) and value(s) now properly set in
      pure function calls, even though this only affects Monte Carlo, which
      doesn't care whether the dimension is set or not.  The first optional
      argument to the mobject maker generated by #'mobject-maker can now
      have a default value, and the settingp will be added correctly.
      26e3b36e
  27. 21 Mar, 2009 1 commit
    • Liam Healy's avatar
      Dynamic callbacks for minimization-multi · 214d5642
      Liam Healy authored
      Argument 'scalarsp added at end of optional arguments to mobject
      maker; it is then passed to reinitialize-instance.  Even though it is
      not specified as an argument there, it is accepted to set the slot of
      that name.  Ported minimization-multi to dynamic callbacks; examples
      all work.  Linear least squares re-enabled in gsll.asd; no changes.
      214d5642
  28. 19 Mar, 2009 1 commit
    • Liam Healy's avatar
      Add 'scalarsp, eliminate 'callback-dynamic from callback-included · 88076763
      Liam Healy authored
      Add the slot 'scalarsp and eliminate the slot 'callback-dynamic from
      the class callback-included, and modify the defmobject uses
      accordingly.  All dynamic quantities (function, scalarsp, dimensions)
      will be set from slot values at run time.  This works for the objects
      ported so far:
       (lisp-unit:run-tests chebyshev)
       CHEBYSHEV: 1 assertions passed, 0 failed.
       (lisp-unit:run-tests roots-one)
       ROOTS-ONE: 6 assertions passed, 0 failed.
       (lisp-unit:run-tests minimization-one)
       MINIMIZATION-ONE: 2 assertions passed, 0 failed.
      Started working on roots-multi; it now compiles but does not run.
      88076763
  29. 17 Mar, 2009 1 commit
    • Liam Healy's avatar
      Map marrayp, roots-one and minimization-one work · 2a96cfe3
      Liam Healy authored
      The array-type as given in the callback-argspec is either :cvector or
      :marray.  The functions list-to-arrays and list-to-array expect
      argument 'marrayps or 'marrayp which are T or NIL.  That means I need
      to map the 'marrays argument in #'call-maybe-scalar which is :marray
      or :cvector to T/NIL.  Wrote function #'marrayp to do this.
      Example in one-dimensional-root-solver-fdf
      (roots-one-example-derivative +newton-fdfsolver+ nil)
      now works; in fact all roots-one tests pass:
      (lisp-unit:run-tests roots-one)
      ROOTS-ONE: 6 assertions passed, 0 failed.
      Ported minimization-one, tests pass:
      (lisp-unit:run-tests minimization-one)
      MINIMIZATION-ONE: 2 assertions passed, 0 failed.
      2a96cfe3
  30. 15 Mar, 2009 2 commits
    • Liam Healy's avatar
      Better support for array returns (prototype roots-one), ordering of load · 94bcffd5
      Liam Healy authored
      In roots-one.lisp, added arguments for dynamic callbacks.  This is not
      complete; 
       (roots-one-example-derivative +newton-fdfsolver+ nil)
      causes both SBCL and CCL to crash to low-level debuggers.
      These changes included using a new function list-to-arrays in
      call-maybe-scalar so that multiple arrays can be set. 
      New file callback-compile-defs has definitions that are needed at
      compile time of later files.  Added a call record-callbacks-for-class
      in defmobject, in addition to the expansion in the form, because the
      hash table *callbacks-for-classes* needs to be updated with the class
      being defined for the macro make-cbstruct-object to work.  Added
      comments above defmobject to explain some of the arguments.
      94bcffd5
    • Liam Healy's avatar
      Dynamic callback defined in mobject, works for chebyshev · d3fd192d
      Liam Healy authored
      The class 'callback-included has been simplified by replacing several
      obsolete slots with 'callbacks and 'callback-dynamic.  The :callbacks
      static information is saved to a hash table so that it may be
      retrieved when the defmfun is expanded.  The function
      make-cbstruct-object to make the callback structure
      as an &aux variable in reinitialize-instance :after form expanded in
      defmobject is now a form expansion executed at macroexpand time.
      The argument :callback-object has been added to defmfun; this will
      result in the binding of the dynfn dynamic variable on expansion.
      
      The callback arguments for chebyshev definitions have been updated and
      the example works.
      d3fd192d
  31. 14 Mar, 2009 1 commit
    • Liam Healy's avatar
      New file callback-included.lisp · 4e928c8c
      Liam Healy authored
      Separate out the file callback-included.lisp from callback.lisp to
      define callback-related subclasses of mobject and macros to make
      instances.
      4e928c8c
  32. 08 Mar, 2009 1 commit
    • Liam Healy's avatar
      Dynamic dimensions for callbacks · 00d7b1db
      Liam Healy authored
      Dimensions that have been placed into the dynamic-variable are now
      read and used for array input, as for example in Monte Carlo.
      Functions that use callbacks with scalar input and output (as for
      example in numerical-integration and numerical-differentiation) are
      now expanded directly with a funcall instead of call-maybe-scalar.
      Modifications and new definitions to set arrays partly written and
      untested, await changes to defmobject where callbacks setting array
      values exist.
      00d7b1db
  33. 16 Feb, 2009 2 commits
    • Liam Healy's avatar
      Add Mathieu functions · dd3b8e1c
      Liam Healy authored
      Added all Mathieu functions and tests that match the GSL tests.
      dd3b8e1c
    • Liam Healy's avatar
      Added generalized eigensystems and separated files · 160ffb90
      Liam Healy authored
      The generalized (symmetric and non-symmetric) eigensystem definitions
      have been added, and four separate files made for all eigensystem
      definitions.  Not too much attention has been paid to consistent or
      unified names.
      160ffb90
  34. 15 Feb, 2009 1 commit
    • Liam Healy's avatar
      Define functions and macro to help direct use of callbacks in defmfun · 3d57ef40
      Liam Healy authored
      As a way of making it easier to use something other than a
      gsl-function and with additional slots set, and to make more clear
      where specific variable names are treated specially, define and use:
        callback-arg-p
        callback-replace-arg
        callback-remove-arg
        callback-set-slots
      Also split off #'set-cbstruct which #'make-cbstruct and
      callback-set-slots both use.
      3d57ef40
  35. 12 Feb, 2009 1 commit
    • Liam Healy's avatar
      Copy to and from CL arrays · 6a685571
      Liam Healy authored
      The function #'copy will now copy contents between marrays and CL
      arrays.  The destination array can be supplied literally, or created
      by this function by specifying the desired type: when copying from a
      marray to a CL array, specify 'array; when copying from a CL array to
      a marray, specify the element type of the marray.  For example,
      (COPY
         (COPY
          (MAKE-MARRAY '(COMPLEX DOUBLE-FLOAT) :INITIAL-CONTENTS
                       '((-34.5 8.24 3.29 -8.93 34.12 -6.15)
                         (-8.93 34.12 -6.15 49.27 -13.49 32.5)
                         (49.27 -13.49 32.5 42.73 -17.24 43.31)))
          'ARRAY)
         '(COMPLEX DOUBLE-FLOAT))
      copies from the matrix-complex-double-float made in the make-marray
      form to a CL array, then copies the contents to a new
      matrix-complex-double-float.
      6a685571