[petsc-users] sqrt for a PetscScalar

Umut Tabak u.tabak at tudelft.nl
Wed Apr 7 05:47:32 CDT 2010

Dear all,

I am getting a compilation error from the sqrt(cmath header) function 
with PETSc 3.1, I configured PETSc with complex scalar type so I am 
suspecting that this is the source of the problem.

Is there a simple workaround for this? And Is there an sqrt function for 
a 'PetscScalar', I could not find that in the documentation?

PetscScalar xTMx;
VecScale(x, 1/sqrt(xTMx));

error: no match for ‘operator/’ in ‘1 / std::sqrt [with _Tp = 
double](((const std::complex<double>&)((const std::complex<double>*)(& 
/usr/include/c++/4.3/bits/stl_pair.h: In constructor ‘std::pair<_T1, 
_T2>::pair(const std::pair<_U1, _U2>&) [with _U1 = std::complex<double>, 
_U2 = int, _T1 = const double, _T2 = int]’:

Best regards,

More information about the petsc-users mailing list