pounce-linalg 0.3.0

Linear algebra primitives for POUNCE (port of Ipopt's src/LinAlg): BLAS-1, Vector and Matrix abstractions, dense vectors/matrices, compound vectors/matrices, expansion and scaling matrices, triplet storage, triplet→CSC conversion.
Documentation
  • Coverage
  • 31.44%
    116 out of 369 items documented0 out of 345 items with examples
  • Size
  • Source code size: 291.27 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 4.17 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 3s Average build duration of successful builds.
  • all releases: 4s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • jkitchin/pounce
    12 2 3
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • jkitchin

pounce-linalg

Linear algebra primitives for POUNCE. Port of Ipopt's src/LinAlg/.

Internal crate. Like upstream, POUNCE uses an object-oriented vector / matrix layer over concrete dense and structured types, so the algorithm-side code can talk to compound iterates without knowing the underlying storage.

What's in it

  • TraitsVector, Matrix, SymMatrix: the abstract surface every concrete type implements (IpVector.hpp, IpMatrix.hpp, IpSymMatrix.hpp).
  • DenseDenseVector, DenseGenMatrix, DenseSymMatrix with companion *Space factories.
  • CompoundCompoundVector, CompoundMatrix, CompoundSymMatrix: block-structured iterates, used heavily by the IPM (x, s, λ, ν, z_L, z_U live in a single CompoundVector).
  • StructuredDiagMatrix, ExpansionMatrix, IdentityMatrix, ZeroMatrix, SumMatrix, ScaledMatrix, TransposeMatrix, LowRankUpdateSymMatrix, MultiVectorMatrix.
  • Sparse tripletsGenTMatrix, SymTMatrix (COO storage), TripletToCsrConverter for handing matrices to sparse linear solvers.
  • BLAS-1blas1 module with hand-rolled inner loops; no system BLAS dependency.

Why an OO layer?

The IPM never instantiates a raw 𝐱 ∈ ℝⁿ — it operates on a compound iterate with substructure that downstream operators (e.g. the augmented KKT system, line-search expansion, scaling) need to know about. The Vector / Matrix traits, with VectorCache / MatrixCache keyed on the upstream Tag machinery (see pounce-common), let strategies operate on iterates without touching storage details.

License

EPL-2.0.