Skip to content

Commit 08603d3

Browse files
committed
Format
1 parent 354c56d commit 08603d3

File tree

3 files changed

+28
-5
lines changed

3 files changed

+28
-5
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "ITensorBase"
22
uuid = "4795dd04-0d67-49bb-8f44-b89c448a1dc7"
33
authors = ["ITensor developers <[email protected]> and contributors"]
4-
version = "0.1.3"
4+
version = "0.1.4"
55

66
[deps]
77
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"

src/ITensorBase.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ addtags(n::IndexName, ts) = settags(n, tags(n) ∪ tagset(ts))
5454

5555
setprime(n::IndexName, plev) = @set n.plev = plev
5656
prime(n::IndexName) = setprime(n, plev(n) + 1)
57+
noprime(n::IndexName) = setprime(n, 0)
5758

5859
function Base.show(io::IO, i::IndexName)
5960
idstr = "id=$(id(i) % 1000)"
@@ -97,6 +98,7 @@ plev(i::Index) = plev(name(i))
9798
addtags(i::Index, tags) = setname(i, addtags(name(i), tags))
9899
prime(i::Index) = setname(i, prime(name(i)))
99100
Base.adjoint(i::Index) = prime(i)
101+
noprime(i::Index) = setname(i, noprime(name(i)))
100102

101103
# Interface
102104
# TODO: Overload `Base.parent` instead.
@@ -253,6 +255,7 @@ end
253255
# TODO: Use `replaceinds`/`mapinds`, based on
254256
# `replacenameddimsindices`/`mapnameddimsindices`.
255257
prime(a::AbstractITensor) = setinds(a, prime.(inds(a)))
258+
noprime(a::AbstractITensor) = setinds(a, noprime.(inds(a)))
256259

257260
include("quirks.jl")
258261

src/quirks.jl

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
# TODO: Define this properly.
22
dag(i::Index) = i
3+
dag(a::ITensor) = a
34
# TODO: Deprecate.
45
dim(i::Index) = dename(length(i))
6+
dim(a::AbstractITensor) = unname(length(a))
57
# TODO: Define this properly.
68
hasqns(i::Index) = false
79
# TODO: Deprecate.
810
itensor(parent::AbstractArray, nameddimsindices) = ITensor(parent, nameddimsindices)
911
function itensor(parent::AbstractArray, i1::Index, i_rest::Index...)
1012
return ITensor(parent, (i1, i_rest...))
1113
end
14+
# TODO: Deprecate.
15+
order(a::AbstractArray) = ndims(a)
1216

1317
# This seems to be needed to get broadcasting working.
1418
# TODO: Investigate this and see if we can get rid of it.
@@ -23,9 +27,25 @@ function onehot(iv::Pair{<:Index,<:Int})
2327
return a
2428
end
2529

26-
using LinearAlgebra: svd
30+
using LinearAlgebra: qr, svd
2731
# TODO: Define this in `MatrixAlgebra.jl`/`TensorAlgebra.jl`.
28-
function factorize(a::AbstractITensor, args...; kwargs...)
29-
U, S, V = svd(a, args...; kwargs...)
30-
return U, S * V
32+
function factorize(a::AbstractITensor, args...; tags=TagSet(), maxdim=nothing)
33+
if isnothing(maxdim)
34+
# `tags` are ignored right now.
35+
Q, R = qr(a, args...)
36+
return Q, R
37+
else
38+
error("Truncation in `factorize` not implemented yet.")
39+
U, S, V = svd(a, args...; kwargs...)
40+
return U, S * V
41+
end
3142
end
43+
44+
# TODO: Used in `ITensorMPS.jl`, decide where or if to define it.
45+
# Ideally this would just be a zero-dimensional `ITensor` wrapping
46+
# a special type, like `Zeros{UnspecifiedZero()}()`.
47+
struct OneITensor <: AbstractITensor end
48+
Base.size(::OneITensor) = ()
49+
Base.:*(::OneITensor, ::OneITensor) = OneITensor()
50+
Base.:*(::OneITensor, a::ITensor) = a
51+
Base.:*(a::ITensor, ::OneITensor) = a

0 commit comments

Comments
 (0)