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