index.md 3.85 KB
Newer Older
1
2
---
layout: post
Ben Huber's avatar
Ben Huber committed
3
4
title: "Xerus"
subtitle: "a general purpose tensor library"
5
6
---

Ben Huber's avatar
Ben Huber committed
7
# Xerus
Ben Huber's avatar
Ben Huber committed
8
9
10
11
12
13
14
15
16
**master:** <a href="https://git.hemio.de/xerus/xerus/commits/master"><img alt="build status" src="https://git.hemio.de/xerus/xerus/badges/master/build.svg" /></a> 
<a href="https://git.hemio.de/xerus/xerus/commits/master"><img alt="coverage report" src="https://git.hemio.de/xerus/xerus/badges/master/coverage.svg" /></a> 
<a href="https://git.hemio.de/xerus/xerus/commits/master">
__breakFix1
{% include version.svp %}
__breakFix2
**development:**  <a href="https://git.hemio.de/xerus/xerus/commits/development"><img alt="build status" src="https://git.hemio.de/xerus/xerus/badges/development/build.svg" /></a> 
<a href="https://git.hemio.de/xerus/xerus/commits/development"><img alt="coverage report" src="https://git.hemio.de/xerus/xerus/badges/development/coverage.svg" /></a>

17
18
19
20
21

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.
The focus of development was the simple usability and adaptibility to any setting that requires higher order tensors or decompositions thereof. 

The key features include:
Ben Huber's avatar
Ben Huber committed
22
23
* Modern code and concepts incorporating many features of the `C++11` standard.
* Full python bindings with very similar syntax for easy transitions from and to c++.
24
25
26
27
28
29
30
31
32
33
* Calculation with tensors of arbitrary orders using an intuitive Einstein-like notation `A(i,j) = B(i,k,l) * C(k,j,l);`.
* Full implementation of the Tensor-Train decompositions (MPS) with all neccessary capabilities (including Algorithms like ALS, ADF and CG).
* Lazy evaluation of multiple tensor contractions featuring heuristics to find the most effective contraction order.
* Direct integration of the `blas` and `lapack`, as high performance linear algebra backends.
* Fast sparse tensor calculation by usage of the `suiteSparse` sparse matrix capabilities.
* Capabilites to handle arbitrary Tensor Networks.


## Getting Started

Ben Huber's avatar
Ben Huber committed
34
`xerus` can be obtained via [git](https://git.hemio.de/xerus/xerus) or as an archived download via the same link. 
35
To build and install the library you might want to check our the [Building xerus](/building_xerus) guide.
Ben Huber's avatar
Ben Huber committed
36

Ben Huber's avatar
Ben Huber committed
37
Where to go from there depends on what you want to do with `xerus` and how you learn. You can quickly get a feeling for the library
38
by checking out one of the simpler examples like [QTT](/quickstart). For most people the more elaborate [documentation](/documentation)
Ben Huber's avatar
Ben Huber committed
39
40
will likely be the place to start though. Apart from the basic usage it also explains the mindset behind many design choices and
so is adviced reading material regardless of how deep you want to delve into the library. Finally for the most hardcore developers
41
out there, there is an elaborate [doxygen documentation](/doxygen).
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

## Issues

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


## Licence and Attribution

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

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 
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/}},
	year = {2014--2017}
}
~~~