00001
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef _GAN_MATF_SYMMETRIC_H
00030 #define _GAN_MATF_SYMMETRIC_H
00031
00032 #include <gandalf/linalg/matf_square.h>
00033
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037
00053 struct Gan_Matrix_f;
00054
00055
00056 Gan_SquMatrix_f *gan_symmatf_set_size ( Gan_SquMatrix_f *A,
00057 unsigned long size );
00058 Gan_SquMatrix_f *gan_symmatf_fill_va ( Gan_SquMatrix_f *A,
00059 unsigned long size, ... );
00060 Gan_SquMatrix_f *gan_symmatf_fill_const_q ( Gan_SquMatrix_f *A,
00061 unsigned long size, float value );
00062 Gan_Bool gan_symmatf_read_va ( const Gan_SquMatrix_f *A, unsigned long size, ... );
00063 Gan_SquMatrix_f *gan_symmatf_insertsym ( Gan_SquMatrix_f *A, unsigned long rA,
00064 const Gan_SquMatrix_f *B, unsigned long rB,
00065 unsigned long size );
00066 Gan_SquMatrix_f *gan_symmatf_insertsym_od ( Gan_SquMatrix_f *A,
00067 unsigned long rA, unsigned long cA,
00068 const Gan_SquMatrix_f *B,
00069 unsigned long rB, unsigned long cB,
00070 unsigned long rows,
00071 unsigned long cols );
00072 Gan_Bool gan_symmatf_eigen ( Gan_SquMatrix_f *A,
00073 Gan_SquMatrix_f *W, struct Gan_Matrix_f *Z,
00074 Gan_Bool sort,
00075 float *work, unsigned long work_size );
00076
00090 Gan_SquMatrix_f *gan_symmatf_alloc ( unsigned long size );
00091
00103 Gan_SquMatrix_f *gan_symmatf_form ( Gan_SquMatrix_f *A, unsigned long size );
00104
00117 Gan_SquMatrix_f *gan_symmatf_form_data ( Gan_SquMatrix_f *A,
00118 unsigned long size,
00119 float *data, size_t data_size );
00120
00141 Gan_SquMatrix_f *
00142 gan_symmatf_fill_const_s ( unsigned long size, float value );
00143
00154 Gan_SquMatrix_f *
00155 gan_symmatf_fill_zero_q ( Gan_SquMatrix_f *A, unsigned long size );
00156
00166 Gan_SquMatrix_f *
00167 gan_symmatf_fill_zero_s ( unsigned long size );
00168
00186 Gan_SquMatrix_f *gan_symmatf_insert ( Gan_SquMatrix_f *S,
00187 unsigned long rS, unsigned long cS,
00188 const Gan_Matrix_f *B,
00189 unsigned long rB, unsigned long cB,
00190 unsigned long rows, unsigned long cols );
00191
00200 Gan_SquMatrix_f *gan_symmatf_insertT ( Gan_SquMatrix_f *S,
00201 unsigned long rS, unsigned long cS,
00202 const Gan_Matrix_f *B,
00203 unsigned long rB, unsigned long cB,
00204 unsigned long rows, unsigned long cols);
00205
00214 Gan_SquMatrix_f *gan_symmatf_insertv ( Gan_SquMatrix_f *A,
00215 unsigned long rA, unsigned long cA,
00216 const Gan_Vector_f *x, unsigned long rx,
00217 unsigned long rows );
00218
00228 Gan_SquMatrix_f *gan_symmatf_insertvT ( Gan_SquMatrix_f *A,
00229 unsigned long rA, unsigned long cA,
00230 const Gan_Vector_f *x, unsigned long rx,
00231 unsigned long cols );
00232
00237
00238 Gan_SquMatrix_f *gan_symmatf_form_gen ( Gan_SquMatrix_f *A, unsigned long size,
00239 float *data, size_t data_size );
00240 Gan_SquMatrix_f *gan_symmatf_fill_vap ( Gan_SquMatrix_f *A,
00241 unsigned long size, va_list *aptr );
00242 Gan_SquMatrix_f *gan_symmatf_insert_gen (Gan_SquMatrix_f *S,
00243 unsigned long rS, unsigned long cS,
00244 const struct Gan_Matrix_f *B,
00245 Gan_TposeFlag B_tr,
00246 unsigned long rB, unsigned long cB,
00247 unsigned long rows,
00248 unsigned long cols );
00249 Gan_SquMatrix_f *gan_symmatf_insertv_gen ( Gan_SquMatrix_f *A,
00250 unsigned long rA, unsigned long cA,
00251 const struct Gan_Vector_f *x,
00252 Gan_TposeFlag x_tr,
00253 unsigned long rx,
00254 unsigned long size );
00255
00268 #ifdef __cplusplus
00269 }
00270 #endif
00271
00272 #endif