Program Listing for File sparse/array/base.h#
↰ Return to documentation for file (oti/sparse/array/base.h)
#ifndef OTI_SPARSE_ARRAY_BASE_H
#define OTI_SPARSE_ARRAY_BASE_H
/**************************************************************************************************/
void arrso_taylor_integrate_to( coeff_t* deltas, arrso_t* arr, arrso_t* res, dhelpl_t dhl);
arrso_t arrso_taylor_integrate( coeff_t* deltas, arrso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrso_get_order_im_to( ord_t order, arrso_t* arr, arrso_t* res, dhelpl_t dhl);
arrso_t arrso_get_order_im( ord_t order, arrso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrso_set_slice_r( coeff_t val,
int64_t starti, int64_t stopi, int64_t stepi,
int64_t startj, int64_t stopj, int64_t stepj,
arrso_t* res, dhelpl_t dhl);
void arrso_set_slice_O( arrso_t* val,
int64_t starti, int64_t stopi, int64_t stepi,
int64_t startj, int64_t stopj, int64_t stepj,
arrso_t* res, dhelpl_t dhl);
void arrso_set_slice_o( sotinum_t* val,
int64_t starti, int64_t stopi, int64_t stepi,
int64_t startj, int64_t stopj, int64_t stepj,
arrso_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrso_t arrso_get_slice( arrso_t* arr,
int64_t starti, int64_t stopi, int64_t stepi,
int64_t startj, int64_t stopj, int64_t stepj,
dhelpl_t dhl);
void arrso_get_slice_to( arrso_t* arr,
int64_t starti, int64_t stopi, int64_t stepi,
int64_t startj, int64_t stopj, int64_t stepj,
arrso_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrso_t arrso_truncate_im( imdir_t idx, ord_t order, arrso_t* arr, dhelpl_t dhl);
void arrso_truncate_im_to( imdir_t idx, ord_t order, arrso_t* arr, arrso_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrso_truncate_order_to( ord_t ord, arrso_t* arr, arrso_t* res, dhelpl_t dhl);
arrso_t arrso_truncate_order( ord_t ord, arrso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrso_t arrso_extract_im( imdir_t idx, ord_t order, arrso_t* arr, dhelpl_t dhl);
void arrso_extract_im_to(imdir_t idx, ord_t order, arrso_t* arr, arrso_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
darr_t arrso_get_deriv( imdir_t idx, ord_t order, arrso_t* arr, dhelpl_t dhl);
void arrso_get_deriv_to( imdir_t idx, ord_t order, arrso_t* arr, arrso_t* res, dhelpl_t dhl);
arrso_t arrso_get_deriv_o( imdir_t idx, ord_t order, arrso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrso_t arrso_extract_deriv( imdir_t idx, ord_t order, arrso_t* arr, dhelpl_t dhl);
void arrso_extract_deriv_to( imdir_t idx, ord_t order, arrso_t* arr, arrso_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
darr_t arrso_get_im( imdir_t idx, ord_t order, arrso_t* arr, dhelpl_t dhl);
arrso_t arrso_get_im_o( imdir_t idx, ord_t order, arrso_t* arr, dhelpl_t dhl);
void arrso_get_im_to(imdir_t idx, ord_t order, arrso_t* arr, arrso_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrso_copy_to(arrso_t* arr, arrso_t* res, dhelpl_t dhl);
arrso_t arrso_copy(arrso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrso_set_all_r( coeff_t num, arrso_t* arr, dhelpl_t dhl);
void arrso_set_item_i_r( coeff_t num, uint64_t i, arrso_t* arr, dhelpl_t dhl);
void arrso_set_item_ij_r( coeff_t num, uint64_t i, uint64_t j, arrso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
void arrso_set_r( coeff_t num, arrso_t* arr, dhelpl_t dhl);
void arrso_set_o( sotinum_t* num, arrso_t* arr, dhelpl_t dhl);
void arrso_set_O( arrso_t* arrin, arrso_t* arr, dhelpl_t dhl);
/**************************************************************************************************/
void arrso_set_all_o( sotinum_t* src, arrso_t* arr, dhelpl_t dhl);
void arrso_set_item_i_o( sotinum_t* num, uint64_t i, arrso_t* arr, dhelpl_t dhl);
void arrso_set_item_ij_o( sotinum_t* num, uint64_t i, uint64_t j, arrso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
sotinum_t arrso_get_item_i( arrso_t* arr, uint64_t i, dhelpl_t dhl);
void arrso_get_item_i_to( arrso_t* arr, uint64_t i, sotinum_t* res, dhelpl_t dhl);
sotinum_t arrso_get_item_ij( arrso_t* arr, uint64_t i, uint64_t j, dhelpl_t dhl);
void arrso_get_item_ij_to(arrso_t* arr, uint64_t i, uint64_t j, sotinum_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrso_t arrso_init(void);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrso_free(arrso_t* arr);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrso_t arrso_empty_like(arrso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrso_t arrso_eye(uint64_t nrows, ndir_t* p_nnz, ord_t order, dhelpl_t dhl);
arrso_t arrso_eye_bases(uint64_t nrows, bases_t nbases, ord_t order, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrso_t arrso_ones(uint64_t nrows, uint64_t ncols, ndir_t* p_nnz, ord_t order, dhelpl_t dhl);
arrso_t arrso_ones_bases(uint64_t nrows, uint64_t ncols, bases_t nbases, ord_t order, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrso_t arrso_zeros(uint64_t nrows, uint64_t ncols, ndir_t* p_nnz, ord_t order, dhelpl_t dhl);
arrso_t arrso_zeros_bases(uint64_t nrows, uint64_t ncols, bases_t nbases, ord_t order, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrso_t arrso_createEmpty_predef(uint64_t nrows, uint64_t ncols, ndir_t* p_nnz, ord_t order, dhelpl_t dhl);
arrso_t arrso_createEmpty_bases(uint64_t nrows, uint64_t ncols, bases_t nbases, ord_t order, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
size_t arrso_memory_size( uint64_t size, ndir_t* p_nnz, ord_t order);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrso_distribute_memory(void* mem, uint64_t nrows, uint64_t ncols, ndir_t* p_nnz, ord_t order,
flag_t flag, arrso_t* res);
// ----------------------------------------------------------------------------------------------------
void arrso_save(char* filename, arrso_t* arr, dhelpl_t dhl);
arrso_t arrso_read(char* filename, dhelpl_t dhl);
#endif