Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef INIT_MATRIX_HH
00021 #define INIT_MATRIX_HH
00022
00023
00024
00025
00026
00027 template<double init_function(int,int), class Vector>
00028 BTL_DONT_INLINE void init_row(Vector & X, int size, int row){
00029
00030 X.resize(size);
00031
00032 for (int j=0;j<X.size();j++){
00033 X[j]=typename Vector::value_type(init_function(row,j));
00034 }
00035 }
00036
00037
00038
00039
00040
00041
00042 template<double init_function(int,int),class Vector>
00043 BTL_DONT_INLINE void init_matrix(Vector & A, int size){
00044 A.resize(size);
00045 for (int row=0; row<A.size() ; row++){
00046 init_row<init_function>(A[row],size,row);
00047 }
00048 }
00049
00050 template<double init_function(int,int),class Matrix>
00051 BTL_DONT_INLINE void init_matrix_symm(Matrix& A, int size){
00052 A.resize(size);
00053 for (int row=0; row<A.size() ; row++)
00054 A[row].resize(size);
00055 for (int row=0; row<A.size() ; row++){
00056 A[row][row] = init_function(row,row);
00057 for (int col=0; col<row ; col++){
00058 double x = init_function(row,col);
00059 A[row][col] = A[col][row] = x;
00060 }
00061 }
00062 }
00063
00064 #endif