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