mainpage.md 3.21 KB
Newer Older
Fuchsi*'s avatar
Fuchsi* committed
1 2 3 4
# xerus - a general purpose tensor library    {#mainpage}

## Introduction

5
The `xerus` library is a general purpose library for numerical calculations with higher order tensors, Tensor-Train Decompositions / Matrix Product States and general Tensor Networks.
6
The focus of development was the simple usability and adaptibility to any setting that requires higher order tensors or decompositions thereof. 
Fuchsi*'s avatar
Fuchsi* committed
7

8
The key features include:
Sebastian Wolf's avatar
Sebastian Wolf committed
9
* Modern code and concepts incorporating many features of the new `C++11` standard.
Fuchsi*'s avatar
Fuchsi* committed
10
* Calculation with tensors of arbitrary orders using an intuitive Einstein-like notation `A(i,j) = B(i,k,l) * C(k,j,l);`.
Fuchsi*'s avatar
Fuchsi* committed
11
* Full implementation of the Tensor-Train decompositions (MPS) with all neccessary capabilities (including Algorithms like ALS, ADF and CG).
12
* Lazy evaluation of multiple tensor contractions featuring heuristics to find the most effective contraction order.
Sebastian Wolf's avatar
Sebastian Wolf committed
13
* Direct integration of the `blas` and `lapack`, as high performance linear algebra backends.
14
* Fast sparse tensor calculation by usage of the `suiteSparse` sparse matrix capabilities.
Sebastian Wolf's avatar
Sebastian Wolf committed
15
* Capabilites to handle arbitrary Tensor Networks.
Fuchsi*'s avatar
Fuchsi* committed
16 17 18

## Version History

19
We released our first stable version 1.0 in May 2015 and are currently at version 2.2.1. It can be obtained via [git](https://git.hemio.de/xerus/xerus) or as an archived download via the same link.
Sebastian Wolf's avatar
Sebastian Wolf committed
20
The current development version is also available in the same git repository (branch 'development') and it might include more features than the latest stable release, but be adviced that these development versions are particularly bad documented and might change drastically from one day to the next.
Fuchsi*'s avatar
Fuchsi* committed
21 22 23 24

## Getting Started

There are a number of tutorials to get you started using the `xerus` library.
25
* [Building xerus](@ref md_building_xerus) - instruction on how to build the library iteself and your first own program using it.
Fuchsi*'s avatar
Fuchsi* committed
26
* [Quick-Start guide](_quick-_start-example.html) - a short introduction into the basic `xerus` functionality.
27
* [TT Tensors](_t_t-_tensors_01_07_m_p_s_08-example.html) - using the MPS or Tensor-Train decomposition.
Fuchsi*'s avatar
Fuchsi* committed
28
* [Debugging](@ref md_tut_debugging) - using `xerus`'s capabilities to debug your own application.
Fuchsi*'s avatar
Fuchsi* committed
29 30 31

## Issues

32
Should you have any problems with the library do not hesitate to contact us at [contact[at]libxerus.org](mailto:contact[at]libxerus.org) or describe your problem in the [issuetracker](https://git.hemio.de/xerus/xerus/issues).
Fuchsi*'s avatar
Fuchsi* committed
33

34 35 36

## Licence and Attribution

37 38
The `xerus` library is published under the AGPL v3.0. With proper attribution you are thus allowed to freely use and modify the source code but if you distribute your software including the `xerus`
library (or you provide a service based on this library) you have to provide the full source code under a compatible licence. For more information see the [AGPL](http://www.gnu.org/licenses/agpl-3.0.html).
39

40
If this library proved useful in your scientific research we would be grateful for any contributions to the source code and citations. As there is no related article yet, a corresponding bibtex 
41 42 43 44 45 46
entry might look as follows
~~~
@Misc{xerus,
	author = {Huber, Benjamin and Wolf, Sebastian},
	title = {Xerus - A General Purpose Tensor Library},
	howpublished = {\url{https://libxerus.org/}},
47
	year = {2014--2017}
48 49
}
~~~