1
1
//---------------------------------------------------------------------------
2
// $Id: full_matrix.h 17866 2008-12-05 22:27:44Z bangerth $
2
// $Id: full_matrix.h 20220 2009-12-09 18:12:05Z kronbichler $
5
// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by the deal.II authors
5
// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by the deal.II authors
7
7
// This file is subject to QPL and may not be distributed
8
8
// without copyright and license information. Please refer
941
941
void invert (const FullMatrix<number2> &M);
944
* Assign the Cholesky decomposition
945
* of the given matrix to <tt>*this</tt>.
946
* The given matrix must be symmetric
949
* ExcMatrixNotPositiveDefinite
950
* will be thrown in the case that the
951
* matrix is not positive definite.
953
template <typename number2>
954
void cholesky (const FullMatrix<number2> &A);
957
* <tt>*this(i,j)</tt> = $V(i) W(j)$
959
* are vectors of the same length.
961
template <typename number2>
962
void outer_product (const Vector<number2> &V,
963
const Vector<number2> &W);
944
966
* Assign the left_inverse of the given matrix
945
967
* to <tt>*this</tt>. The calculation being
946
968
* performed is <i>(A<sup>T</sup>*A)<sup>-1</sup>
1024
1046
* <i>C = A*B</i>
1026
* Assumes that <tt>A</tt> and <tt>B</tt> have
1027
* compatible sizes and that <tt>C</tt>
1028
* already has the right size.
1048
* Assumes that <tt>A</tt> and
1049
* <tt>B</tt> have compatible sizes and
1050
* that <tt>C</tt> already has the
1053
* This function uses the BLAS function
1054
* Xgemm if the calling matrix has more
1055
* than 15 rows and BLAS was detected
1056
* during configuration. Using BLAS
1057
* usually results in considerable
1058
* performance gains.
1030
1060
template<typename number2>
1031
1061
void mmult (FullMatrix<number2> &C,
1051
1081
* <tt>B</tt> have compatible
1052
1082
* sizes and that <tt>C</tt>
1053
1083
* already has the right size.
1085
* This function uses the BLAS function
1086
* Xgemm if the calling matrix has more
1087
* than 15 columns and BLAS was
1088
* detected during configuration. Using
1089
* BLAS usually results in considerable
1090
* performance gains.
1055
1092
template<typename number2>
1056
1093
void Tmmult (FullMatrix<number2> &C,
1057
1094
const FullMatrix<number2> &B,
1058
1095
const bool adding=false) const;
1098
* Matrix-matrix-multiplication using
1099
* transpose of <tt>B</tt>.
1101
* The optional parameter
1102
* <tt>adding</tt> determines, whether the
1103
* result is stored in <tt>C</tt> or added
1107
* <i>C += A*B<sup>T</sup></i>
1110
* <i>C = A*B<sup>T</sup></i>
1112
* Assumes that <tt>A</tt> and
1113
* <tt>B</tt> have compatible sizes and
1114
* that <tt>C</tt> already has the
1117
* This function uses the BLAS function
1118
* Xgemm if the calling matrix has more
1119
* than 15 rows and BLAS was detected
1120
* during configuration. Using BLAS
1121
* usually results in considerable
1122
* performance gains.
1124
template<typename number2>
1125
void mTmult (FullMatrix<number2> &C,
1126
const FullMatrix<number2> &B,
1127
const bool adding=false) const;
1130
* Matrix-matrix-multiplication using
1131
* transpose of <tt>this</tt> and
1134
* The optional parameter
1135
* <tt>adding</tt> determines, whether the
1136
* result is stored in <tt>C</tt> or added
1140
* <i>C += A<sup>T</sup>*B<sup>T</sup></i>
1143
* <i>C = A<sup>T</sup>*B<sup>T</sup></i>
1145
* Assumes that <tt>A</tt> and
1146
* <tt>B</tt> have compatible
1147
* sizes and that <tt>C</tt>
1148
* already has the right size.
1150
* This function uses the BLAS function
1151
* Xgemm if the calling matrix has more
1152
* than 15 columns and BLAS was
1153
* detected during configuration. Using
1154
* BLAS usually results in considerable
1155
* performance gains.
1157
template<typename number2>
1158
void TmTmult (FullMatrix<number2> &C,
1159
const FullMatrix<number2> &B,
1160
const bool adding=false) const;
1061
1163
* Matrix-vector-multiplication.