Program Listing for File semisparse/array/base.h#
↰ Return to documentation for file (oti/semisparse/array/base.h)
#ifndef OTI_SEMISPARSE_ARRAY_BASE_H
#define OTI_SEMISPARSE_ARRAY_BASE_H
/**************************************************************************************************/
void arrsso_taylor_integrate_to( coeff_t* deltas, arrsso_t* arr, arrsso_t* res, dhelpl_t dhl);
arrsso_t arrsso_taylor_integrate( coeff_t* deltas, arrsso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrsso_get_order_im_to( ord_t order, arrsso_t* arr, arrsso_t* res, dhelpl_t dhl);
arrsso_t arrsso_get_order_im( ord_t order, arrsso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrsso_set_slice_r( coeff_t val,
int64_t starti, int64_t stopi, int64_t stepi,
int64_t startj, int64_t stopj, int64_t stepj,
arrsso_t* res, dhelpl_t dhl);
void arrsso_set_slice_O( arrsso_t* val,
int64_t starti, int64_t stopi, int64_t stepi,
int64_t startj, int64_t stopj, int64_t stepj,
arrsso_t* res, dhelpl_t dhl);
void arrsso_set_slice_o( semiotin_t* val,
int64_t starti, int64_t stopi, int64_t stepi,
int64_t startj, int64_t stopj, int64_t stepj,
arrsso_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrsso_t arrsso_get_slice( arrsso_t* arr,
int64_t starti, int64_t stopi, int64_t stepi,
int64_t startj, int64_t stopj, int64_t stepj,
dhelpl_t dhl);
void arrsso_get_slice_to( arrsso_t* arr,
int64_t starti, int64_t stopi, int64_t stepi,
int64_t startj, int64_t stopj, int64_t stepj,
arrsso_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrsso_t arrsso_truncate_im( imdir_t idx, ord_t order, arrsso_t* arr, dhelpl_t dhl);
void arrsso_truncate_im_to( imdir_t idx, ord_t order, arrsso_t* arr, arrsso_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrsso_t arrsso_extract_im( imdir_t idx, ord_t order, arrsso_t* arr, dhelpl_t dhl);
void arrsso_extract_im_to(imdir_t idx, ord_t order, arrsso_t* arr, arrsso_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
darr_t arrsso_get_deriv( imdir_t idx, ord_t order, arrsso_t* arr, dhelpl_t dhl);
void arrsso_get_deriv_to( imdir_t idx, ord_t order, arrsso_t* arr, arrsso_t* res, dhelpl_t dhl);
arrsso_t arrsso_get_deriv_o( imdir_t idx, ord_t order, arrsso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrsso_t arrsso_extract_deriv( imdir_t idx, ord_t order, arrsso_t* arr, dhelpl_t dhl);
void arrsso_extract_deriv_to( imdir_t idx, ord_t order, arrsso_t* arr, arrsso_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
darr_t arrsso_get_im( imdir_t idx, ord_t order, arrsso_t* arr, dhelpl_t dhl);
arrsso_t arrsso_get_im_o( imdir_t idx, ord_t order, arrsso_t* arr, dhelpl_t dhl);
void arrsso_get_im_to(imdir_t idx, ord_t order, arrsso_t* arr, arrsso_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrsso_copy_to(arrsso_t* arr, arrsso_t* res, dhelpl_t dhl);
arrsso_t arrsso_copy(arrsso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrsso_set_all_r( coeff_t num, arrsso_t* arr, dhelpl_t dhl);
void arrsso_set_item_i_r( coeff_t num, uint64_t i, arrsso_t* arr, dhelpl_t dhl);
void arrsso_set_item_ij_r( coeff_t num, uint64_t i, uint64_t j, arrsso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
void arrsso_set_r( coeff_t num, arrsso_t* arr, dhelpl_t dhl);
void arrsso_set_o( semiotin_t* num, arrsso_t* arr, dhelpl_t dhl);
void arrsso_set_O( arrsso_t* arrin, arrsso_t* arr, dhelpl_t dhl);
/**************************************************************************************************/
void arrsso_set_all_o( semiotin_t* src, arrsso_t* arr, dhelpl_t dhl);
void arrsso_set_item_i_o( semiotin_t* num, uint64_t i, arrsso_t* arr, dhelpl_t dhl);
void arrsso_set_item_ij_o( semiotin_t* num, uint64_t i, uint64_t j, arrsso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
semiotin_t arrsso_get_item_i( arrsso_t* arr, uint64_t i, dhelpl_t dhl);
void arrsso_get_item_i_to( arrsso_t* arr, uint64_t i, semiotin_t* res, dhelpl_t dhl);
semiotin_t arrsso_get_item_ij( arrsso_t* arr, uint64_t i, uint64_t j, dhelpl_t dhl);
void arrsso_get_item_ij_to(arrsso_t* arr, uint64_t i, uint64_t j, semiotin_t* res, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrsso_t arrsso_init(void);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrsso_free(arrsso_t* arr);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrsso_t arrsso_empty_like(arrsso_t* arr, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrsso_t arrsso_eye(uint64_t nrows, ndir_t* p_nnz, ord_t order, dhelpl_t dhl);
arrsso_t arrsso_eye_bases(uint64_t nrows, bases_t nbases, ord_t order, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrsso_t arrsso_ones(uint64_t nrows, uint64_t ncols, ndir_t* p_nnz, ord_t order, dhelpl_t dhl);
arrsso_t arrsso_ones_bases(uint64_t nrows, uint64_t ncols, bases_t nbases, ord_t order, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrsso_t arrsso_zeros(uint64_t nrows, uint64_t ncols, ndir_t* p_nnz, ord_t order, dhelpl_t dhl);
arrsso_t arrsso_zeros_bases(uint64_t nrows, uint64_t ncols, bases_t nbases, ord_t order, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
arrsso_t arrsso_createEmpty_predef(uint64_t nrows, uint64_t ncols, ndir_t* p_nnz, ord_t order, dhelpl_t dhl);
arrsso_t arrsso_createEmpty_bases(uint64_t nrows, uint64_t ncols, bases_t nbases, ord_t order, dhelpl_t dhl);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
size_t arrsso_memory_size( uint64_t size, ndir_t* p_nnz, ord_t order);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void arrsso_distribute_memory(void* mem, uint64_t nrows, uint64_t ncols, ndir_t* p_nnz, ord_t order,
flag_t flag, arrsso_t* res);
// ----------------------------------------------------------------------------------------------------
void arrsso_save(char* filename, arrsso_t* arr, dhelpl_t dhl);
arrsso_t arrsso_read(char* filename, dhelpl_t dhl);
#endif