-
Notifications
You must be signed in to change notification settings - Fork 47
add MAGICL:CSD-BLOCKS, define MAGICL:CSD on it, and other lisp-native routines #171
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This was referenced Jun 14, 2022
e39861e
to
b535841
Compare
This commit imports an implementation of CSD from the QUILC project, written by Juan Bello-Rivas.
Co-authored-by: Erik Davis <erik@cadlag.org>
Co-authored-by: Erik Davis <erik@cadlag.org>
This code doesn't accomplish making MAGICL completely independent of LAPACK, but it moves us closer. All tests pass in MAGICL, and all tests pass in CL-QUIL. So I'm going to merge. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This commit imports an implementation of CSD from the QUILC project,
written by Juan Bello-Rivas (@jmbr).
It also includes a lot of code for implementing other functions natively in Lisp, written by Erik Davis (@kilimanjaro). These include QR, SVD, etc.
The purpose of this is to provide a regular interface to CSD for use by other packages. We solve this by providing two functions:
csd-blocks
(which is generic) which provides block-style results to the CSD, andcsd
which provides ordinary matrices.Why expose
csd-blocks
? Both LAPACK, @jmbr, and various papers/documentation express the CSD algorithm in this way. QUILC, moreover, uses the block structure instead of the matrix structure directly. So it seems like a good idea to expose it.CSD
is also exposed, but it just callsCSD-BLOCKS
underneath.The companion PR quil-lang/quilc#828 removes CSD from QUILC.
Still needed:
random-unitary
needs QR decomposition, so we'll want a Lisp version of that...mult
in Lisp