aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreschnett <eschnett@10716dce-81a3-4424-a2c8-48026a0d3035>2013-03-08 20:31:39 +0000
committereschnett <eschnett@10716dce-81a3-4424-a2c8-48026a0d3035>2013-03-08 20:31:39 +0000
commitdb6ea0af9df251c399d23aa6d7d8370448421cfe (patch)
treeea9b87426c5cd3313c38dbb798aceb1802993378
parent4516a01d677031be4af9f0b6221cec2b3c258126 (diff)
Replace Cactus complex number type with C/C++ complex numbersHEADmaster
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.c33
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