ELDA Logo

Official Reference

Header-first documentation for ELDA’s full public API

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.

Owner Ayushmaan Kumar Verma
Academic profile Mathematics and Computing, NIT Patna
Documentation style Static web reference

Overview

What this documentation covers

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.

Header-oriented reference

Each public header gets its own section, synopsis, grouped APIs, and source mapping.

Function-by-function examples

Every exported constant, method, free function, and overload includes a usage snippet.

Behavior notes

Important implementation assumptions are documented explicitly, including mutability and exact comparisons.

Visual examples

3x3 worked examples are rendered as matrices directly in the browser for quick inspection.

Reference scope

These docs reflect the current contents of include/elda/ and src/. They document the existing implementation behavior rather than an idealized API contract.

Quickstart

Build, link, and start using ELDA

Build the library

cmake -S . -B build
cmake --build build

Link from another CMake target

add_subdirectory(path/to/lin_alg_lib)
target_link_libraries(your_target PRIVATE elda)

Include the full API

#include <elda/linalg.hpp>
using namespace linalg;

Run the demo executable

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

Every public API, organized by header

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.hpp

Header

include/elda/matrix.hpp

Header

include/elda/transforms.hpp

Header

include/elda/vector_utils.hpp

3x3 Examples

Visual worked examples from the current implementation

These examples use concrete results verified from the current codebase and are rendered as matrices directly in the page.

3x3 arithmetic

    Behavior Notes

    Operational assumptions and implementation details

    Public storage and manual mutation

    matrix::row, matrix::col, and matrix::arr are public. Many examples in the docs populate matrices directly through arr.

    Mixed mutation model

    Arithmetic and elementary row or column helpers return new matrices. Elimination routines such as gaussian() and gauss_jordan() modify the matrix in place.

    Near-zero cleanup

    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.

    Exact comparisons

    operator==, check_upper_tri(), check_lower_tri(), check_ortho(), and check_unitary() all rely on exact stored values rather than tolerances.

    Square-only routines

    trace(), det(), minor(), cofactor(), adjoint(), inverse(), char_poly(), and eigenvalues() require square matrices.

    Educational numerical scope

    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

    Repository structure

    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

    Project ownership

    ELDA is documented here as a project owned by Ayushmaan Kumar Verma, a Mathematics and Computing student at NIT Patna.