libSparse direct solving methods and matrix arithmetic #79
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.
libSparse/wrappers.jl
contains wrappers for the classes inlibSparse
, calling the Objective-C functions with@ccall
as if they're C. This has its challenges--e.g. Julia doesn't recognize Objective-C'sos_log_error
--but so far, I've been able to work around them. I matched up the mangled and de-mangled functions via a dyld extractor and llvm-cxxfilt, as suggested on Discourse.The
AASparseMatrix{T}
struct is a wrapper for Apple'sSparseMatrix_{Float/Double}
. I've implemented the supported matrix arithmetic operations theAASparseMatrix
class:*
for Apple'sSparseMultiply
andmuladd!
for Apple'sSparseMultiplyAdd
.Likewise,
AAFactorization{T}
is a wrapper for Apple'sSparseOpaqueFactorization_{Float/Double}
. Unlike Julia, you need to explicitly construct the factorization object, and provide it the first argument tosolve
(orldiv!
). You can do things likePlaces where this could use some work:
AAFactorization
more in line with Julia'sLinearAlgebra
.