Coder Social home page Coder Social logo

mc-zen / matrix Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 1.0 53 KB

C++ Matrix library for dense fixed/dynamically-sized matrices.

Home Page: https://mc-zen.github.io/Matrix/

License: MIT License

C++ 99.35% CMake 0.65%
linear-algebra matrix header-only cpp

matrix's Introduction

Matrix for C++

tests license

A tiny C++20 general-purpose library for dense, fixed-size and dynamically-sized matrices with no dependencies (other than std). It makes use of C++20s concepts to enable special features such as norm for vectors and many more.

View the full documentation at https://mc-zen.github.io/Matrix/

Overview

Features:

  • intuitive syntax
  • low-overhead
  • header-only and single-header
  • fully constexpr (except where math functions like sqrt are used).
  • STL-oriented
  • Statically-sized have static memory (e.g. suited for audio development).
  • Dynamically-sized matrices are now available as well.
  • simple software design in comparison to some other matrix libs, e.g. no CRTP, virtual functions, ...
  • fully tested. Tests can be run with Catch2.

Limitations:

  • only C++20 (and up) because of heavy use of concepts and constexpr
  • this is not a linear algebra library - at the moment the library provides no linear algebra algorithms such as decomposition and solvers (exception: determinant and inverse of 2×2 and 3×3 matrices).

Supported Platforms

Since this repository uses C++20 language features, a fairly new C++ compiler is necessary.

Platform Compiler  Minimum version
Windows MSVC 14.30
Linux GCC 13
Clang 15
MacOS AppleClang 15

Classes

Class Definition
Matrix<T,m,n> Main class for m×n matrices of type T
Matrix_view<T> Matrix view class for viewing or modifying parts of a matrix like a block, row or column.
Matrix_iterator<T> Random access iterator for iterating through a contiguous array in memory (matrix data).
Matrix_stride_iterator<T> Random access iterator for iterating i.e. vertically through a contiguous array in memory.
Matrix_block_iterator<T> Bi-directional iterator for iterating through a matrix block within a bigger matrix.

matrix's People

Contributors

mc-zen avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

bhsphd

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.