Path: blob/master/sage/structure/list_clone_timings_cy.pyx
4069 views
"""1Cython Functions for Timing Clone Protocol2"""3#*****************************************************************************4# Copyright (C) 2009-2010 Florent Hivert <[email protected]>5#6# Distributed under the terms of the GNU General Public License (GPL)7# http://www.gnu.org/licenses/8#*****************************************************************************91011import sage12from sage.structure.list_clone cimport ClonableArray131415#####################################################################16###### Timings functions ######17#####################################################################18cpdef ClonableArray cy_add1_internal(ClonableArray bla):19"""20TESTS::2122sage: from sage.structure.list_clone_timings import *23sage: cy_add1_internal(IncreasingArrays()([1,4,5]))24[2, 5, 6]25"""26cdef int i27cdef list lst28cdef ClonableArray blo29blo = bla.__copy__()30lst = blo._get_list()31for i in range(len(lst)): lst[i] += 132blo.set_immutable()33blo.check()34return blo3536cpdef ClonableArray cy_add1_immutable(ClonableArray bla):37"""38TESTS::3940sage: from sage.structure.list_clone_timings import *41sage: cy_add1_immutable(IncreasingArrays()([1,4,5]))42[2, 5, 6]43"""44cdef int i45cdef list lbla46lbla = bla[:]47for i in range(len(lbla)): lbla[i] += 148return bla.__class__(bla._parent, lbla)4950cpdef ClonableArray cy_add1_mutable(ClonableArray bla):51"""52TESTS::5354sage: from sage.structure.list_clone_timings import *55sage: cy_add1_mutable(IncreasingArrays()([1,4,5]))56[2, 5, 6]57"""58cdef int i59cdef ClonableArray blo60blo = bla.__copy__()61for i in range(len(blo)):62blo._setitem(i, blo._getitem(i)+1)63blo.set_immutable()64blo.check()65return blo6667cpdef ClonableArray cy_add1_with(ClonableArray bla):68"""69TESTS::7071sage: from sage.structure.list_clone_timings import *72sage: cy_add1_with(IncreasingArrays()([1,4,5]))73[2, 5, 6]74"""75cdef int i76cdef ClonableArray blo77with bla.__copy__() as blo:78for i in range(len(blo)):79blo._setitem(i, blo._getitem(i)+1)80return blo818283