ChangeLog.md 8.26 KB
Newer Older
1
## Changelog
2

3
Potentially breaking changes are marked with an exclamation point '!' at the begin of their description.
Sebastian Wolf's avatar
Sebastian Wolf committed
4

5
* 2017-??-?? v3.0.0
6
 * Python wrapper now stable.
7
 * ! REQUIRE macro now logs as error instead of fatal error.
Benjamin Huber's avatar
Benjamin Huber committed
8 9
 * ! All macros and preprocessor defines now use the XERUS_ prefix. The config.mk file changed accordingly.
 * ! TT::find_largest_entry and TT::dyadic_product left the TT scope.
10
 * ! Tensor::modify_diag_elements renamed to Tensor::modify_diagonal_entries for naming consistency.
11
 * Much faster solve of matrix equations Ax=b by exploiting symmetry and definiteness where possible. This directly speeds up the ALS as well.
12
 * Added a highly optimized minimal version of the ALS algorithm as xALS.
13 14
 * Added Tensor.one_norm() and one_norm(Tensor) to calculate the one norm of a Tensor.
 * Some minor bugfixes and performance improvements.
15

16 17 18 19 20 21 22 23
* 2016-06-23 v2.4.0
 * Introduced nomeclature 'mode'. Marked all functions that will be renamed / removed in v3.0.0 as deprecated.
 * Added an experimental python wrapper when 'OTHER += -DXERUS_EXPERIMENTAL_PYTHON_WRAPPER' is defined in the config file.
 * Added TT::degrees_of_freedom function to determine the dimension of the current tangent space.
 * ! Corrected a typo in the class names of the measurement sets.
 * Added constants xerus::VERSION_MAJOR, VERSION_MINOR, VERSION_REVISION and VERSION_COMMIT.
 * Improved compilation time and more forgiving default settings for warnings.

Benjamin Huber's avatar
Benjamin Huber committed
24
* 2016-04-04 v2.3.0
25
 * Added save_to_file and load_from_file functions to store and restore Tensors and TensorNetworks in/from files.
26
 * Added SVD based calculate_pseudo_inverse function to Tensor.
27
 * Added implementation for perform_trace() for sparse Tensors.
Sebastian Wolf's avatar
Sebastian Wolf committed
28
 * Fixed the pipe operator for xerus::misc::generic_exception to not destroy the type information.
29
 * Bug fix in the handling of fixed indices in TensorNetworks.
Sebastian Wolf's avatar
Sebastian Wolf committed
30
 * Several static member function now warn if their return type is not used.
31
 * Initial support for compilation with the intel ICC.
32

Benjamin Huber's avatar
Benjamin Huber committed
33
* 2016-03-11 v2.2.1
Benjamin Huber's avatar
Benjamin Huber committed
34 35
 * Added support for 32bit systems.

Sebastian Wolf's avatar
Sebastian Wolf committed
36
* 2016-03-08 v2.2.0
37 38
 * Added Sparse solve and sparse QR factorization.
 * ! Xerus now depends on the SuiteSparseQR (-lspqr) library.
39
 * TTNetwork sum now supports sparse components.
40 41
 * TTNetwork entrywise\_product now supports sparse components.
 * ! entrywise\_product (for TTNetworks) now a free function instead of static member.
Sebastian Wolf's avatar
Sebastian Wolf committed
42
 * TTNetwork entrywise\_square now supports sparse components.
43
 * Bugfix in Dense/Sparse conversion factor handling.
Sebastian Wolf's avatar
Sebastian Wolf committed
44

45
* 2016-02-10 v2.1.1
Sebastian Wolf's avatar
Sebastian Wolf committed
46 47
 * Basic support for fixed indices in TensorNetworks.
 * Readded TTNetwork constructor from DimensionTuple.
Sebastian Wolf's avatar
Sebastian Wolf committed
48 49
 * Bugfixes for TTNetwork dyadic_product.

50
* 2016-02-05 v2.1.0
Sebastian Wolf's avatar
Sebastian Wolf committed
51
 * ! fix_slate() now works correctly for TTTensors and (correctly) throws an error for TTOperators.
52
 * Several bug fixes in the handling of TTNetworks of degree zero.
Sebastian Wolf's avatar
Sebastian Wolf committed
53 54
 * Implemented the Tensor CQ function, which is now used where appropriate.
 * Added several unit tests to ensure consitent results for dense/sparse Tensors, TensorNetwork and TTNetworks.
55
 * Several Bugfixes in xerus::misc and a bugfix in TT:dyadic_product.
56

Benjamin Huber's avatar
Benjamin Huber committed
57
* 2016-01-26 v2.0.0
58
 * ! Merged FullTensor and SparseTensor into a single Tensor class.
Sebastian Wolf's avatar
Sebastian Wolf committed
59
 * Implemented several FullTensor functions also for sparse representations (modify(\_diag)_elements, fix\_slate, resize\_dimension,...)
Sebastian Wolf's avatar
Sebastian Wolf committed
60
 * ! IndexedTensor*s now considered internal.
61 62 63
 * ! Removed all support for stored IndexedTensor*s.
 * ! Reworked the IndexedTensor* index assignment.
 * ! Changed resize_dimension to allow slate insertion at the first position.
64
 * Added TTTensor::random with callback function to manipulate the singular values of all matricisations.
65 66
 * Rewrote the ALS algorithm for better readability.
 * Added fully functional (multi-site) DMRG and alternating steepest descent algorithms.
Sebastian Wolf's avatar
Sebastian Wolf committed
67
 * Support for low level factorisation calls for Tensor class.
Sebastian Wolf's avatar
Sebastian Wolf committed
68
 * Several bug fixes, including SVD factor handling, SparseTensor summation, Tensor resize_dimension, TN evaluation,....
Sebastian Wolf's avatar
Sebastian Wolf committed
69
 * Added several test cases.
70

71 72 73
* 2016-01-14 v1.5.0
 * Added the ADF algorithm for rank one measurements instead of point evaluations.
 * Parallelized the ADF algorithm using openmp (note: at this point not compatible with the replacement allocator!)
74
 * TT::random no longer uses size_t to measure the size of the tensor and no longer exceeds maximal ranks.
75
 * Fixed a bug in the ALS that caused the algorithm to always stop after one sweep if called without operator A.
76

Benjamin Huber's avatar
Benjamin Huber committed
77 78 79 80
* 2015-10-20 v1.4.2
 * The custom allocator now enforces memory alignment even if the underlying malloc does not.
 * Cannonicalized TT tensors can no longer exceed the maximal TT rank.

81
* 2015-10-14 v1.4.1
82
 * Fixed a bug with the recannonicalization of products of TTOperators.
Benjamin Huber's avatar
Benjamin Huber committed
83
 * Many improvements for the ADF algorithm for tensor completion.
Benjamin Huber's avatar
Benjamin Huber committed
84
 * Added TTTensor::ones and TTOperator::ones to create TTTensors with all entries equal to 1.
85

Benjamin Huber's avatar
Benjamin Huber committed
86
* 2015-09-09 v1.4.0
87
 * Added an implementation of the ADF algorithm.
Benjamin Huber's avatar
Benjamin Huber committed
88
 * Added a custom allocator to better handle the small allocations of Indices etc. (requires to set the corresponding option in the config.mk).
89
 * Reduced overhead (time not spent in blas) of TensorNetwork contractions.
90 91 92
 * Tensor decomposition now allow arbitrary index orders in the target as well as the source.
 * Added TN::measure(...) to perform a batch of evaluations of the network.
 * Added TN::fix_slate(...) to fix a single index to a specific value.
93
 * Added TN::reduce_representation() to trace out any full-rank edge.
Benjamin Huber's avatar
Benjamin Huber committed
94
 * Added TN::transfer_core(...) and TN::round_edge(...) analogously to TT rounding / core movement operations.
95
 * ! renamed class::construct_random to class::random and TTOperator::construct_identity to TTOperator::identity.
Benjamin Huber's avatar
Benjamin Huber committed
96
 * Added several named constructors:
97 98 99 100
  * Tensor::ones(...) to construct tensors filled with all entries equal to 1.
  * Tensor::identity(...) to construct a (sparse) tensor equal to the TTOperator::identity.
  * Tensor::dirac(...) to construct a (sparse) tensor with a single 1 at a given position and 0 everywhere else.
  * Tensor::kronecker(...) to construct a tensor that is 1 when all indices are equal and 0 otherwise.
Benjamin Huber's avatar
Benjamin Huber committed
101
 * ! misc::approx_equal now uses a relative difference (for consistency with the tensor variant xerus::approx_equal).
102
 * Several bugfixes for SparseTensors.
103
 * Several minor bugfixes (TN::draw no longer uses temporary files, span-zero indices in assignment, ...).
104

105 106 107 108 109 110 111 112 113
* 2015-07-10 v1.3.0
 * Added several retractions to allow Riemannian algorithms on TT manifolds.
 * Added the basic (Riemannian) steepest descent algorithm.
 * Added the (so far untested) CG algorithm for TT tensors.
 * ! New PerformanceData class to log stepcount, time and residual of algorithm runs.
 * New algorithm to determine the largest entry of a TT tensor.
 * Fully rewrote the contraction heuristics, now including a local search for more optimal contraction orders.
 * Several bugfixes for order-zero tensors, TT tensors of more than full rank and other rare cases.

Benjamin Huber's avatar
Benjamin Huber committed
114 115 116 117
* 2015-06-15 v1.2.1
 * entrywise_product for FullTensor and TTNetwork.
 * TensorNetworks now without extraneous factor.

Benjamin Huber's avatar
Benjamin Huber committed
118 119 120 121
* 2015-06-15 v1.2.0
 * Rank revealing QR decomposition in TTNetwork:move_core. 
 * ALS performance improvement by skipping full-rank nodes.
 * Added TensorNetwork::draw to get a graphical representation of a given tensor network.
122
 * Added algorithm DecompositionALS to approximate a FullTensor by a TTTensor.
Benjamin Huber's avatar
Benjamin Huber committed
123 124 125
 * New Quick-Start guide.
 * Several bugfixes, more consistent operator availability and much more documentation.

Sebastian Wolf's avatar
Sebastian Wolf committed
126 127 128 129 130 131 132
* 2015-06-02 v1.1.1
 * Complete documentation for Tensor, FullTensor and SparseTensor
 * Added implementation of the projection ALS
 * Fixed performance bug in logging system
 * ALS now uses energy functional for convergence testing
 * Several minor fixes

Benjamin Huber's avatar
Benjamin Huber committed
133
* 2015-06-01 v1.1.0
134
 * ! New representation for the TT tensors: all component tensors are now of degree 3 / 4 (operators).
Benjamin Huber's avatar
Benjamin Huber committed
135 136 137 138
 * TT::get_component and ::set_component functions that handle the meta data.
 * More strict ISO c++ conformity: no names starting with '__'.
 * More elaborate performance profiling.

139 140
* 2015-05-27 v1.0.2
 * Added support for Clang++
141
 * ! Cleanup of namespace structure
142
 * Several documentation fixes
143

144 145 146 147
* 2015-05-20 v1.0.1
 * fixed a major bug with the handling of shared resources in TensorNetworks
 * added TTTensor/TTOperator::chop() function
 * some minor fixes
148

149 150
* 2015-05-19 v1.0
 * first stable release