Program Listing for File complex/array/gauss/algebra.h#
↰ Return to documentation for file (oti/complex/array/gauss/algebra.h)
#ifndef OTI_COMPLEX_ARRAY_GAUSS_ALGEBRA_H
#define OTI_COMPLEX_ARRAY_GAUSS_ALGEBRA_H
/**************************************************************************************************/
fecarr_t fecarr_neg( fecarr_t * arr );
void fecarr_neg_to( fecarr_t * arr, fecarr_t * res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
fecarr_t fecarr_sum_FF( fecarr_t * lhs, fecarr_t * rhs );
void fecarr_sum_FF_to(fecarr_t * lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_sum_fF( fecnum_t* lhs, fecarr_t * rhs );
void fecarr_sum_fF_to( fecnum_t* lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_sum_RF( carr_t* lhs, fecarr_t * rhs );
void fecarr_sum_RF_to( carr_t* lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_sum_rF( ccoeff_t lhs, fecarr_t * rhs );
void fecarr_sum_rF_to( ccoeff_t lhs, fecarr_t * rhs, fecarr_t * res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
fecarr_t fecarr_sub_FF( fecarr_t * lhs, fecarr_t * rhs );
void fecarr_sub_FF_to( fecarr_t * lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_sub_fF( fecnum_t* lhs, fecarr_t * rhs );
void fecarr_sub_fF_to( fecnum_t* lhs, fecarr_t * rhs, fecarr_t * res );
fecarr_t fecarr_sub_Ff( fecarr_t * lhs, fecnum_t* rhs );
void fecarr_sub_Ff_to( fecarr_t * lhs, fecnum_t* rhs, fecarr_t * res );
fecarr_t fecarr_sub_RF( carr_t* lhs, fecarr_t * rhs );
void fecarr_sub_RF_to( carr_t* lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_sub_FR( fecarr_t * lhs, carr_t* rhs );
void fecarr_sub_FR_to( fecarr_t * lhs, carr_t* rhs, fecarr_t * res);
fecarr_t fecarr_sub_rF( ccoeff_t lhs, fecarr_t * rhs );
void fecarr_sub_rF_to( ccoeff_t lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_sub_Fr( fecarr_t * lhs, ccoeff_t rhs );
void fecarr_sub_Fr_to( fecarr_t * lhs, ccoeff_t rhs, fecarr_t * res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
fecarr_t fecarr_mul_FF( fecarr_t * lhs, fecarr_t * rhs );
void fecarr_mul_FF_to(fecarr_t * lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_mul_fF( fecnum_t* lhs, fecarr_t * rhs );
void fecarr_mul_fF_to( fecnum_t* lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_mul_RF( carr_t* lhs, fecarr_t * rhs );
void fecarr_mul_RF_to( carr_t* lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_mul_rF( ccoeff_t lhs, fecarr_t * rhs );
void fecarr_mul_rF_to( ccoeff_t lhs, fecarr_t * rhs, fecarr_t * res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
fecarr_t fecarr_div_FF( fecarr_t * lhs, fecarr_t * rhs );
void fecarr_div_FF_to( fecarr_t * lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_div_fF( fecnum_t* lhs, fecarr_t * rhs );
void fecarr_div_fF_to( fecnum_t* lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_div_Ff( fecarr_t* lhs, fecnum_t* rhs );
void fecarr_div_Ff_to( fecarr_t* lhs, fecnum_t* rhs, fecarr_t * res);
fecarr_t fecarr_div_RF( carr_t* lhs, fecarr_t * rhs );
void fecarr_div_RF_to( carr_t* lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_div_FR( fecarr_t* lhs, carr_t* rhs );
void fecarr_div_FR_to( fecarr_t* lhs, carr_t* rhs, fecarr_t * res);
fecarr_t fecarr_div_rF( ccoeff_t lhs, fecarr_t * rhs );
void fecarr_div_rF_to( ccoeff_t lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_div_Fr( fecarr_t* lhs, ccoeff_t rhs );
void fecarr_div_Fr_to( fecarr_t* lhs, ccoeff_t rhs, fecarr_t * res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
carr_t fecarr_integrate( fecarr_t* arr, fecnum_t* w );
void fecarr_integrate_to( fecarr_t* arr, fecnum_t* w, carr_t* res);
// ----------------------------------------------------------------------------------------------------
// VECTOR ALGEBRA
/**************************************************************************************************/
fecnum_t fecarr_dotproduct_FF( fecarr_t* lhs, fecarr_t * rhs );
void fecarr_dotproduct_FF_to( fecarr_t* lhs, fecarr_t * rhs, fecnum_t* res);
fecnum_t fecarr_dotproduct_RF( carr_t* lhs, fecarr_t * rhs );
void fecarr_dotproduct_RF_to( carr_t* lhs, fecarr_t * rhs, fecnum_t* res);
// ----------------------------------------------------------------------------------------------------
// MATRIX ALGEBRA.
/**************************************************************************************************/
fecarr_t fecarr_matmul_FF( fecarr_t* lhs, fecarr_t * rhs );
void fecarr_matmul_FF_to( fecarr_t* lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_matmul_RF( carr_t* lhs, fecarr_t * rhs );
void fecarr_matmul_RF_to( carr_t* lhs, fecarr_t * rhs, fecarr_t * res);
fecarr_t fecarr_matmul_FR( fecarr_t* lhs, carr_t* rhs );
void fecarr_matmul_FR_to( fecarr_t* lhs, carr_t* rhs, fecarr_t * res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
fecnum_t fecarr_det( fecarr_t* arr );
void fecarr_det_to(fecarr_t* arr, fecnum_t* res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
fecnum_t fecarr_norm( fecarr_t* arr );
void fecarr_norm_to( fecarr_t* arr, fecnum_t* res);
fecnum_t fecarr_pnorm( fecarr_t* arr, ccoeff_t p );
void fecarr_pnorm_to( fecarr_t* arr, ccoeff_t p, fecnum_t* res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
fecarr_t fecarr_invert( fecarr_t* arr );
void fecarr_invert_to( fecarr_t* arr, fecarr_t * res);
// ----------------------------------------------------------------------------------------------------
/**************************************************************************************************/
fecarr_t fecarr_transpose( fecarr_t* arr );
void fecarr_transpose_to(fecarr_t* arr, fecarr_t * res);
// ----------------------------------------------------------------------------------------------------
#endif