Barry, Believe me, I apologize if it came across as me trying to dump something else on your plates. I was simply trying to point out some shortcomings of standard approaches to complex numbers.
I know that PETSc supports quad precision for real numbers, but it seems that there isn't yet a good way to do so for the complex case, as it would require a custom complex class. If not, please let me know! Jack On Tue, Feb 7, 2012 at 1:26 PM, Barry Smith <bsmith at mcs.anl.gov> wrote: > > Jack, > > PetscScalar is defined in petscmath.h to be one of several things: > > typedef std::complex<float> PetscScalar; > typedef std::complex<double> PetscScalar; > typedef float complex PetscScalar; > typedef double complex PetscScalar; > typedef float PetscScalar; > typedef double PetscScalar; > typedef __float128 PetscScalar; > > Matt's point is that WE (the guys hacking on PETSc everyday) are not going > to add other possibilities for cusp and complex at this point in time. We > simply don't have the time/reason to add all this functionality now. If > recursader wants that functionality he is free to hack the code and add it; > if he does it in a clean way that he can provide patches then we will put > the patches into petsc-dev. We simply don't have the resources to add all > stuff to PETSc that anyone wants anytime and we have to focus on adding > functionality that is commonly needed and will be widely used (especially > within DOE). > > Barry > > > > On Feb 7, 2012, at 12:10 PM, Jack Poulson wrote: > > > On Tue, Feb 7, 2012 at 11:29 AM, Matthew Knepley <knepley at gmail.com> > wrote: > > On Tue, Feb 7, 2012 at 11:20 AM, recrusader <recrusader at gmail.com> > wrote: > > Whether is it possible to find an efficient mechanism to do the > conversion between std::complex and cusp::complex when the conversion is > necessary. > > > > That does not matter. This is a compile error. We are not going to > change this right now, and it seems like you are not going > > make the necessary changes, so I would say that complex numbers are not > supported with our GPU code right now. The > > change would involve using cusp::complex for PetscScalar, and I am not > sure how much work that would entail. > > > > Matt > > > > Matt, > > > > You might be interested to hear that the C++03 standard states that "The > effect of instantiating the template complex for any type other than float, > double or long double is unspecified". Thus, complex quad precision with it > is probably a bad idea and, if I'm not mistaken, the standard does not > state that the class must store data in the form > > > > double real, imag; > > > > so this could potentially break interfaces (e.g., to BLAS or LAPACK). > Maybe it would be worthwhile to avoid usage of std::complex and > simultaneously fix the compatibility issue with cusp::complex. I recently > ripped std::complex out of Elemental for the above reasons. > > > > Jack > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120207/9daa3753/attachment-0001.htm>
