Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/juanjosegarciaripoll/tensor

C++ library for numerical arrays and tensor objects and operations with them, designed to allow Matlab-style programming.
https://github.com/juanjosegarciaripoll/tensor

Last synced: about 1 month ago
JSON representation

C++ library for numerical arrays and tensor objects and operations with them, designed to allow Matlab-style programming.

Awesome Lists containing this project

README

        

DESCRIPTION
===========

This is a C++ library for numerical arrays and tensor objects and operations
with them, designed to allow Matlab-style programming. Some of the key features:

* Fundamental data structures
- Arrays of indices
- Multidimensional arrays of double precision, real and complex numbers
- Sparse matrices of real and complex numbers

* Operations
- Algebraic operations between tensors, matrices and numbers.
- Contraction among tensors (a generalization of matrix multiplication).
- Tensor reshaping, index permutation, enlarging and contracting.

* Linear algebra
- Solving systems of linear equations
- Matrix exponentiation
- Eigenvalue problems
- Few eigenvalues of sparse problems using Arpack
- Singular value decompositions

* Fast Fourier Transforms (to be done)

The Tensor library is discussed in the libtensor Google Group, currently found
here https://groups.google.com/forum/#!forum/libtensor Go to this forum for
help in configuring and installing the library.

Bug reports should be submitted using the GitHub Issues interface.

BUILD AND INSTALL
=================

Follow these steps to prepare, configure, build and install this library:

1) If you have checked out the library using a version control system (git) then
several files have to be rebuilt before moving any further. Open a terminal
and enter

./autogen.sh

This will use the autotools (autoconf, automake, libtool) to rebuild several
files, such as Makefile.in, configure, files in the m4 directory, etc.

2) Configure the library. This process detects existing software and chooses
one or more options, such as building statically linked or shared libraries,
using the Google Test library, etc. The process involves again a terminal
and typing something like

./configure --prefix=$HOME LIBS="..." CXXFLAGS="..."

Here we are using --prefix=$HOME to tell the configuration program that the
libraries are going to be installed in our home directory, under $HOME/lib
and $HOME/include, and we are passing additional options ("...") such as a
list of libraries that are needed (LIBS) and flags for the C++ compiler
(See below)

3) Build, optionally check and install the library

make
make check # optional
make install

PLATFORM SPECIFIC DETAILS
=========================

LINUX / *BSD / etc
------------------

You will need some version of the LAPACK and BLAS libraries installed.
Typically, with Debian systems there are the Atlas libraries. To tell
the tensor library that you are going to use them pass the option

LIBS="-llapack -lcblas -latlas"

to the "configure" program listed above.

MAC OS X
--------

The OS X operating system is shipped with an optimized version of the Atlas
libraries that can be used by passing the option

LIBS="-framework veclib"

to "configure"

OPTIONAL COMPONENTS
===================

Testing
-------

To test the library you will need the Google Test framework, which is
available at

http://code.google.com/p/googletest/

Documentation
-------------

Documentation is built using the Doxygen package, which is available in
most Linux-type software distributions

http://www.stack.nl/~dimitri/doxygen/

The documentation itself is built using the command "make doxygen-doc"
after "make" and before "make install"