@@ -30,7 +30,7 @@ struct Mod <: PrimitiveBlock{2}
30
30
end
31
31
Yao. nqudits (m:: Mod ) = m. n
32
32
33
- function Yao . unsafe_apply! (reg:: AbstractArrayReg , m:: Mod )
33
+ function YaoBlocks . unsafe_apply! (reg:: AbstractArrayReg , m:: Mod )
34
34
nstate = zero (reg. state)
35
35
for i in basis (reg)
36
36
_i = buffer (i) >= m. L ? buffer (i)+ 1 : mod (buffer (i)* m. a, m. L)+ 1
44
44
45
45
function Yao. mat (:: Type{T} , m:: Mod ) where {T}
46
46
perm = Vector {Int} (undef, 1 << m. n)
47
- for i in basis (m. n)
47
+ for i in Yao . basis (m. n)
48
48
@inbounds perm[i >= m. L ? i+ 1 : mod (i* m. a, m. L)+ 1 ] = i+ 1
49
49
end
50
50
PermMatrix (perm, ones (T, 1 << m. n))
@@ -82,11 +82,11 @@ function bint2_reader(T, k::Int)
82
82
return b -> (b& mask, b>> k)
83
83
end
84
84
85
- function Yao . unsafe_apply! (reg:: ArrayReg , m:: KMod )
85
+ function YaoBlocks . unsafe_apply! (reg:: ArrayReg , m:: KMod )
86
86
nstate = zero (reg. state)
87
87
88
88
reader = bint2_reader (Int, m. k)
89
- for b in basis (reg)
89
+ for b in Yao . basis (reg)
90
90
k, i = reader (buffer (b))
91
91
_i = i >= m. L ? i : mod (i* powermod (m. a, k, m. L), m. L)
92
92
_b = k + _i<< m. k + 1
@@ -101,11 +101,11 @@ end
101
101
function Yao. mat (:: Type{T} , m:: KMod ) where {T}
102
102
perm = Vector {Int} (undef, 1 << m. n)
103
103
reader = bint2_reader (Int, m. k)
104
- for b in 0 : 1 << m. n- 1
105
- k, i = reader (b )
104
+ for b in Yao . basis ( m. n)
105
+ k, i = reader (buffer (b) )
106
106
_i = i >= m. L ? i : mod (i* powermod (m. a, k, m. L), m. L)
107
107
_b = k + _i<< m. k + 1
108
- @inbounds perm[_b] = b + 1
108
+ @inbounds perm[_b] = buffer (b) + 1
109
109
end
110
110
YaoBlocks. LuxurySparse. PermMatrix (perm, ones (T, 1 << m. n))
111
111
end
0 commit comments