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