Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sagelib
Path: blob/master/sage/structure/list_clone_timings_cy.pyx
4069 views
1
"""
2
Cython Functions for Timing Clone Protocol
3
"""
4
#*****************************************************************************
5
# Copyright (C) 2009-2010 Florent Hivert <[email protected]>
6
#
7
# Distributed under the terms of the GNU General Public License (GPL)
8
# http://www.gnu.org/licenses/
9
#*****************************************************************************
10
11
12
import sage
13
from sage.structure.list_clone cimport ClonableArray
14
15
16
#####################################################################
17
###### Timings functions ######
18
#####################################################################
19
cpdef ClonableArray cy_add1_internal(ClonableArray bla):
20
"""
21
TESTS::
22
23
sage: from sage.structure.list_clone_timings import *
24
sage: cy_add1_internal(IncreasingArrays()([1,4,5]))
25
[2, 5, 6]
26
"""
27
cdef int i
28
cdef list lst
29
cdef ClonableArray blo
30
blo = bla.__copy__()
31
lst = blo._get_list()
32
for i in range(len(lst)): lst[i] += 1
33
blo.set_immutable()
34
blo.check()
35
return blo
36
37
cpdef ClonableArray cy_add1_immutable(ClonableArray bla):
38
"""
39
TESTS::
40
41
sage: from sage.structure.list_clone_timings import *
42
sage: cy_add1_immutable(IncreasingArrays()([1,4,5]))
43
[2, 5, 6]
44
"""
45
cdef int i
46
cdef list lbla
47
lbla = bla[:]
48
for i in range(len(lbla)): lbla[i] += 1
49
return bla.__class__(bla._parent, lbla)
50
51
cpdef ClonableArray cy_add1_mutable(ClonableArray bla):
52
"""
53
TESTS::
54
55
sage: from sage.structure.list_clone_timings import *
56
sage: cy_add1_mutable(IncreasingArrays()([1,4,5]))
57
[2, 5, 6]
58
"""
59
cdef int i
60
cdef ClonableArray blo
61
blo = bla.__copy__()
62
for i in range(len(blo)):
63
blo._setitem(i, blo._getitem(i)+1)
64
blo.set_immutable()
65
blo.check()
66
return blo
67
68
cpdef ClonableArray cy_add1_with(ClonableArray bla):
69
"""
70
TESTS::
71
72
sage: from sage.structure.list_clone_timings import *
73
sage: cy_add1_with(IncreasingArrays()([1,4,5]))
74
[2, 5, 6]
75
"""
76
cdef int i
77
cdef ClonableArray blo
78
with bla.__copy__() as blo:
79
for i in range(len(blo)):
80
blo._setitem(i, blo._getitem(i)+1)
81
return blo
82
83