Fail to compile TMatrixT<TComplex>

#include <TMatrixT.h>
#include <TComplex.h>
typedef TMatrixT<TComplex> TMatC;

int main()
{
TMatC mat;
return 0;
}

then complie:
: g++ $(root-config --cflags) $(root-config --libs) test.cxx -o test
got lots of undefined symbols during link.

any solutions ? thank you.

_ROOT Version: 6.24/06
_Platform: ubuntu 20.40 LTS
_Compiler: gcc 9.3.0

You are getting a lot of messages like

"TMatrixTBase<TComplex>::NormByDiag(TVectorT<TComplex> const&, char const*)", referenced from:
      vtable for TMatrixT<TComplex> in complex_C_ACLiC_dict.o

You will also have to update the file

root-6.24.06/math/matrix/inc/LinkDef.h

for the interpreter.

But more important than being able to compile/link the code, are you sure that
the matrix decomposition classes (used for matrix inversions) are ready for
complex number algebra ?

Thanks for your reply. I am not sure current ROOT version support complex algebra. I just want to have a try, in case of failure maybe switching to the third party Eigen is needed.

regards.

The eigen part of the package is not ready for complex numbers, just have
a look at for instance TMatrixDEigen:

////////////////////////////////////////////////////////////////////////////////
/// Nonsymmetric reduction to Hessenberg form.
/// This is derived from the Algol procedures orthes and ortran, by Martin and Wilkinson,
/// Handbook for Auto. Comp., Vol.ii-Linear Algebra, and the corresponding
/// Fortran subroutines in EISPACK.

void TMatrixDEigen::MakeHessenBerg(TMatrixD &v,TVectorD &ortho,TMatrixD &H)
{
   Double_t *pV = v.GetMatrixArray();
   Double_t *pO = ortho.GetMatrixArray();
   Double_t *pH = H.GetMatrixArray();

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.