Why @printf at the end is not printing anything for the following ?
Note iTensors is a package. So you might ignore the code.

using ITensors
using Printf
function ITensors.op(::OpName"expτSS", ::SiteType"S=1/2", s1::Index, s2::Index; τ)
h =
1 / 2 * op(“S+”, s1) * op(“S-”, s2) +
1 / 2 * op(“S-”, s1) * op(“S+”, s2) +
op(“Sz”, s1) * op(“Sz”, s2)
return exp(τ * h)
end
function main(; N=10, cutoff=1E-8, δτ=0.1, beta_max=2.0)
s = siteinds(“S=1/2”, N; conserve_qns=true)
gates = ops([(“expτSS”, (n, n + 1), (τ=-δτ / 2,)) for n in 1:(N - 1)], s)
append!(gates, reverse(gates))
rho = MPO(s, “Id”) ./ √2
terms = OpSum()
for j in 1:(N - 1)
terms += 1 / 2, “S+”, j, “S-”, j + 1
terms += 1 / 2, “S-”, j, “S+”, j + 1
terms += “Sz”, j, “Sz”, j + 1
end
H = MPO(terms, s)
for β in 0:δτ:beta_max
energy = inner(rho, H)
@printf (“β = %.2f energy = %.8f\n”, β, energy)
rho = apply(gates, rho; cutoff)
rho = rho / tr(rho)
end
return nothing
end

yashi
April 7, 2022, 5:59am
#2
Hi @_SACHIN

Welcome to Julia

It’s always good idea to

post a minimal working example
put your code in code block
post errors you get by running the mwe
post your expectations
The following code worked on my Julia 1.7

```
using Printf
δτ=1
beta_max=10
energy = 1.0
for β in 0:δτ:beta_max
@printf("β = %.2f energy = %.8f\n", β, energy)
end
```

output:

```
β = 0.00 energy = 1.00000000
β = 1.00 energy = 1.00000000
β = 2.00 energy = 1.00000000
β = 3.00 energy = 1.00000000
β = 4.00 energy = 1.00000000
β = 5.00 energy = 1.00000000
β = 6.00 energy = 1.00000000
β = 7.00 energy = 1.00000000
β = 8.00 energy = 1.00000000
β = 9.00 energy = 1.00000000
β = 10.00 energy = 1.00000000
```

1 Like

goerch
April 7, 2022, 6:02am
#3
Oops, I get `ERROR: UndefVarError: @printf not defined`

on Julia 1.9.0?

yashi
April 7, 2022, 6:06am
#4
My bad. You need

```
using Printf
```

And I’ve fixed it. Thanks @goerch !

1 Like

goerch
April 7, 2022, 6:07am
#5

yashi:

`using Printf`

Might be OP’s problem then, too

1 Like

no, I am using “using Printf”

The difference between @_SACHIN and @yashi is the line `energy = inner(rho.H)`

. The code blocks are not the same.

What is the value of `energy`

?

1 Like

yashi
April 7, 2022, 12:29pm
#8
```
using ITensors
using Printf
function ITensors.op(::OpName"expτSS", ::SiteType"S=1/2", s1::Index, s2::Index; τ)
h =
1 / 2 * op("S+", s1) * op("S-", s2) +
1 / 2 * op("S-", s1) * op("S+", s2) +
op("Sz", s1) * op("Sz", s2)
return exp(τ * h)
end
function main(; N=10, cutoff=1E-8, δτ=0.1, beta_max=2.0)
s = siteinds("S=1/2", N; conserve_qns=true)
gates = ops([("expτSS", (n, n + 1), (τ=-δτ / 2,)) for n in 1:(N - 1)], s)
append!(gates, reverse(gates))
rho = MPO(s, "Id") ./ √2
terms = OpSum()
for j in 1:(N - 1)
terms += 1 / 2, "S+", j, "S-", j + 1
terms += 1 / 2, "S-", j, "S+", j + 1
terms += "Sz", j, "Sz", j + 1
end
H = MPO(terms, s)
for β in 0:δτ:beta_max
energy = inner(rho, H)
@printf("β = %.2f energy = %.8f\n", β, energy)
rho = apply(gates, rho; cutoff)
rho = rho / tr(rho)
end
return nothing
end
```

```
julia> main()
β = 0.00 energy = 0.00000000
β = 0.10 energy = -0.17283071
β = 0.20 energy = -0.35297829
β = 0.30 energy = -0.53907929
β = 0.40 energy = -0.72957328
β = 0.50 energy = -0.92249295
β = 0.60 energy = -1.11609434
β = 0.70 energy = -1.30848387
β = 0.80 energy = -1.49784914
β = 0.90 energy = -1.68252460
β = 1.00 energy = -1.86105195
β = 1.10 energy = -2.03222170
β = 1.20 energy = -2.19509440
β = 1.30 energy = -2.34900281
β = 1.40 energy = -2.49353817
β = 1.50 energy = -2.62853829
β = 1.60 energy = -2.75405200
β = 1.70 energy = -2.87026069
β = 1.80 energy = -2.97746496
β = 1.90 energy = -3.07607951
β = 2.00 energy = -3.16658443
julia>
```

Hey, How you are able to get the results successfully.

I am not able to get that.

```
β = 0.00 energy = 0.00000000
ERROR: LoadError: MethodError: no method matching /(::MPO, ::Float64)
Closest candidates are:
/(::StridedArray{P, N} where N, ::Real) where P<:Dates.Period at /buildworker/worker
/package_linux64/build/usr/share/julia/stdlib/v1.6/Dates/src/deprecated.jl:44
/(::Union{SparseArrays.SparseVector{Tv, Ti}, SubArray{Tv, 1, var"#s814",
Tuple{Base.Slice{Base.OneTo{Int64}}, Int64}, false} where var"#s814"
<:SparseArrays.AbstractSparseMatrixCSC{Tv, Ti}, SubArray{Tv, 1, var"#s814",
Tuple{Base.Slice{Base.OneTo{Int64}}}, false} where var"#s814"
<:SparseArrays.AbstractSparseVector{Tv, Ti}} where {Tv, Ti}, ::Number) at /buildworker/worker/
package_linux64/build/usr/share/julia/stdlib/v1.6/SparseArrays/src/sparsevector.jl:1450
/(::Complex, ::Real) at complex.jl:333
...
Stacktrace:
[1] main(; N::Int64, cutoff::Float64, δτ::Float64, beta_max::Float64)
@ Main /media/sachin/data/sachin/chumbak/simulations/itensors/scripts_org/test_p.jl:26
[2] main()
@ Main /media/sachin/data/sachin/chumbak/simulations/itensors/scripts_org/test_p.jl:11
[3] top-level scope
@ /media/sachin/data/sachin/chumbak/simulations/itensors/scripts_org/test_p.jl:30
```

goerch
April 12, 2022, 5:13am
#11
Because the code you are running (I suppose it is the one you posted on stackoverflow) is substantially different from @yashi ’s (which works for me).

Edit: added diff

No, I don’t think both are different. Btw, I also tried to run the same code which is posted here, and getting the same error. Could you please see to it.

@goerch

See if run the same as it is in yashi, then also I get the same error.

```
using ITensors
using Printf
function ITensors.op(::OpName"expτSS", ::SiteType"S=1/2", s1::Index, s2::Index; τ)
h =
1 / 2 * op("S+", s1) * op("S-", s2) +
1 / 2 * op("S-", s1) * op("S+", s2) +
op("Sz", s1) * op("Sz", s2)
return exp(τ * h)
end
function main(; N=10, cutoff=1E-8, δτ=0.1, beta_max=2.0)
s = siteinds("S=1/2", N; conserve_qns=true)
gates = ops([("expτSS", (n, n + 1), (τ=-δτ / 2,)) for n in 1:(N - 1)], s)
append!(gates, reverse(gates))
rho = MPO(s, "Id") ./ √2
terms = OpSum()
for j in 1:(N - 1)
terms += 1 / 2, "S+", j, "S-", j + 1
terms += 1 / 2, "S-", j, "S+", j + 1
terms += "Sz", j, "Sz", j + 1
end
H = MPO(terms, s)
for β in 0:δτ:beta_max
energy = inner(rho, H)
@printf("β = %.2f energy = %.8f\n", β, energy)
rho = apply(gates, rho; cutoff)
rho = rho / tr(rho)
end
return nothing
end
main()
```

Pl tell me whether you are able to run the same ?

goerch
April 12, 2022, 5:51am
#16
I copied the code you just posted, pasted and saved it to a new file and `include`

-d it in the REPL. This works for me without problems.

Could you show us the error you are seeing somehow?

goerch
April 12, 2022, 6:12am
#18
OK, when I run the stack overflow code I first get

```
ERROR: UndefVarError: H not defined
```

for

```
@show inner(rho, H)
```

Removing that line I then see

```
ERROR: MethodError: no method matching *(::MPO, ::typeof(main))
```

here

```
rho = apply(gates, rho; cutoff)main
```

Removing `main`

from that line

```
rho = apply(gates, rho; cutoff)
```

makes the program work for me.

oh! that was a typo in stackoverflow code.

I am getting the same error. could you please see the error and let me possibilities for it ?

Same program is working in REPL

but why now not on my computer ?

_SACHIN
April 12, 2022, 11:10am
#21
@goerch Looks like I have old version of itensors.

1 Like