@@ -73,7 +73,7 @@ cdef OP_string(OrbitPartition *OP):
73
73
"""
74
74
cdef i,j
75
75
s = " "
76
- for i from 0 <= i < OP.degree:
76
+ for i in range ( OP.degree) :
77
77
s += " "
78
78
j = OP_find(OP, i)
79
79
s += " %d -> %d " % (i, j)
@@ -133,7 +133,7 @@ def OP_represent(int n, merges, perm):
133
133
print (" Allocation passed." )
134
134
print (" Checking that each element reports itself as its root." )
135
135
good = True
136
- for i from 0 <= i < n :
136
+ for i in range (n) :
137
137
if not OP_find(OP, i) == i:
138
138
print (" Failed at i = %d !" % i)
139
139
good = False
@@ -145,7 +145,7 @@ def OP_represent(int n, merges, perm):
145
145
print (" Merged %d and %d ." % (i, j))
146
146
print (" Done merging." )
147
147
print (" Finding:" )
148
- for i from 0 <= i < n :
148
+ for i in range (n) :
149
149
j = OP_find(OP, i)
150
150
s = " %d -> %d " % (i, j)
151
151
if i == j:
@@ -159,13 +159,13 @@ def OP_represent(int n, merges, perm):
159
159
OP_dealloc(OP)
160
160
return
161
161
print (" Allocation passed." )
162
- for i from 0 <= i < n :
162
+ for i in range (n) :
163
163
gamma[i] = perm[i]
164
164
print (" Merging permutation: %s " % perm)
165
165
OP_merge_list_perm(OP, gamma)
166
166
print (" Done merging." )
167
167
print (" Finding:" )
168
- for i from 0 <= i < n :
168
+ for i in range (n) :
169
169
j = OP_find(OP, i)
170
170
s = " %d -> %d " % (i, j)
171
171
if i == j:
@@ -207,7 +207,7 @@ cdef void PS_unit_partition(PartitionStack *PS):
207
207
"""
208
208
cdef int i, n = PS.degree
209
209
PS.depth = 0
210
- for i from 0 <= i < n - 1 :
210
+ for i in range (n - 1 ) :
211
211
PS.entries[i] = i
212
212
PS.levels[i] = n
213
213
PS.entries[n- 1 ] = n- 1
@@ -243,14 +243,14 @@ cdef PartitionStack *PS_from_list(list L):
243
243
null pointer in the case of an allocation failure.
244
244
"""
245
245
cdef int cell, i, num_cells = len (L), cur_start = 0 , cur_len, n = 0
246
- for cell from 0 <= cell < num_cells:
246
+ for cell in range ( num_cells) :
247
247
n += len (L[cell])
248
248
cdef PartitionStack * PS = PS_new(n, 0 )
249
249
if PS is NULL :
250
250
return NULL
251
- for cell from 0 <= cell < num_cells:
251
+ for cell in range ( num_cells) :
252
252
cur_len = len (L[cell])
253
- for i from 0 <= i < cur_len:
253
+ for i in range ( cur_len) :
254
254
PS.entries[cur_start + i] = L[cell][i]
255
255
PS.levels[cur_start + i] = n
256
256
PS_move_min_to_front(PS, cur_start, cur_start+ cur_len- 1 )
@@ -267,15 +267,15 @@ cdef PS_print(PartitionStack *PS):
267
267
Print a visual representation of PS.
268
268
"""
269
269
cdef int i
270
- for i from 0 <= i <= PS.depth:
270
+ for i in range ( PS.depth + 1 ) :
271
271
PS_print_partition(PS, i)
272
272
273
273
cdef PS_print_partition(PartitionStack * PS, int k):
274
274
"""
275
275
Print the partition at depth k.
276
276
"""
277
277
s = ' ('
278
- for i from 0 <= i < PS.degree:
278
+ for i in range ( PS.degree) :
279
279
s += str (PS.entries[i])
280
280
if PS.levels[i] <= k:
281
281
s += ' |'
@@ -340,7 +340,7 @@ cdef int PS_all_new_cells(PartitionStack *PS, bitset_t** nonsingletons_ptr):
340
340
if end != n:
341
341
if PS.levels[end] == PS.depth:
342
342
bitset_zero(scratch)
343
- for i from beg <= i <= end :
343
+ for i in range ( beg, end + 1 ) :
344
344
bitset_set(scratch, PS.entries[i])
345
345
count += 1
346
346
nonsingletons = < bitset_t* > sig_realloc(nonsingletons, count * sizeof(bitset_t))
@@ -368,7 +368,7 @@ cdef int PS_find_element(PartitionStack *PS, bitset_t b, int x) except -1:
368
368
"""
369
369
cdef int i, location, n = PS.degree
370
370
bitset_zero(b)
371
- for i from 0 <= i < n :
371
+ for i in range (n) :
372
372
if PS.entries[i] == x:
373
373
location = i
374
374
break
@@ -472,7 +472,7 @@ def PS_represent(partition, splits):
472
472
PS_print(PS)
473
473
print (" Checking that entries are in order and correct level." )
474
474
good = True
475
- for i from 0 <= i < n - 1 :
475
+ for i in range (n - 1 ) :
476
476
if not (PS.entries[i] == i and PS.levels[i] == n):
477
477
print (" Failed at i = %d !" % i)
478
478
print (PS.entries[i], PS.levels[i], i, n)
@@ -487,19 +487,19 @@ def PS_represent(partition, splits):
487
487
print (" Everything seems in order, deallocating." )
488
488
PS_dealloc(PS)
489
489
print (" Deallocated." )
490
- print (" Creating PartitionStack from partition %s ." % partition)
490
+ print (" Creating PartitionStack from partition %s ." % partition)
491
491
PS = PS_from_list(partition)
492
492
print (" PartitionStack's data:" )
493
- print (" entries -> %s " % [PS.entries[i] for i from 0 <= i < n ])
494
- print (" levels -> %s " % [PS.levels[i] for i from 0 <= i < n ])
493
+ print (" entries -> %s " % [PS.entries[i] for i in range (n) ])
494
+ print (" levels -> %s " % [PS.levels[i] for i in range (n) ])
495
495
print (" depth = %d , degree = %d " % (PS.depth,PS.degree))
496
496
PS_print(PS)
497
497
print (" Checking PS_is_discrete:" )
498
498
print (" True" if PS_is_discrete(PS) else " False" )
499
499
print (" Checking PS_num_cells:" )
500
500
print (PS_num_cells(PS))
501
501
print (" Checking PS_is_mcr, min cell reps are:" )
502
- L = [PS.entries[i] for i from 0 <= i < n if PS_is_mcr(PS, i)]
502
+ L = [PS.entries[i] for i in range (n) if PS_is_mcr(PS, i)]
503
503
print (L)
504
504
print (" Checking PS_is_fixed, fixed elements are:" )
505
505
print ([PS.entries[l] for l in L if PS_is_fixed(PS, l)])
@@ -508,7 +508,7 @@ def PS_represent(partition, splits):
508
508
PS_print(PS2)
509
509
print (" Checking for consistency." )
510
510
good = True
511
- for i from 0 <= i < n :
511
+ for i in range (n) :
512
512
if PS.entries[i] != PS2.entries[i] or PS.levels[i] != PS2.levels[i]:
513
513
print (" Failed at i = %d !" % i)
514
514
good = False
@@ -527,7 +527,7 @@ def PS_represent(partition, splits):
527
527
print (" Getting permutation from PS2->PS:" )
528
528
gamma = < int * > sig_malloc(n * sizeof(int ))
529
529
PS_get_perm_from(PS, PS2, gamma)
530
- print ([gamma[i] for i from 0 <= i < n ])
530
+ print ([gamma[i] for i in range (n) ])
531
531
sig_free(gamma)
532
532
print (" Finding first smallest:" )
533
533
bitset_init(b, n)
@@ -609,15 +609,15 @@ cdef StabilizerChain *SC_new(int n, bint init_gens=True):
609
609
SC.base_orbits = int_ptrs + 2 * n
610
610
SC.parents = int_ptrs + 3 * n
611
611
SC.labels = int_ptrs + 4 * n
612
- for i from 0 <= i < n :
612
+ for i in range (n) :
613
613
SC.base_orbits[i] = int_array
614
614
SC.parents[i] = int_array + n
615
615
SC.labels[i] = int_array + 2 * n
616
616
int_array += 3 * n
617
617
618
618
# second level allocations
619
619
if init_gens:
620
- for i from 0 <= i < n :
620
+ for i in range (n) :
621
621
SC.array_size[i] = default_num_gens
622
622
SC.generators[i] = < int * > sig_malloc( default_num_gens* n * sizeof(int ) )
623
623
SC.gen_inverses[i] = < int * > sig_malloc( default_num_gens* n * sizeof(int ) )
@@ -654,7 +654,7 @@ cdef inline void SC_dealloc(StabilizerChain *SC):
654
654
if SC is not NULL :
655
655
n = SC.degree
656
656
if SC.generators is not NULL :
657
- for i from 0 <= i < n :
657
+ for i in range (n) :
658
658
sig_free(SC.generators[i])
659
659
sig_free(SC.gen_inverses[i])
660
660
sig_free(SC.generators) # frees int_ptrs
@@ -675,29 +675,29 @@ cdef StabilizerChain *SC_symmetric_group(int n):
675
675
if SC is NULL :
676
676
return NULL
677
677
SC.base_size = n- 1
678
- for i from 0 <= i < n - 1 :
678
+ for i in range (n - 1 ) :
679
679
SC.array_size[i] = n- i- 1
680
680
SC.array_size[n- 1 ] = default_num_gens
681
- for i from 0 <= i < n :
681
+ for i in range (n) :
682
682
SC.generators[i] = < int * > sig_malloc( SC.array_size[i]* n * sizeof(int ) )
683
683
SC.gen_inverses[i] = < int * > sig_malloc( SC.array_size[i]* n * sizeof(int ) )
684
684
if SC.generators[i] is NULL or SC.gen_inverses[i] is NULL :
685
685
SC_dealloc(SC)
686
686
return NULL
687
687
cdef int * id_perm = SC.perm_scratch
688
- for i from 0 <= i < n :
688
+ for i in range (n) :
689
689
id_perm[i] = i
690
- for i from 0 <= i < n - 1 :
690
+ for i in range (n - 1 ) :
691
691
b = i
692
692
SC.orbit_sizes[i] = n- i
693
693
SC.num_gens[i] = n- i- 1
694
- for j from 0 <= j < i :
694
+ for j in range (i) :
695
695
SC.parents[i][j] = - 1
696
- for j from 0 <= j < n - i :
696
+ for j in range (n - i) :
697
697
SC.base_orbits[i][j] = i+ j
698
698
SC.parents[i][i+ j] = b
699
699
SC.labels[i][i+ j] = j
700
- for j from 0 <= j < n - i - 1 :
700
+ for j in range (n - i - 1 ) :
701
701
# j-th generator sends i+j+1 to b
702
702
memcpy(SC.generators[i] + n* j, id_perm, n * sizeof(int ) )
703
703
SC.generators[i][n* j + i+ j+ 1 ] = b
@@ -716,31 +716,31 @@ cdef StabilizerChain *SC_alternating_group(int n):
716
716
if SC is NULL :
717
717
return NULL
718
718
SC.base_size = n- 2
719
- for i from 0 <= i < n - 2 :
719
+ for i in range (n - 2 ) :
720
720
SC.array_size[i] = n- i- 1
721
721
SC.array_size[n- 2 ] = default_num_gens
722
722
SC.array_size[n- 1 ] = default_num_gens
723
- for i from 0 <= i < n :
723
+ for i in range (n) :
724
724
SC.generators[i] = < int * > sig_malloc( SC.array_size[i]* n * sizeof(int ) )
725
725
SC.gen_inverses[i] = < int * > sig_malloc( SC.array_size[i]* n * sizeof(int ) )
726
726
if SC.generators[i] is NULL or SC.gen_inverses[i] is NULL :
727
727
SC_dealloc(SC)
728
728
return NULL
729
729
cdef int * id_perm = SC.perm_scratch
730
- for i from 0 <= i < n :
730
+ for i in range (n) :
731
731
id_perm[i] = i
732
- for i from 0 <= i < n - 2 :
732
+ for i in range (n - 2 ) :
733
733
b = i
734
734
SC.orbit_sizes[i] = n- i
735
735
SC.num_gens[i] = n- i- 2
736
- for j from 0 <= j < i :
736
+ for j in range (i) :
737
737
SC.parents[i][j] = - 1
738
- for j from 0 <= j < n - i :
738
+ for j in range (n - i) :
739
739
SC.base_orbits[i][j] = i+ j
740
740
SC.parents[i][i+ j] = b
741
741
SC.labels[i][i+ j] = j
742
742
SC.labels[i][n- 1 ] = - (n- i- 2 )
743
- for j from 0 <= j < n - i - 2 :
743
+ for j in range (n - i - 2 ) :
744
744
# j-th generator sends i+j+1 to b, i+j+2 to i+j+1, and b to i+j+2
745
745
memcpy(SC.generators[i] + n* j, id_perm, n * sizeof(int ) )
746
746
SC.generators[i][n* j + i+ j+ 1 ] = b
@@ -795,14 +795,14 @@ cdef StabilizerChain *SC_copy(StabilizerChain *SC, int level):
795
795
if SCC is NULL :
796
796
return NULL
797
797
level = min (level, SC.base_size)
798
- for i from 0 <= i < level:
798
+ for i in range ( level) :
799
799
SCC.generators[i] = < int * > sig_malloc( SC.array_size[i]* n * sizeof(int ) )
800
800
SCC.gen_inverses[i] = < int * > sig_malloc( SC.array_size[i]* n * sizeof(int ) )
801
801
if SCC.generators[i] is NULL or SCC.gen_inverses[i] is NULL :
802
802
SC_dealloc(SCC)
803
803
return NULL
804
804
SCC.array_size[i] = SC.array_size[i]
805
- for i from level <= i < n :
805
+ for i in range ( level, n) :
806
806
SCC.generators[i] = < int * > sig_malloc( default_num_gens* n * sizeof(int ) )
807
807
SCC.gen_inverses[i] = < int * > sig_malloc( default_num_gens* n * sizeof(int ) )
808
808
if SCC.generators[i] is NULL or SCC.gen_inverses[i] is NULL :
@@ -818,24 +818,29 @@ cdef int SC_copy_nomalloc(StabilizerChain *SC_dest, StabilizerChain *SC, int lev
818
818
SC_dest.base_size = level
819
819
memcpy(SC_dest.orbit_sizes, SC.orbit_sizes, 2 * n * sizeof(int ) ) # copies orbit_sizes, num_gens
820
820
memcpy(SC_dest.base_orbits[0 ], SC.base_orbits[0 ], 3 * n* n * sizeof(int ) ) # copies base_orbits, parents, labels
821
- for i from 0 <= i < level:
821
+ for i in range ( level) :
822
822
if SC.num_gens[i] > SC_dest.array_size[i]:
823
823
if SC_realloc_gens(SC_dest, i, max (SC.num_gens[i], 2 * SC_dest.array_size[i])):
824
824
return 1
825
- memcpy(SC_dest.generators[i], SC.generators[i], SC.num_gens[i]* n * sizeof(int ) )
825
+ memcpy(SC_dest.generators[i], SC.generators[i], SC.num_gens[i]* n * sizeof(int ) )
826
826
memcpy(SC_dest.gen_inverses[i], SC.gen_inverses[i], SC.num_gens[i]* n * sizeof(int ) )
827
827
return 0
828
828
829
829
cdef SC_print_level(StabilizerChain * SC, int level):
830
830
cdef int i, j, n = SC.degree
831
831
if level < SC.base_size:
832
832
print (' / level {}' .format(level))
833
- print (' | orbit {}' .format([SC.base_orbits[level][i] for i from 0 <= i < SC.orbit_sizes[level]]))
834
- print (' | parents {}' .format([SC.parents [level][i] for i from 0 <= i < n]))
835
- print (' | labels {}' .format([SC.labels [level][i] for i from 0 <= i < n]))
833
+ print (' | orbit {}' .format([SC.base_orbits[level][i]
834
+ for i in range (SC.orbit_sizes[level])]))
835
+ print (' | parents {}' .format([SC.parents[level][i] for i in range (n)]))
836
+ print (' | labels {}' .format([SC.labels[level][i] for i in range (n)]))
836
837
print (' |' )
837
- print (' | generators {}' .format([[SC.generators [level][n* i + j] for j from 0 <= j < n] for i from 0 <= i < SC.num_gens[level]]))
838
- print (r ' \ inverses {}' .format([[SC.gen_inverses[level][n* i + j] for j from 0 <= j < n] for i from 0 <= i < SC.num_gens[level]]))
838
+ print (' | generators {}' .format([[SC.generators[level][n* i + j]
839
+ for j in range (n)]
840
+ for i in range (SC.num_gens[level])]))
841
+ print (r ' \ inverses {}' .format([[SC.gen_inverses[level][n* i + j]
842
+ for j in range (n)]
843
+ for i in range (SC.num_gens[level])]))
839
844
else :
840
845
print (' / level {}' .format(level))
841
846
print (' |' )
@@ -863,7 +868,7 @@ cdef StabilizerChain *SC_new_base(StabilizerChain *SC, int *base, int base_len):
863
868
cdef int SC_new_base_nomalloc(StabilizerChain * SC_dest, StabilizerChain * SC, int * base, int base_len):
864
869
cdef int i, n = SC.degree
865
870
SC_dest.base_size = 0
866
- for i from 0 <= i < base_len:
871
+ for i in range ( base_len) :
867
872
SC_add_base_point(SC_dest, base[i])
868
873
if SC_update(SC_dest, SC, 0 ):
869
874
SC_dealloc(SC_dest)
@@ -887,14 +892,14 @@ cdef int SC_update(StabilizerChain *dest, StabilizerChain *source, int level):
887
892
break
888
893
i += 1
889
894
else :
890
- for b from 0 <= b < dest.degree:
895
+ for b in range ( dest.degree) :
891
896
if perm[b] != b:
892
897
break
893
898
else :
894
899
continue
895
900
SC_add_base_point(dest, b)
896
901
first_moved = i
897
- for i from level <= i <= first_moved :
902
+ for i in range ( level, first_moved + 1 ) :
898
903
if SC_insert_and_sift(dest, i, perm, 1 , 0 ): # don't sift!
899
904
mpz_clear(dst_order)
900
905
mpz_clear(src_order)
@@ -922,7 +927,7 @@ cdef StabilizerChain *SC_insert_base_point(StabilizerChain *SC, int level, int p
922
927
if NEW is NULL :
923
928
return NULL
924
929
SC_add_base_point(NEW, p)
925
- for i from level <= i < SC.base_size:
930
+ for i in range ( level, SC.base_size) :
926
931
b = SC.base_orbits[i][0 ]
927
932
if b != p:
928
933
SC_add_base_point(NEW, b)
@@ -935,7 +940,7 @@ cdef int SC_insert_base_point_nomalloc(StabilizerChain *SC_dest, StabilizerChain
935
940
cdef int i, b, n = SC.degree
936
941
SC_copy_nomalloc(SC_dest, SC, level)
937
942
SC_add_base_point(SC_dest, p)
938
- for i from level <= i < SC.base_size:
943
+ for i in range ( level, SC.base_size) :
939
944
b = SC.base_orbits[i][0 ]
940
945
if b != p:
941
946
SC_add_base_point(SC_dest, b)
@@ -957,7 +962,7 @@ cdef int SC_re_tree(StabilizerChain *SC, int level, int *perm, int x):
957
962
if SC.array_size[level] == SC.num_gens[level]:
958
963
if SC_realloc_gens(SC, level, 2 * SC.array_size[level]):
959
964
return 1
960
- cdef int * new_gen = SC.generators [level] + n* SC.num_gens[level]
965
+ cdef int * new_gen = SC.generators[level] + n* SC.num_gens[level]
961
966
cdef int * new_gen_inv = SC.gen_inverses[level] + n* SC.num_gens[level]
962
967
963
968
# new generator is perm^(-1) * (path from x to base) (left to right composition)
@@ -968,7 +973,7 @@ cdef int SC_re_tree(StabilizerChain *SC, int level, int *perm, int x):
968
973
969
974
# now that we have our generators, regenerate the tree, breadth-first
970
975
b = SC.base_orbits[level][0 ]
971
- for i from 0 <= i < n :
976
+ for i in range (n) :
972
977
SC.parents[level][i] = - 1
973
978
SC.parents[level][b] = b
974
979
i = 0
@@ -979,7 +984,7 @@ cdef int SC_re_tree(StabilizerChain *SC, int level, int *perm, int x):
979
984
gen_inv = SC.gen_inverses[level] + n* gen_index
980
985
SC_scan(SC, level, x, gen_index, gen_inv, 1 )
981
986
for gen_index from 0 <= gen_index < SC.num_gens[level]:
982
- gen = SC.generators [level] + n* gen_index
987
+ gen = SC.generators[level] + n* gen_index
983
988
SC_scan(SC, level, x, gen_index, gen, - 1 )
984
989
i += 1
985
990
return 0
0 commit comments