<
classT,
classU>
158 template<
classT,
classU>
198 template<
classT,
classU>
205 template<
classT,
classU>
212 template<
classT,
classU>
219 template<
classT,
classU>
226 template<
classT,
classU>
233 template<
classT,
classU>
240 template<
classT,
classU>
261 template<
classT,
classU>
268 template<
classT,
classU>
327 returnm_Data.begin();
341 returnm_Data.begin();
375 returnm_Data[
i* m_Cols + j];
385 returnm_Data[
i* m_Cols + j];
393 if(new_cols == m_Cols && new_rows >= m_Rows) {
395m_Data.resize(new_rows * new_cols,
val);
399 TDatanew_data(new_rows * new_cols,
val);
400 size_t i=
min(new_rows, m_Rows);
401 size_tj =
min(new_cols, m_Cols);
403 for(
size_t r= 0;
r<
i; ++
r) {
404 for(
size_tc = 0; c < j; ++c) {
405new_data[
r* new_cols + c] = m_Data[
r* m_Cols + c];
409new_data.swap(m_Data);
420m_Data.resize(m_Rows * m_Cols,
val);
430 for(
size_t i= 0;
i< m_Rows; ++
i) {
431m_Data[
i* m_Cols +
i] =
T(1);
442 for(
size_t i= 0;
i< m_Rows; ++
i) {
443m_Data[
i* m_Cols +
i] =
T(1);
454 for(
size_t i= 0;
i< m_Rows; ++
i) {
455m_Data[
i* m_Cols +
i] =
val;
466 for(
size_t i= 0;
i< m_Rows; ++
i) {
467m_Data[
i* m_Cols +
i] =
val;
475 TDatanew_data(m_Cols * m_Rows);
477 for(
size_t i= 0;
i< m_Rows; ++
i) {
478 for(
size_tj = 0; j < m_Cols; ++j) {
479new_data[j * m_Cols +
i] = m_Data[
i* m_Cols + j];
483m_Data.swap(new_data);
484 swap(m_Rows, m_Cols);
491 size_ti_offs =
i* m_Cols;
492 size_tj_offs = j * m_Cols;
494 for(
size_tc = 0; c < m_Cols; ++c) {
495 swap(m_Data[i_offs + c], m_Data[j_offs + c] );
503m_Data.swap(
M.m_Data);
504 swap(m_Cols,
M.m_Cols);
505 swap(m_Rows,
M.m_Rows);
513 for(++
r;
r< m_Rows; ++
r) {
514 for(
size_tc = 0; c < m_Cols; ++c) {
515m_Data[(
r- 1) * m_Cols + c] = m_Data[
r* m_Cols + c];
520m_Data.resize(m_Rows * m_Cols);
528 for(
size_t r= 0;
r< m_Rows; ++
r) {
529 for(
size_tc = col + 1; c < m_Cols; ++c) {
530m_Data[
r* m_Cols + c - 1] = m_Data[
r* m_Cols + c];
534Resize(m_Rows, m_Cols - 1);
546 template<
classT,
classU>
560 for( ; res_iter != res_end; ++res_iter, ++m0_iter, ++m1_iter) {
561*res_iter = *m0_iter + *m1_iter;
568 template<
classT,
classU>
580 for( ;
mod; --
mod, ++m0_iter, ++m1_iter) {
581*m0_iter += *m1_iter;
584 for( ; m0_iter != m0_end; ) {
585*m0_iter++ += *m1_iter++;
586*m0_iter++ += *m1_iter++;
587*m0_iter++ += *m1_iter++;
588*m0_iter++ += *m1_iter++;
599 template<
classT,
classU>
612 for( ; res_iter != res_end; ++res_iter, ++m0_iter, ++m1_iter) {
613*res_iter = *m0_iter - *m1_iter;
620 template<
classT,
classU>
631 for( ; m0_iter != m0_end; ++m0_iter, ++m1_iter) {
632*m0_iter -= *m1_iter;
652 for( ; res_iter != res_end; ++res_iter, ++m0_iter) {
653*res_iter = *m0_iter *
val;
670 for( ; res_iter != res_end; ++res_iter, ++m0_iter) {
671*res_iter = *m0_iter *
val;
688 for( ; res_iter != res_end; ++res_iter, ++m0_iter) {
689*res_iter = *m0_iter *
val;
706 for( ; res_iter != res_end; ++res_iter, ++m0_iter) {
707*res_iter = *m0_iter *
val;
724 for( ; res_iter != res_end; ++res_iter, ++m0_iter) {
725*res_iter = *m0_iter *
val;
742 for( ; res_iter != res_end; ++res_iter, ++m0_iter) {
743*res_iter = *m0_iter *
val;
757 for( ; m0_iter != m0_end; ++m0_iter) {
774 for( ; m0_iter != m0_end; ++m0_iter) {
782 template<
classT,
classU>
789vector< TPromote > res(m.
GetRows(), TPromote(0));
791 for(
size_t r= 0;
r< m.
GetRows(); ++
r) {
792 for(
size_t i= 0;
i< m.
GetCols(); ++
i) {
793res[
r] += m(
r,
i) * v[
i];
801 template<
classT,
classU>
808vector<TPromote> res(m.
GetCols(), TPromote(0));
810 for(
size_tc = 0; c < m.
GetCols(); ++c) {
811 for(
size_t i= 0;
i< m.
GetRows(); ++
i) {
812res[c] += m(
i,c) * v[
i];
820 template<
classT,
classU>
830 for(
size_t r= 0;
r< m0.
GetRows(); ++
r) {
831 for(
size_tc = 0; c < m1.
GetCols(); ++c) {
832 for(
size_t i= 0;
i< m0.
GetCols(); ++
i) {
833res(
r,c) += m0(
r,
i) * m1(
i,c);
841 constvector<T>& lhs = m0.
GetData();
842 constvector<U>& rhs = m1.
GetData();
843 size_tcol_mod = m0.
GetCols() % 4;
845 for(
size_t r= 0;
r< m0.
GetRows(); ++
r) {
848 for(
size_tc = 0; c < m1.
GetCols(); ++c) {
861t0 += m0.
GetData()[r_offs + 2] * m1(2,c);
864t0 += m0.
GetData()[r_offs + 1] * m1(1,c);
867t0 += m0.
GetData()[r_offs + 0] * m1(0,c);
873t0 += lhs[r_offs +
i+ 0] * m1(
i+ 0, c);
874t1 += lhs[r_offs +
i+ 1] * m1(
i+ 1, c);
878res(
r,c) = t0 + t1 + t2 + t3;
887 template<
classT,
classU>
902 template<
classT,
classU>
914 if(m0[
i] != m1[
i]) {
923 template<
classT,
classU>
936 for(
size_t i= 0;
i<
M.GetRows(); ++
i) {
937 for(
size_tj = 0; j <
M.GetCols(); ++j) {
959 while(getline(is, line)) {
961 if(line.empty() || line[0] ==
'#') {
971 row.push_back(entry);
973 if(
A.GetCols() == 0) {
974 A.Resize(
A.GetCols(),
row.size());
976 if(
row.size() !=
A.GetCols()) {
983 A.Resize(
A.GetRows() + 1,
A.GetCols());
984 for(
int i= 0;
i<
A.GetCols(); ++
i) {
985 A(
A.GetRows() - 1,
i) =
row[
i];
void Resize(size_t i, size_t j, T val=T())
resize this matrix, filling the empty cells with a known value
TData & GetData()
retrieve the data associated with this matrix
void Diagonal(size_t size, T val)
make this matrix a diagonal matrix of a given size, with a given value on the diagonal
void SwapRows(size_t i, size_t j)
swap two rows in the matrix
const T & operator[](size_t i) const
operator[] for raw data indexing
void Swap(CNcbiMatrix< T > &M)
swap two matrices efficiently
const_iterator begin() const
void Identity()
make this matrix an identity matrix
void Set(T val)
set all values in the matrix to a known value
void RemoveRow(size_t i)
remove a given row in the matrix
size_t m_Rows
size of this matrix
void Identity(size_t size)
make this matrix an identity matrix of a given size
size_t GetRows() const
get the number of rows in this matrix
TData::const_iterator const_iterator
void RemoveCol(size_t i)
remove a given column in the matrix
const T & operator()(size_t i, size_t j) const
operator() for row/column indexing
size_t GetCols() const
get the number of columns in this matrix
CNcbiMatrix(size_t r, size_t c, T val=T())
void Diagonal(T val)
make this matrix a diagonal matrix, with a given value on the diagonal
void Transpose()
transpose this matrix
CNcbiMatrix()
default ctor
const TData & GetData() const
const_iterator end() const
iterator begin()
iterators
TData m_Data
the data strip we use
Include a standard set of the NCBI C++ Toolkit most basic headers.
void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
NCBI_PROMOTE(T, U) operator*(const CVect2< T > &v1
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
IO_PREFIX::ostream CNcbiOstream
Portable alias for ostream.
IO_PREFIX::istream CNcbiIstream
Portable alias for istream.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
CNcbiMatrix< NCBI_PROMOTE(T, size_t) > operator*(const CNcbiMatrix< T > &, size_t)
global multiplication: matrix * scalar this is a hack, as MSVC doesn't support partial template speci...
CNcbiMatrix< T > & operator+=(CNcbiMatrix< T > &, const CNcbiMatrix< U > &)
global addition: matrix += matrix
CNcbiMatrix< T > & operator*=(CNcbiMatrix< T > &, const CNcbiMatrix< U > &)
global multiplication: matrix *= matrix
CNcbiIstream & operator>>(CNcbiIstream &is, CNcbiMatrix< T > &M)
global operators
CNcbiMatrix< T > & operator-=(CNcbiMatrix< T > &, const CNcbiMatrix< U > &)
global subtraction: matrix -= matrix
bool operator==(const CNcbiMatrix< T > &, const CNcbiMatrix< U > &)
global comparison: matrix == matrix
CNcbiMatrix< T > & operator/=(CNcbiMatrix< T > &, T)
global division: matrix /= matrix
CNcbiOstream & operator<<(CNcbiOstream &os, const CNcbiMatrix< T > &M)
stream output.
CNcbiMatrix< NCBI_PROMOTE(T, U) > operator-(const CNcbiMatrix< T > &, const CNcbiMatrix< U > &)
global subtraction: matrix - matrix
CNcbiMatrix< NCBI_PROMOTE(T, U) > operator+(const CNcbiMatrix< T > &, const CNcbiMatrix< U > &)
global addition: matrix + matrix
bool operator!=(const CNcbiMatrix< T > &, const CNcbiMatrix< U > &)
global comparison: matrix != matrix
const struct ncbi::grid::netcache::search::fields::SIZE size
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
#define row(bind, expected)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4