For statistical computing and numerical methods
Explore the docs »
Report Bug · Request Feature · Reference Manual
This library is a collection of packages useful in numerical applications, each big enough to be its own package, but too small to split out into a separate ASDF system. Included are:
num=
, a comparison operator for floatssum
and l2norm
To get a local copy up and running follow these steps:
An ANSI Common Lisp implementation. Developed and tested with SBCL and CCL.
To make the system accessible to ASDF (a build facility, similar to make
in the C world), clone the repository in a directory ASDF knows about. By default the common-lisp
directory in your home directory is known. Create this if it doesn't already exist and then:
cd ~/common-lisp && \ git clone https://github.com/Lisp-Stat/numerical-utilities.git && \ git clone https://gitlab.common-lisp.net/alexandria/alexandria.git && \ git clone https://github.com/tokenrove/anaphora.git && \ git clone https://github.com/Lisp-Stat/array-operations.git && \ git clone https://github.com/Lisp-Stat/select && \ git clone https://github.com/sharplispers/let-plus.git
(asdf:clear-source-registry)
(asdf:load-system :num-utils)
If you have installed the slime ASDF extensions, you can invoke this with a comma (',') from the slime REPL.
To get the third party systems that these system may depend on, you can use a dependency manager, such as Quicklisp or CLPM Once installed, get the dependencies with either of:
(clpm-client:sync :sources "clpi") ;sources may vary
(ql:quickload :num-utils)
You need do this only once. After obtaining the dependencies, you can load the system with ASDF
as described above without first syncing sources.
The API documentation is in the docs/
directory and is available in emacs info format, PDF and HTML. You can also view the documentation online.
(nu:median '(1 2 3 4 5 6 7 8 9 10)) ; -> 11/2
Note a ratio is returned. This is a feature and Lisp-Stat leverages the Common Lisp numerical tower.
For more examples, please refer to the Reference Manual
See the open issues for a list of proposed features (and known issues).
This library is a fork of cl-num-utils. Changes include:
Although the project has been renamed to distinguish it from the original, the package names are the same and should work as a drop-in replacement.
It appears that this library was in the midst of a reorganization when released. As near as I can tell from the github history, all the files in cl-num-utils were moved to src/old/, and then selectively moved into src/ as they were cleaned up and unit tests written. Some, such as data-frame, were moved by Papp into separate projects. Several of the files in old/ could be dusted off and moved into src/ to be used. Check in data-frames project first because I think some were moved there without being removed from cl-num-utils.
There was a fair amount of code commented out by the original author. Where we have commented code, we use the block comment syntax #| ... |#
, and noted the person performing the removal. We have also added comments throughout the code to make it more readable, or to include our research notes.
Issue 1 describes a problem with the wrapped-bivariate-to-array test in tests/matrix.lisp. This fails under fiveam, but passes on clunit. I believe there to be a bug, either in fiveam or num-utils (or, possibly, clunit). The fiveam reason-arg is misleading, it will print the two values, and they are equal. However this only happens after the second call. For example, given this code
(is (num= (funcall op a b)
(funcall op (funcall convert a) b));)
"Expected ~A to be equal to ~A" (funcall op a b) (funcall op (funcall convert a) b))
The sequence
(funcall op a b)
(funcall op (funcall convert a) b)
is called twice, once as part of the test and once as part of the reason-args output. The first time, the results are different. The second time they are the same, making it appear that the result is a false negative. It is not.
This test needs to be looked into further. The test code will not win any 'most readable code of the year' awards, and the answer is buried below several layers of macro expansions, funcalls and currying.
Until this is resolved, use this function with caution.
Papp's issue #16 is no longer a problem. The functionality was moved to SELECT
(Papp's CL-SLICE
). It should have been closed but was not before Papp abandoned the library.
Development is primarily done with SBCL and CCL on MS Windows. Issue papp15 reports that generic function definitions may not work on other implementations. Please report any such problems on the Github issue tracker.
Symbol conflicts with alexandriaImporting both num-utils
and alexandria
will result in symbol conflicts. There are two solutions for this: either import only parts of num-utils
(see the packages named in each file), or shadow some symbols, e.g.
(cl:defpackage #:my-package
(:use #:cl
#:alexandria
#:num-utils)
(:shadowing-import-from #:alexandria #:mean #:variance #:median))
This is what the top-level ls-user
package does.
This system is part of the Lisp-Stat project; that should be your first stop for information. Also see the resources and community pages for more information.
Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated. Please see CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests.
Distributed under the MS-PL License. See LICENSE
for more information.
Project Link: https://github.com/lisp-stat/numerical-utilities
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4