Program Listing for File real/array/algebra.h#
↰ Return to documentation for file (oti/real/array/algebra.h)
#ifndef OTI_REAL_ALGEBRA_H
#define OTI_REAL_ALGEBRA_H
/**************************************************************************************************/
darr_t darr_neg( darr_t* arr );
void darr_neg_to( darr_t* arr, darr_t* res );
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void darr_abs_to( darr_t* arr1, darr_t* aRes );
void darr_self_abs( darr_t* res );
darr_t darr_abs( darr_t* arr1 );
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
darr_t darr_div_RR( darr_t* lhs, darr_t* rhs );
darr_t darr_div_Rr( darr_t* lhs, coeff_t rhs );
darr_t darr_div_rR( coeff_t lhs, darr_t* rhs );
void darr_div_RR_to( darr_t* lhs, darr_t* rhs, darr_t* res );
void darr_div_Rr_to( darr_t* lhs, coeff_t rhs, darr_t* res );
void darr_div_rR_to( coeff_t lhs, darr_t* rhs, darr_t* res );
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
darr_t darr_mul_RR( darr_t* lhs, darr_t* rhs );
void darr_mul_RR_to( darr_t* lhs, darr_t* rhs, darr_t* res );
darr_t darr_mul_rR( coeff_t lhs, darr_t* rhs );
void darr_mul_rR_to( coeff_t lhs, darr_t* rhs, darr_t* res );
darr_t darr_mul_Rr( darr_t* lhs, coeff_t rhs );
void darr_mul_Rr_to( darr_t* lhs, coeff_t rhs, darr_t* res );
void darr_mul_and_selfsum_RR_to( darr_t* lhs, darr_t* rhs, darr_t* res);
void darr_mul_and_selfsum_rR_to( coeff_t lhs, darr_t* rhs, darr_t* res);
void darr_mul_and_selfsum_Rr_to( darr_t* lhs, coeff_t rhs, darr_t* res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
darr_t darr_sub_RR( darr_t* lhs, darr_t* rhs );
void darr_sub_RR_to( darr_t* lhs, darr_t* rhs, darr_t* res);
darr_t darr_sub_Rr(darr_t* lhs, coeff_t rhs);
darr_t darr_sub_rR(coeff_t lhs, darr_t* rhs);
void darr_sub_Rr_to(darr_t* lhs, coeff_t rhs, darr_t* res);
void darr_sub_rR_to(coeff_t lhs, darr_t* rhs, darr_t* res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
darr_t darr_sum_RR( darr_t* lhs, darr_t* rhs );
void darr_sum_RR_to( darr_t* lhs, darr_t* rhs, darr_t* res );
darr_t darr_sum_rR( coeff_t lhs, darr_t* rhs );
void darr_sum_rR_to( coeff_t lhs, darr_t* rhs, darr_t* res );
darr_t darr_sum_Rr( darr_t* lhs, coeff_t rhs );
void darr_sum_Rr_to( darr_t* lhs, coeff_t rhs, darr_t* res );
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
coeff_t darr_dotproduct_RR( darr_t* lhs, darr_t* rh );
void darr_dotproduct_RR_to( darr_t* lhs, darr_t* rh, coeff_t* res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void darr_matmul_and_selfsum_RR_to(darr_t* lhs, darr_t* rhs, darr_t* res );
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
darr_t darr_matmul( darr_t* lhs, darr_t* rhs );
void darr_matmul_to( darr_t* lhs, darr_t* rhs, darr_t* res );
darr_t darr_matmul_RR( darr_t* lhs, darr_t* rhs );
void darr_matmul_RR_to( darr_t* lhs, darr_t* rhs, darr_t* res );
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
darr_t darr_transpose( darr_t* arr );
void darr_transpose_to( darr_t* arr, darr_t* res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
darr_t darr_invert( darr_t* arr );
void darr_invert_to( darr_t* arr, darr_t* res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
coeff_t darr_det( darr_t* arr );
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
coeff_t darr_pnorm( darr_t* arr, coeff_t p );
coeff_t darr_norm( darr_t* arr );
void darr_pnorm_to( darr_t* arr1, coeff_t p, coeff_t* res );
void darr_norm_to( darr_t* arr1, coeff_t* res );
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void darr_self_neg( darr_t* res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void darr_self_sum_R( darr_t* rhs, darr_t* res );
void darr_self_sum_r( coeff_t rhs, darr_t* res );
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void darr_self_sub_R(darr_t* rhs, darr_t* res);
void darr_self_sub_r(coeff_t rhs, darr_t* res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
void darr_self_mul_R( darr_t* rhs, darr_t* res );
void darr_self_mul_r( coeff_t rhs, darr_t* res );
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
darr_t darr_gem_RR( darr_t* arr1, darr_t* arr2, darr_t* arr3 );
darr_t darr_gem_rR( coeff_t arr1, darr_t* arr2, darr_t* arr3 );
void darr_gem_RR_to(darr_t* arr1, darr_t* arr2, darr_t* arr3, darr_t* res);
void darr_gem_rR_to(coeff_t arr1, darr_t* arr2, darr_t* arr3, darr_t* res);
// ----------------------------------------------------------------------------------------------------
#endif