@@ -441,14 +441,18 @@ cpdef __matrix_from_rows_of_matrices(X):
441
441
442
442
443
443
cdef class Matrix_modn_dense_template(Matrix_dense):
444
- def __cinit__ (self ):
444
+ def __cinit__ (self , * args , bint zeroed_alloc = True , ** kwds ):
445
445
cdef long p = self ._base_ring.characteristic()
446
446
self .p = p
447
447
if p >= MAX_MODULUS:
448
448
raise OverflowError (" p (=%s ) must be < %s ." % (p, MAX_MODULUS))
449
449
450
- self ._entries = < celement * > check_calloc(self ._nrows * self ._ncols, sizeof(celement))
451
- self ._matrix = < celement ** > check_calloc(self ._nrows, sizeof(celement* ))
450
+ if zeroed_alloc:
451
+ self ._entries = < celement * > check_calloc(self ._nrows * self ._ncols, sizeof(celement))
452
+ self ._matrix = < celement ** > check_calloc(self ._nrows, sizeof(celement* ))
453
+ else :
454
+ self ._entries = < celement * > check_allocarray(self ._nrows * self ._ncols, sizeof(celement))
455
+ self ._matrix = < celement ** > check_allocarray(self ._nrows, sizeof(celement* ))
452
456
453
457
cdef unsigned int k
454
458
cdef Py_ssize_t i
@@ -866,7 +870,7 @@ cdef class Matrix_modn_dense_template(Matrix_dense):
866
870
False
867
871
"""
868
872
cdef Matrix_modn_dense_template A
869
- A = self .__class__ .__new__ (self .__class__, self ._parent, 0 , 0 , 0 )
873
+ A = self .__class__ .__new__ (self .__class__, self ._parent, 0 , 0 , 0 , zeroed_alloc = False )
870
874
memcpy(A._entries, self ._entries, sizeof(celement)* self ._nrows* self ._ncols)
871
875
if self ._subdivisions is not None :
872
876
A.subdivide(* self .subdivisions())
0 commit comments