<div class="gmail_quote">On Thu, Aug 23, 2012 at 11:02 AM, Jose E. Roman <span dir="ltr"><<a href="mailto:jroman@dsic.upv.es" target="_blank">jroman@dsic.upv.es</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
El 22/08/2012, a las 18:52, Jose E. Roman escribió:<br>
<br>
</div><div class="im">> f2cblaslapack is more or less prepared for this case already (it is not much tested though, we will make some tests for the w* subroutines tomorrow).<br>
><br>
> What is not ready is PETSc itself. Some definitions are missing. For instance, PetscScalar is undefined, so one should add the following to petscmath.h:106:<br>
><br>
> #elif defined(PETSC_USE_REAL___FLOAT128)<br>
> typedef __complex128 PetscScalar;<br>
><br>
> #define PetscRealPart(a)      crealq(a)<br>
> #define PetscImaginaryPart(a) cimagq(a)<br>
> #define PetscAbsScalar(a)     cabsq(a)<br>
> #define PetscConj(a)          conjq(a)<br>
> #define PetscSqrtScalar(a)    csqrtq(a)<br>
> #define PetscPowScalar(a,b)   cpowq(a,b)<br>
> #define PetscExpScalar(a)     cexpq(a)<br>
> #define PetscLogScalar(a)     clogq(a)<br>
> #define PetscSinScalar(a)     csinq(a)<br>
> #define PetscCosScalar(a)     ccosq(a)<br>
><br>
> Similarly, MPIU_SCALAR should be defined. Maybe other as well.<br>
><br>
> Jose<br>
<br>
</div>I have pushed a change to petsc-dev that allows to configure --with-precision=__float128 --with-scalar-type=complex<br>
<br>
I have tested this with src/ksp/ksp/examples/tutorials/ex12.c with 1 and 2 processes. It seems to work.<br>
<br>
Please review the change, since I had to modify pinit.c<br></blockquote><div><br></div><div>It looks good to me. Thanks.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
A couple of comments:<br>
<br>
1) The f2cblaslapack interface to quad precision subroutines (q* and w*) is defined only in the case of "uscore" mangling. Maybe a test in configure should assure this.<br></blockquote><div><br></div><div>Don't we just need to copy and update the list of defines to the different mangling conventions? Seems easier to do than to test/document that it doesn't work.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
2) I could not make it work --with-clanguage=c++ - I get compilation errors like this. Any idea?<br></blockquote><div><br></div><div>C++, in all it's template metaprogramming glory, standardized that std::complex may *only* be used with float, double, and long double. Using std::complex<anything_else> is invalid. Just one of a very long list of reasons why std::complex should not be used.</div>
</div>