4646 vector-valued or matrix-valued.
4747*/
4848
49+ #include "utils/tracked_alloc.h"
4950#include "utils/utils.h"
5051
5152static void forward (expr * node , const double * u )
@@ -125,7 +126,7 @@ static void wsum_hess_init_impl(expr *node)
125126 /* work for computing A^T w*/
126127 int n_blocks = ((left_matmul_expr * ) node )-> n_blocks ;
127128 int dim = ((left_matmul_expr * ) node )-> AT -> m * n_blocks ;
128- node -> work -> dwork = (double * ) malloc (dim * sizeof (double ));
129+ node -> work -> dwork = (double * ) SP_MALLOC (dim * sizeof (double ));
129130}
130131
131132static void eval_wsum_hess (expr * node , const double * w )
@@ -167,7 +168,7 @@ expr *new_left_matmul(expr *u, const CSR_Matrix *A)
167168
168169 /* Allocate the type-specific struct */
169170 left_matmul_expr * lnode =
170- (left_matmul_expr * ) calloc (1 , sizeof (left_matmul_expr ));
171+ (left_matmul_expr * ) SP_CALLOC (1 , sizeof (left_matmul_expr ));
171172 expr * node = & lnode -> base ;
172173 init_expr (node , d1 , d2 , u -> n_vars , forward , jacobian_init_impl , eval_jacobian ,
173174 is_affine , wsum_hess_init_impl , eval_wsum_hess , free_type_data );
@@ -178,8 +179,8 @@ expr *new_left_matmul(expr *u, const CSR_Matrix *A)
178179 (requiring size node->n_vars) and for transposing A (requiring size A->n).
179180 csc_to_csr_work is used for converting J_CSC to CSR (requiring
180181 node->size) */
181- node -> work -> iwork = (int * ) malloc (MAX (A -> n , node -> n_vars ) * sizeof (int ));
182- lnode -> csc_to_csr_work = (int * ) malloc (node -> size * sizeof (int ));
182+ node -> work -> iwork = (int * ) SP_MALLOC (MAX (A -> n , node -> n_vars ) * sizeof (int ));
183+ lnode -> csc_to_csr_work = (int * ) SP_MALLOC (node -> size * sizeof (int ));
183184 lnode -> n_blocks = n_blocks ;
184185
185186 /* store A and AT */
@@ -212,15 +213,15 @@ expr *new_left_matmul_dense(expr *u, int m, int n, const double *data)
212213 }
213214
214215 left_matmul_expr * lnode =
215- (left_matmul_expr * ) calloc (1 , sizeof (left_matmul_expr ));
216+ (left_matmul_expr * ) SP_CALLOC (1 , sizeof (left_matmul_expr ));
216217 expr * node = & lnode -> base ;
217218 init_expr (node , d1 , d2 , u -> n_vars , forward , jacobian_init_impl , eval_jacobian ,
218219 is_affine , wsum_hess_init_impl , eval_wsum_hess , free_type_data );
219220 node -> left = u ;
220221 expr_retain (u );
221222
222- node -> work -> iwork = (int * ) malloc (MAX (n , node -> n_vars ) * sizeof (int ));
223- lnode -> csc_to_csr_work = (int * ) malloc (node -> size * sizeof (int ));
223+ node -> work -> iwork = (int * ) SP_MALLOC (MAX (n , node -> n_vars ) * sizeof (int ));
224+ lnode -> csc_to_csr_work = (int * ) SP_MALLOC (node -> size * sizeof (int ));
224225 lnode -> n_blocks = n_blocks ;
225226
226227 lnode -> A = new_dense_matrix (m , n , data );
0 commit comments