Skip to content

boostorg/ublas

develop
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
.ci
July 12, 2020 15:21
January 23, 2021 20:08
September 14, 2002 09:26
September 16, 2014 11:44
September 12, 2021 12:23

Boost Linear and Multilinear Algebra Library

Language License Documentation Wiki Mailing List Discussions Gitter Contributor Covenant

Windows Linux Apple MacOS Clang Sanitizer Clang Tidy Codecov

Boost.uBlas is a header-only library and part of the Boost C++ libraries. It provides a set of basic linear and multilinear algebra operations with tensors, matrices and vectors. uBLAS is documented at boost.org or in docs. Simple examples of the tensor extension is provided by the wiki page.

Simple Example

#include <boost/numeric/ublas/tensor.hpp> 
#include <iostream>

int main()
{
  using namespace boost::numeric::ublas::index;
  using tensor  = boost::numeric::ublas::tensor_dynamic<float>;
  auto ones     = boost::numeric::ublas::ones<float>{};

  tensor A = ones(3,4,5);
  tensor B = ones(4,6,3,2);

  tensor C = 2*ones(5,6,2) + A(_i,_j,_k)*B(_j,_l,_i,_m) + 5;
  
  // Matlab Compatible Formatted Output
  std::cout << "C=" << C << ";" << std::endl;
}

Requirements

  • Boost.uBlas requires a C++20 compatible compiler
    • gcc version >= 10.x.x
    • clang version >= 10.x.x
    • msvc version >= 14.28
  • Unit-tests require Boost.Test

Discussions and Questions

Contribution

Directories

Name Purpose
doc documentation
examples example files
include headers
test unit tests
benchmarks timing and benchmarking