[petsc-dev] more issues
Barry Smith
bsmith at mcs.anl.gov
Thu Jun 2 11:51:06 CDT 2011
I guess. But I think I would argue that you have a buggy compiler/templated C++ class; it should be able to do those comparisons.
Barry
On Jun 2, 2011, at 8:14 AM, Lisandro Dalcin wrote:
> Barry, I'm trying to build like below:
>
> $ ./configure PETSC_ARCH=arch-test --with-shared-libraries=1
> --with-64-bit-indices=1 --with-clanguage=C++ --with-precision=single
> --with-scalar-type=complex
>
> and of course it fails. I'm working on a patch, fixed a few things,
> but I got to this:
>
> [ 39%] Building CXX object CMakeFiles/petsc.dir/src/vec/vec/impls/seq/dvec2.c.o
> /home/devel/petsc/dev/src/vec/vec/impls/seq/bvec1.c: In function
> ‘PetscErrorCode VecScale_Seq(_p_Vec*, PetscScalar)’:
> /home/devel/petsc/dev/src/vec/vec/impls/seq/bvec1.c:89: error: no
> match for ‘operator==’ in ‘alpha == 0.0’
> /home/devel/petsc/dev/src/vec/vec/impls/seq/bvec1.c:91: error: no
> match for ‘operator!=’ in ‘alpha != 1.0e+0’
>
> How do you want this fixed? Should I use casts like (PetscScalar)0.0
> and (PetscScalar)1.0 ??
>
> BTW, is the fix below fine for you?:
>
> diff -r 364ba0cc565f src/sys/random/impls/rand48/rand48.c
> --- a/src/sys/random/impls/rand48/rand48.c Wed Jun 01 15:49:23 2011 -0300
> +++ b/src/sys/random/impls/rand48/rand48.c Thu Jun 02 10:13:48 2011 -0300
> @@ -17,14 +17,19 @@
> #define __FUNCT__ "PetscRandomGetValue_Rand48"
> PetscErrorCode PetscRandomGetValue_Rand48(PetscRandom r,PetscScalar *val)
> {
> +#if defined(PETSC_USE_COMPLEX)
> + PetscReal re,im;
> +#endif
> PetscFunctionBegin;
> -#if defined(PETSC_USE_COMPLEX)
> +#if defined(PETSC_USE_COMPLEX)
> + re = drand48();
> + im = drand48();
> if (r->iset) {
> - *val = PetscRealPart(r->width)*drand48() + PetscRealPart(r->low) +
> - (PetscImaginaryPart(r->width)*drand48() +
> PetscImaginaryPart(r->low)) * PETSC_i;
> + *val = PetscRealPart(r->width)*re + PetscRealPart(r->low) +
> + (PetscImaginaryPart(r->width)*im + PetscImaginaryPart(r->low)) * PETSC_i;
> } else {
> - *val = drand48() + drand48()*PETSC_i;
> - }
> + *val = re + im * PETSC_i;
> + }
> #else
> if (r->iset) *val = r->width * drand48() + r->low;
> else *val = drand48();
>
>
> --
> Lisandro Dalcin
> ---------------
> CIMEC (INTEC/CONICET-UNL)
> Predio CONICET-Santa Fe
> Colectora RN 168 Km 472, Paraje El Pozo
> 3000 Santa Fe, Argentina
> Tel: +54-342-4511594 (ext 1011)
> Tel/Fax: +54-342-4511169
More information about the petsc-dev
mailing list