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

Michael Gegg michael.gegg at tu-berlin.de
Wed Sep 6 11:34:26 CDT 2017

Hello everyone,

a while ago I wrote about a patch for petsc with complex number c++ and 
float128 using c99 complex numbers and you suggested to just use petsc 
with a c build and then just call it from c++ (see below).

I thought that this worked, but I only tried it for my patched version. 
Now I tried to do this for the normal v3.7.6 and I get a lot of errors 
that PetscCompex is not defined when I call it from c++. The 
installation works fine and also the tutorial examples. (which are all c)

It seems that if I call petsc from c++ it tries to switch to c++ complex 
numbers even though I build petsc with c, which are obviously not defined.

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++? I always used

./configure ... --with-cc=gcc --with-cxx=g++ --with-fc=gfortran 
--download-mpich --with-clanguage=c --with-scalar-type=complex 
--with-precision=__float128 --download-f2cblaslapack

As I said, with my patch this works fine. Thanks in advance.

Also I realized that parmetis does only support double and not float128 
and so building petsc with float128 and parmetis crashes. I also made a 
patch for that, that just declares all parmetis relevant parameters as 
real_t instead of PetscReal. Would you be interested in including this 
patch? (its only 2 lines)

Thank you.


Am 03.05.2017 um 18:08 schrieb Michael Gegg:
> Am 03.05.2017 um 16:27 schrieb Matthew Knepley:
>> On Wed, May 3, 2017 at 9:22 AM, Michael Gegg 
>> <michael.gegg at tu-berlin.de <mailto:michael.gegg at tu-berlin.de>> wrote:
>>     Hello Petsc developers,
>>     thank you for providing such a marvellous numerics package, we
>>     had/have a lot of fun using it. For our purposes it was necessary
>>     to use Petsc with c++, float128 and complex. Since this is not
>>     possible with the standard build we made a patch. It uses c style
>>     complex numbers as a workaround.
>>     It can be used with the Parmetis package (there is a little fix
>>     in the interface there) and we have made a Slepc patch that then
>>     also allows to use c++, float128 and complex.
>>     It would be great if you could include it in the petsc software.
>>     We checked the patch for v3.7.6 and v3.7.3 (latest Slepc release)
>> One question. Why would you compile PETSc with C++ if you wanted to 
>> use C99 complex? You can do that with the C build, and call
>> PETSc the same way from C++.
> No specific reason. Thanks for the hint, I tried it and it works. I 
> could have saved some effort there, but I also learned a thing or two 
> ;) I just didn't know that this was possible.
> Thanks,
> Michael
>>   Thanks,
>>     Matt
>>     With best regards,
>>     Michael Gegg
>> -- 
>> What most experimenters take for granted before they begin their 
>> experiments is infinitely more interesting than any results to which 
>> their experiments lead.
>> -- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20170906/647ec472/attachment.html>

More information about the petsc-dev mailing list