setting complex numbers

zhifeng sheng z.sheng at
Mon Sep 8 09:44:31 CDT 2008

Dear all

I am now working with the complex version of Petsc but have some serious 

It turned out that I could not set the imaginary part of a PetscScalar.  
Check the following code:

int main(int argc, char *argv[])
    #if !defined(PETSC_USE_COMPLEX)
        SETERRQ(1,"This example requires complex numbers");
      PetscScalar ee = 3.0*PETSC_i;
      PetscScalar x = 4.0 + ee;
      std::cout<<PetscRealPart(x)<<" "<<PetscImaginaryPart(x)<<std::endl;

after compiling and run, it produces

4 0

which means that the imaginary part is set to be zero....

does anyone have this problem before, or could you please tell me what I 
did wrong in this piece of code.

Thanks a lot
Best regards
Zhifeng Sheng

More information about the petsc-users mailing list