File indexing completed on 2025-01-30 10:22:11
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef ROOT_Minuit2_LaInverse
0011 #define ROOT_Minuit2_LaInverse
0012
0013 #include "Minuit2/MatrixInverse.h"
0014 #include "Minuit2/LASymMatrix.h"
0015
0016 namespace ROOT {
0017
0018 namespace Minuit2 {
0019
0020
0021
0022
0023 inline ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>
0024 Inverse(const ABObj<sym, LASymMatrix, double> &obj)
0025 {
0026 return ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>(
0027 MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>(obj));
0028 }
0029
0030 template <class T>
0031 inline ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>
0032 operator*(T f, const ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double> &inv)
0033 {
0034 return ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>(inv.Obj(), f * inv.f());
0035 }
0036
0037 template <class T>
0038 inline ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>
0039 operator/(const ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double> &inv, T f)
0040 {
0041 return ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>(inv.Obj(), inv.f() / f);
0042 }
0043
0044 template <class T>
0045 inline ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>
0046 operator-(const ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double> &inv)
0047 {
0048 return ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>(inv.Obj(), T(-1.) * inv.f());
0049 }
0050
0051 int Invert(LASymMatrix &);
0052
0053 int Invert_undef_sym(LASymMatrix &);
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068 }
0069
0070 }
0071
0072 #endif