rustebra 0.4.0

A hybrid no_std/alloc linear algebra crate for Rust, scaling from embedded targets to dynamic Krylov subspace solvers.
Documentation
# Two-Level Public API for Matrix Operations

## Summary

Any matrix operation with more than one available algorithm exposes two levels of public
API: a high-level function that picks an algorithm automatically, and one explicit function
per algorithm that always runs the named algorithm regardless of input.

## Scope

Applies to every matrix operation where multiple algorithms exist to compute the same
result — solving a linear system, computing a determinant, decomposing a matrix — and where
those algorithms differ in cost, numerical stability, or precondition (for example, one
algorithm requiring symmetric positive-definite input while another has no such
requirement).

## Decision

For each such operation, two entry points are published:

1. A **high-level function** (for example, a general `determinant` or `solve`) that selects
   an algorithm automatically based on observable properties of the input — size, symmetry,
   detectable positive-definiteness. Which specific algorithm runs underneath is not part of
   the function's public contract; it may change between versions without being a breaking
   change, as long as the mathematical result stays correct.
2. One **explicit algorithm function** per algorithm (for example, a cofactor-expansion
   determinant and an LU-based determinant) that always runs the named algorithm, regardless
   of what the input looks like. These functions are stable in the stronger sense: the named
   algorithm never changes underneath them.

Both levels are public and documented; neither is treated as internal or discouraged.

## Constraints

- General users who don't want to choose an algorithm must have a single, ergonomic entry
  point per operation that always returns a correct result.
- Mathematical users who need to study or rely on a specific algorithm's exact behavior must
  be able to call it by name and trust that name never silently starts running a different
  algorithm.
- The heuristics a high-level function uses to select an algorithm must be documented well
  enough that a caller can predict what will run, even though that choice is not a formal,
  version-stable guarantee.

## Status

Implemented. Operations with multiple available algorithms — determinant and solve among
them — expose both a high-level automatic entry point and named explicit-algorithm
functions.