diff options
author | eschnett <eschnett@10716dce-81a3-4424-a2c8-48026a0d3035> | 2013-03-08 20:31:39 +0000 |
---|---|---|
committer | eschnett <eschnett@10716dce-81a3-4424-a2c8-48026a0d3035> | 2013-03-08 20:31:39 +0000 |
commit | db6ea0af9df251c399d23aa6d7d8370448421cfe (patch) | |
tree | ea9b87426c5cd3313c38dbb798aceb1802993378 | |
parent | 4516a01d677031be4af9f0b6221cec2b3c258126 (diff) |
Map CCTK_COMPLEX to "double complex" in C, and "complex<double>" in
C++. (It is already mapped to "double complex" in Fortran.)
Update type definitions.
Re-implement Cactus complex number math functions by calling the
respective C functions.
Update thorn that access real and imaginary parts of complex numbers
to use standard-conforming methods instead.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGH/PUGHSlab/trunk@160 10716dce-81a3-4424-a2c8-48026a0d3035
-rw-r--r-- | src/DatatypeConversion.c | 33 |
1 files changed, 14 insertions, 19 deletions
diff --git a/src/DatatypeConversion.c b/src/DatatypeConversion.c index 156e631..1073205 100644 --- a/src/DatatypeConversion.c +++ b/src/DatatypeConversion.c @@ -23,7 +23,7 @@ CCTK_FILEVERSION(CactusPUGH_PUGHSlab_DatatypeConversion_c) /* macro to generate a predefined conversion function along with its prototype */ -#define CONVERSION_FUNCTION(source_type, dest_type, dest_elemtype, conversion)\ +#define CONVERSION_FUNCTION(source_type, dest_type, conversion) \ static CCTK_INT Convert##source_type##to##dest_type (CCTK_INT nelems, \ CCTK_INT src_stride, \ CCTK_INT dst_stride, \ @@ -49,7 +49,7 @@ static CCTK_INT Convert##source_type##to##dest_type (CCTK_INT nelems, \ (void) (dst_type + 0); \ for (_i = 0; _i < nelems; _i++, _src += src_stride, _dst += dst_stride) \ { \ - conversion (*_src, *_dst, dest_elemtype); \ + conversion (*_src, *_dst, dest_type); \ } \ \ return (nelems); \ @@ -63,49 +63,44 @@ static CCTK_INT Convert##source_type##to##dest_type (CCTK_INT nelems, \ /* predefined conversion functions for integers */ #if defined(CCTK_INT1) && defined(CCTK_INT2) -CONVERSION_FUNCTION (INT2, INT1, INT1, CONVERT) +CONVERSION_FUNCTION (INT2, INT1, CONVERT) #endif #if defined(CCTK_INT1) && defined(CCTK_INT4) -CONVERSION_FUNCTION (INT4, INT1, INT1, CONVERT) +CONVERSION_FUNCTION (INT4, INT1, CONVERT) #endif #if defined(CCTK_INT2) && defined(CCTK_INT4) -CONVERSION_FUNCTION (INT4, INT2, INT2, CONVERT) +CONVERSION_FUNCTION (INT4, INT2, CONVERT) #endif #if defined(CCTK_INT1) && defined(CCTK_INT8) -CONVERSION_FUNCTION (INT8, INT1, INT1, CONVERT) +CONVERSION_FUNCTION (INT8, INT1, CONVERT) #endif #if defined(CCTK_INT2) && defined(CCTK_INT8) -CONVERSION_FUNCTION (INT8, INT2, INT2, CONVERT) +CONVERSION_FUNCTION (INT8, INT2, CONVERT) #endif #if defined(CCTK_INT4) && defined(CCTK_INT8) -CONVERSION_FUNCTION (INT8, INT4, INT4, CONVERT) +CONVERSION_FUNCTION (INT8, INT4, CONVERT) #endif /* predefined conversion functions for reals */ #if defined(CCTK_REAL4) && defined(CCTK_REAL8) -CONVERSION_FUNCTION (REAL8, REAL4, REAL4, CONVERT) +CONVERSION_FUNCTION (REAL8, REAL4, CONVERT) #endif #if defined(CCTK_REAL4) && defined(CCTK_REAL16) -CONVERSION_FUNCTION (REAL16, REAL4, REAL4, CONVERT) +CONVERSION_FUNCTION (REAL16, REAL4, CONVERT) #endif #if defined(CCTK_REAL8) && defined(CCTK_REAL16) -CONVERSION_FUNCTION (REAL16, REAL8, REAL8, CONVERT) +CONVERSION_FUNCTION (REAL16, REAL8, CONVERT) #endif -/* the conversion of complex datatypes */ -#undef CONVERT -#define CONVERT(src, dst, dst_type) (dst).Re = (CCTK_##dst_type) (src).Re; \ - (dst).Im = (CCTK_##dst_type) (src).Im - /* predefined conversion functions for complex */ #if defined(CCTK_REAL4) && defined(CCTK_REAL8) -CONVERSION_FUNCTION (COMPLEX16, COMPLEX8, REAL4, CONVERT) +CONVERSION_FUNCTION (COMPLEX16, COMPLEX8, CONVERT) #endif #if defined(CCTK_REAL4) && defined(CCTK_REAL16) -CONVERSION_FUNCTION (COMPLEX32, COMPLEX16, REAL8, CONVERT) +CONVERSION_FUNCTION (COMPLEX32, COMPLEX16, CONVERT) #endif #if defined(CCTK_REAL8) && defined(CCTK_REAL16) -CONVERSION_FUNCTION (COMPLEX32, COMPLEX8, REAL4, CONVERT) +CONVERSION_FUNCTION (COMPLEX32, COMPLEX8, CONVERT) #endif |