1. 16 Nov, 2009 1 commit
    • Liam M. Healy's avatar
      Eliminate obsolete code · 7663933a
      Liam M. Healy authored
      Eliminate defparameter *pass-complex-scalar-as-two-reals* and
      associate comments which predate FSBV.
  2. 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.
  3. 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
  4. 26 Apr, 2009 1 commit
    • Liam Healy's avatar
      Use fsbv:defcstruct for complex, type spec (:pointer type) · 0b3847ba
      Liam Healy authored
      Define complex-float-c and complex-double-c using fsbv:defcstruct so
      that they can be passed by value.  A type specification of the form
      (:pointer type) is accepted for allocated objects passed by reference
      to foreign functions so that their values can be set and returned from
      the CL function.  This expands correctly for #'minmax, not tested
  5. 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.
  6. 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
      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.