Learn to Use ITensor

main / changelog

Change Log (C++)

Version 3.1.10 (Aug 25, 2021)

Version 3.1.9 (Aug 3, 2021)

This release adds support for writing and reading most ITensor objects to HDF5 files compatibly with the Julia version of ITensor. Complex-valued ITensors are not yet supported but will be soon.

Version 3.1.8 (Jul 10, 2021)

Version 3.1.7 (Feb 8, 2021)

Version 3.1.6 (Nov 6, 2020)

Version 3.1.5 (Oct 17, 2020)

Version 3.1.4 (Oct 12, 2020)

Version 3.1.3 (May 11, 2020)

Bug fixes and improvements:

Version 3.1.2 (Apr 28, 2020)

New features:

Bug fixes and improvements:

Version 3.1.1 (Dec 13, 2019)

Version 3.1.0 (Nov 20, 2019)

This update to ITensor speeds up calculations involving block sparse ITensors by a considerable amount, especially when the number of different blocks is large (or equivalently the block sizes are small compared to the over index dimensions).

This version also introduces an optimization where ITensor data is not initialized to all zero when it is about to be immediately overwritten, say as the result of a contraction operation.

New features added since v3.0.0:

Version 3.0.0 (May 15, 2019)

This major update to ITensor features a number of changes to the design.

Index objects now carry up to four "tag" strings instead of a name or IndexType as in version 2. These tags are useful for many tasks, including selecting a particular Index from a set, or preventing two Index objects with the same ID from being contracted.

The IQIndex and IQTensor classes have been removed, and are now just Index or ITensor objects which carry extra quantum number block information. Similarly IQMPS and IQMPO have been removed, and one can use just MPS and MPO instead. This change streamlines much of the design, letting us turn many template functions into regular functions. Importantly, it fixes a number of issues and awkward design aspects of site set objects.

QN objects now carry small strings naming each of their sectors, allowing QNs with different sectors to still be sensibly combined. This allows one to define different QNs locally and still use them together globally within the same algorithm or code.

Finally, the move to version 3.0.0 brings a raft of many other small redesigns, such as deprecating many class methods in favor of free functions; better and more general names for various functions; more consistent interfaces across similar functions; improvements to MPO and MPS algorithms to make them work for a broader range of inputs; and many other similar improvements.

For help upgrading an existing code to version 3, see the upgrade guide.

To move to version 3 if you have already cloned ITensor, you have to switch to the v3 branch. To do so, use the commands
git pull
git checkout v3

Major Breaking Changes

General changes

Changes to Index class

Changes to IndexSet class

Changes to ITensor functions

Changes to MPS and MPO functions

Changes to applyMPO, nmultMPO and DMRG

Changes to SiteType and SiteSets

Version 2.1.1 (Aug 8, 2017)

Feature improvements

Bug Fixes

Version 2.1.0 (Jun 1, 2017)

Version 2.0.11 (Sep 8, 2016)

Version 2.0.10 (Jun 19, 2016)

Version 2.0.9 (Jun 8, 2016)

Version 2.0.8 (May 24, 2016)

Version 2.0.7 (May 2, 2016)

Version 2.0.6 (Apr 27, 2016)

Version 2.0.5 (Apr 25, 2016)

Version 2.0.4 (Apr 18, 2016)

Version 2.0.3 (Apr 11, 2016)

Version 2.0.2 (Apr 2, 2016)

Version 2.0.1 (Mar 30, 2016)

This version fixes a few bugs:

This version also includes a new mapprime function which takes an arbitrary number of arguments of the form Index,plevold,plevnew (meaning replace the Index with prime level plevold with prime level plevnew) or of the form IndexType,plevold,plevnew (same but for any Index of that IndexType). For example,

auto T = ITensor(i,prime(j,2),k);

Now T's index i will have prime level 3 and index j will have prime level 1.

Version 2.0.0 (Mar 25, 2016)

Warning: this version contains many breaking changes; see the version 2 transition guide.

Version 2.0 of ITensor is a major update to the internals of the ITensor and IQTensor classes. Tensors now store their data in "storage objects" which can have arbitrary data layouts. The code to manipulate tensor storage deals with the different storage types through a dynamic multiple dispatch design, revolving around overloads of the function doTask(TaskType,...) where TaskType is a "task object" saying which task should be carried out (contraction, addition, mutiplication by a scalar, etc.).

Major changes:

Other changes:

Version 1.3.0 (Oct 29, 2015)

For better compatibility with the upcoming version 2.0 release, this version introduces a new file layout so that users have the option of including header files such as dmrg.h using the code: #include "itensor/mps/dmrg.h" The itensor/mps/ prefix in this include will become mandatory in version 2.0. This new layout improves readability, and moves away from a more complex build system where header files were copied to the include/ folder (which is still done but only for backwards compatibility).

Other changes:

Version 1.2.4 (Sep 30, 2015)

Both ITensor and IQTensor now support the following element access methods, where I1, I2, ... are Index objects (or IQIndex objects in the case of IQTensor):

T.set(I1(n1),I2(n2),..., x); //set element to x,
                             //can be a Real or Cplx scalar

T.real(I1(n1),I2(n2),...) //return element as real number
                          //throws if non-zero imag part

T.cplx(I1(n1),I2(n2),...) //return element as complex number

Version 1.2.3 (Sep 23, 2015)

Version 1.2.2 (Sep 17, 2015)

Version 1.2.1 (Aug 20, 2015)

Version 1.2.0 (Aug 13, 2015)

New features:

Bug fixes:

Version 1.1.1 (May 18, 2015)

Bug fixes:

Version 1.1.0 (May 16, 2015)

Major design changes:

Major new features:

Bug fixes:

Other improvements:

Version 1.0.5 (Oct 7, 2014)

Bug fixes:

Version 1.0.4 (Oct 2, 2014)

Bug fixes:

Version 1.0.0 (May 28, 2014)

Warning: this version contains many breaking changes.

Major breaking changes:

Major new features:

Other major changes:

Other breaking changes:

Version 0.2.4 (April 24, 2014)

New features:

Bug fixes and maintenance:

Version 0.2.3 (January 21, 2014)

New features:

Bug fixes and maintenance:

Version 0.2.2 (November 11, 2013)

Version 0.2.1 (November 6, 2013)

New features:

Internal improvements:

Bug fixes:

Version 0.2.0 (October 22, 2013)

Interface improvements:

Internal improvements:

Bug fixes:

Version 0.1.1 (August 17, 2013)

Major bug fixes:

Internal improvements:

Version 0.1.0 (July 16, 2013)


Back to Main