Ma86
Adds the ma86 algorithm.
The wrapper is slightly different than the existing ma97 one. I personally think it's cleaner, keeping the wrappers around the ccalls looking nearly identical to the C functions, and then creating a few convenience methods to call those. If you like this, I can submit another PR that updates the ma97 interface to be similar. I personally found the ma97 wrapper a bit confusing since it used different names and call signatures from the C wrapper. We can keep the existing methods to not break any existing code, or simply deprecate them.
As a quick summary, the proposed API for Ma86 looks like this (as detailed in the docstring):
ma86 = Ma86(A) # automatically converts to lower triangular
HSL.factor!(ma86)
x = copy(b)
HSL.solve!(ma86, x)
x = HSL.solve(ma86, b)
Or
ma86 = Ma86(A)
x = copy(b)
HSL.factorsolve!(ma86, x)
x = HSL.factorsolve(ma86, b)
Or a wrapper around the LinearAlegbra methods:
ma86 = Ma86(A)
x = ma86 \ b
x = copy(b)
ldiv!(ma86,x)
@bjack205 Many thanks. Could you please remove the commits that have already been merged, remove the merge commits?