Header-oriented reference
Each public header gets its own section, synopsis, grouped APIs, and source mapping.
Official Reference
ELDA is a compact C++17 linear algebra library centered around
linalg::matrix. This documentation is organized around the public headers
in include/elda/, with a declaration block and a usage example for every
exported API entry.
Overview
ELDA provides dense matrix storage, matrix arithmetic, row and column operations, elimination routines, decompositions, characteristic polynomial and eigenvalue helpers, homogeneous transformation matrices, and vector construction utilities. The library surface is small enough to document completely, so this site treats the checked-in code as the source of truth and covers every public declaration.
Each public header gets its own section, synopsis, grouped APIs, and source mapping.
Every exported constant, method, free function, and overload includes a usage snippet.
Important implementation assumptions are documented explicitly, including mutability and exact comparisons.
3x3 worked examples are rendered as matrices directly in the browser for quick inspection.
These docs reflect the current contents of include/elda/ and
src/. They document the existing implementation behavior rather than an
idealized API contract.
Quickstart
cmake -S . -B build
cmake --build build
add_subdirectory(path/to/lin_alg_lib)
target_link_libraries(your_target PRIVATE elda)
#include <elda/linalg.hpp>
using namespace linalg;
printf "3 4 5
6 7 8
8 2 3
" | ./build/main
The demo reads a 3 x 3 matrix and prints the column vector returned by
matrix::eigenvalues().
Header Reference
Examples below assume #include <elda/linalg.hpp> and
using namespace linalg; unless the snippet states otherwise. Use the search box
to filter function cards across all headers.
Header
include/elda/linalg.hppHeader
include/elda/matrix.hppHeader
include/elda/transforms.hppHeader
include/elda/vector_utils.hpp3x3 Examples
These examples use concrete results verified from the current codebase and are rendered as matrices directly in the page.
Behavior Notes
matrix::row, matrix::col, and matrix::arr are
public. Many examples in the docs populate matrices directly through
arr.
Arithmetic and elementary row or column helpers return new matrices. Elimination
routines such as gaussian() and gauss_jordan() modify the
matrix in place.
fpg() zeros values with absolute magnitude at most EPS.
This improves printed results after arithmetic and elimination, but exact equality is
still used in several parts of the implementation.
operator==, check_upper_tri(), check_lower_tri(),
check_ortho(), and check_unitary() all rely on exact stored
values rather than tolerances.
trace(), det(), minor(),
cofactor(), adjoint(), inverse(),
char_poly(), and eigenvalues() require square matrices.
QR and eigenvalue helpers use classical Gram-Schmidt and unshifted QR iteration. They are appropriate for small real-valued workloads and learning-oriented use.
Project Layout
lin_alg_lib/
|- CMakeLists.txt
|- README.md
|- DOCUMENTATION.MD
|- FUNCTIONS.MD
|- main.cpp
|- include/
| `- elda/
| |- linalg.hpp
| |- matrix.hpp
| |- transforms.hpp
| `- vector_utils.hpp
|- src/
| |- matrix.cpp
| |- transforms.cpp
| `- vector_utils.cpp
`- docs/
|- index.html
|- styles.css
`- app.js
The documentation site is fully static. Open docs/index.html directly in a
browser; no documentation build step is required.
Author
ELDA is documented here as a project owned by Ayushmaan Kumar Verma, a Mathematics and Computing student at NIT Patna.