- Jan 08, 2009
-
-
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.
-
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.
-
- Jan 07, 2009
-
-
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.
-
- Jan 06, 2009
-
-
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.
-
- Jan 04, 2009
-
-
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.
-
- Jan 03, 2009
-
-
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.
-
- Jan 01, 2009
-
-
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.
-
- Dec 31, 2008
-
-
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.
-
- Dec 30, 2008
-
-
Liam Healy authored
Several functions had incorrect :inputs and/or :outputs, which caused them to fail on non-native implementations. BLAS2 and BLAS3 tests did not properly initialize all arrays. Now 1187 tests pass in CCL.
-
- Dec 29, 2008
-
-
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.
-
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
-
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.
-
- Dec 28, 2008
-
-
Liam Healy authored
Split off the class definition for foreign-array into its own file along with applicable definitions. Make permutations and combinations direct subclasses of both foreign-array and marray, but not subclasses of vectors. All these classes now have initialize-instance :after methods that allocate and set the pointers and finalizers. All tests pass.
-
Liam Healy authored
Fixed several errors that only were present for #-native implementations (i.e. not SBCL). It is not yet complete for non-native arrays. It now compiles completely in CLISP but crashes immediately with a SIGSEGV on amd64 platforms. This is apparently due to this bug: http://sourceforge.net/tracker/?func=detail&atid=101355&aid=2292928&group_id=1355
-
- Dec 27, 2008
-
-
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.
-
Liam Healy authored
New function #'mpointer replaces #'generator for random functions.
-
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.
-
- Dec 26, 2008
-
-
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.
-
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.
-
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.
-
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.
-
- Dec 25, 2008
-
-
Liam Healy authored
Defined make-load-form method for data. For histogram and random number generators, old code has been removed. Nothing has been compiled.
-
- Dec 24, 2008
-
-
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.
-
- Dec 22, 2008
-
-
Liam Healy authored
Merged in minor changes from master.
-
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.
-
- Dec 16, 2008
-
-
Liam Healy authored
In the defmobject expansion, export the make-<class> symbol, include keywords in call to make-instance, add a docstring.
-
- Dec 15, 2008
-
-
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.
-
Liam Healy authored
-
- Dec 14, 2008
-
-
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.
-
- Dec 08, 2008
-
-
Liam Healy authored
A somewhat comprhensive attempt to make sure :inputs, :outputs, and :return arguments in defmfuns match what the function is expecting and will return, so that non-native implementations will work correctly for copying, and native ones will work correctly for pinning. The :return argument now defaults to :outputs in most circumstances.
-
- Dec 01, 2008
-
-
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.
-
- Nov 29, 2008
-
-
Liam Healy authored
Use :pointer for arguments to GSL functions instead of gsl-matrix-c. Function #'cholesky-solvex had the wrong argument name.
-
Liam Healy authored
Redefine #'alloc-gsl-struct as a generic function and define a method specifically for combinations. Define #'native-pointer in defmfun.lisp with a new function #'native-pointer-protect made from its body left in data.lisp, so that now floating-point and mathematical can be compiled and loaded as defined in the asd file. Use :pointer for foreign argument types instead of gsl-vector-c.
-
- Nov 28, 2008
-
-
Liam Healy authored
Native arrays are now completely dynamic, i.e., they are garbarge collected and there is no need for any kind of wrapper, because the with-pinned-objects is wrapped at the defmfun level. Most tests pass on SBCL, but there are still a number that fail. The GSL parts are always present; there is potentially unnecessary allocation of all GSL-required structs at creation time, which might merit some investigation for a more just-in-time creation procedure. Potential problems on non-native implementations completely uninvestigated.
-
- Nov 17, 2008
-
-
Liam Healy authored
Started in file init/analysis.lisp some definitions that will aid in gauging how much of GSL GSLL covers. It will not normally be loaded (and depends on port system which is not required for GSLL) because it is mainly used by developers. It is not yet finished. Hash size for *gsl-symbol-equivalence* increased to reflect actual number of symbols present when GSLL is loaded. Improved documentation.
-
- Nov 16, 2008
-
-
Liam Healy authored
Renamed conditions in init/conditions.lisp and elsewhere to be more lisp like; e.g. EDOM is not 'input-domain. All tests except one pass.
-
Liam Healy authored
Tests are now separated from examples and defined in a new system gsll-tests. Change name of condition 'input-error from 'EDOM.
-
Liam Healy authored
By incorporating a few definitions modified from Tamas Papp's FFA directly into GSLL, there is no dependence anymore on FFA separately. With the conversion of a few definitions, the dependency on iterate has therefore been eliminated also. This compiles without errors or warnings on SBCL.
-
- Nov 12, 2008
-
-
Liam Healy authored
To make terminology consistent, the "C standard" form of type, also what I call "CFFI" form, is called that instead of "FFA" in some places. Specifically, #'cl-cffi is renamed from #'cl-ffa and now the name matches the already-existing #'cffi-cl.
-
- Nov 09, 2008
-
-
Liam Healy authored
Defined a complete set of BLAS1 tests for all element types. The duplicate Givens function and the "modified" Givens rotations, which are not explained in the GSL documentation, are excluded.
-