Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ authors:
given-names: "Jutho"
orcid: "https://orcid.org/0000-0002-0858-291X"
title: "TensorKit.jl"
version: "0.14.11"
version: "0.15.0"
doi: "10.5281/zenodo.8421339"
date-released: "2025-07-18"
date-released: "2025-10-03"
url: "https://github.com/QuantumKitHub/TensorKit.jl"
preferred-citation:
type: article
Expand Down
4 changes: 2 additions & 2 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ This version introduces [MatrixAlgebraKit](https://github.com/QuantumKitHub/Matr
- Backend selection for factorizations - swap algorithms or implementations

#### Changed
- Factorization functions `leftorth`, `rightorth`, `tsvd`, `eig`, `eigh` deprecated in favor of MatrixAlgebraKit variants (`left_orth`, `right_orth`, `tsvd`, `eig`, `eigh`)
- Truncation strategies now use MatrixAlgebraKit names: `truncrank` (replaces `truncdim`), `truncbelow` (replaces `trunctol`)
- Factorization functions `leftorth`, `rightorth`, `tsvd`, `eig`, `eigh` deprecated in favor of MatrixAlgebraKit variants (`left_orth`, `right_orth`, `svd_compact`, `eig_full`, `eigh_full`)
- Truncation strategies now use MatrixAlgebraKit names: `truncrank` (replaces `truncdim`) and `trunctol` (replaces `truncbelow`)
- `left_orth` and `right_orth` now always output tensors with a single connecting space
- `left_orth` and `right_orth` now always have connecting space with `isdual=false`
- code formatter is now [Runic.jl](https://github.com/fredrikekre/Runic.jl)
Expand Down
43 changes: 43 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,49 @@ A Julia package for large-scale tensor computations, with a hint of category the
[aqua-img]: https://raw.githubusercontent.com/JuliaTesting/Aqua.jl/master/badge.svg
[aqua-url]: https://github.com/JuliaTesting/Aqua.jl

## Release notes for v0.15

TensorKit v0.15 consists of a (mostly internal) rewrite of the tensor factorizations to make
use of [MatrixAlgebraKit.jl](https://github.com/QuantumKitHub/MatrixAlgebraKit.jl). This
comes with a number of performance improvements, but also some breaking changes:

1. The full interface of `MatrixAlgebraKit` decompositions is now supported, such that we
now also support truncated eigenvalue decompositions via `eig_trunc` and `eigh_trunc`,
and have dedicated functions for `qr_compact`/`lq_compact`, `qr_full`/`lq_full`,
`qr_null`/`lq_null` and `left_polar`/`right_polar`.

2. The previous factorization interface is now deprecated, and users should migrate from the
deprecated functions to their MatrixAlgebraKit counterparts:
- `leftorth`/`rightorth` -> `left_orth`/`right_orth`
- `leftnull`/`rightnull` -> `left_null`/`right_null`
- `tsvd` -> `svd_compact`, `svd_full` and `svd_trunc`
- `eig` -> `eig_full` and `eig_trunc`
- `eigh` -> `eigh_full` and `eigh_trunc`

3. The truncation interface has some improvements, in particular by having support for both
absolute and relative tolerances, as well as a new `truncfilter` strategy to pass a
filter function. `trunctol`, `truncrank` and `truncerror` replace the old `truncbelow`,
`truncdim` and `truncerr`.

4. The factorizations pullbacks have been simplified, with a lot of boilerplate code removed
and out-sourced to MatrixAlgebraKit.jl

## Release notes for v0.14

TensorKit v0.14 adds the `DiagonalTensorMap` type and provides some extra index functionality:

1. The `DiagonalTensorMap` is used to represent tensors that only contain diagonal entries,
and map a single input `ElementarySpace` to the same output `ElementarySpace`. This is
also the default output type for the matrix of singular and eigenvalues.

2. `flip(t, i)` changes the duality flag of the `i`th index of `t`, in such a way that
flipping a pair of contracted indices in an `@tensor` contraction does not alter the
result

3. `insertleftunit(t, i)` and `insertrightunit(t, i)` can be used to insert a trivial unit
space to the left or right of an index `i`, whereas `removeunit(t, i)` undoes that
operation.

## Release notes for v0.13

TensorKit v0.13 brings a number of performance improvements, but also comes with a number of
Expand Down