[petsc-dev] c++, float128 and complex patch

Satish Balay balay at mcs.anl.gov
Wed Sep 6 13:03:12 CDT 2017


On Wed, 6 Sep 2017, Satish Balay wrote:

> > So, could you give me a hint on how I should configure petsc so that this
> > works? Is there a way to enforce the c99 complex numbers even when calling
> > petsc from c++?
> 
> Perhaps this is the change you need?

Looks like I need one more change..

Satish

---------
balay at asterix /home/balay/petsc (master *=)
$ git diff
diff --git a/include/petscmath.h b/include/petscmath.h
index a63f1f4977..a201c3093e 100644
--- a/include/petscmath.h
+++ b/include/petscmath.h
@@ -214,7 +214,7 @@ PETSC_EXTERN MPI_Datatype MPIU___COMPLEX128;
 #endif  /* PETSC_USE_REAL_ */
 #endif  /* ! PETSC_SKIP_COMPLEX */
 
-#elif !defined(__cplusplus) && defined(PETSC_HAVE_C99_COMPLEX) && !defined(PETSC_USE_REAL___FP16)
+#elif defined(PETSC_HAVE_C99_COMPLEX) && !defined(PETSC_USE_REAL___FP16)
 #if !defined(PETSC_SKIP_COMPLEX)
 #define PETSC_HAVE_COMPLEX 1
 #include <complex.h>
@@ -414,7 +414,7 @@ PETSC_EXTERN PetscComplex PETSC_i;
 */
 PETSC_STATIC_INLINE PetscComplex PetscCMPLX(PetscReal x, PetscReal y)
 {
-#if   defined(__cplusplus)
+#if   defined(__cplusplus) && !defined(PETSC_USE_REAL___FLOAT128)
   return PetscComplex(x,y);
 #elif defined(_Imaginary_I)
   return x + y * _Imaginary_I;


More information about the petsc-dev mailing list