aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreschnett <eschnett@d60812e6-3970-4df4-986e-c251b06effeb>2013-03-08 20:31:28 +0000
committereschnett <eschnett@d60812e6-3970-4df4-986e-c251b06effeb>2013-03-08 20:31:28 +0000
commit67672101e3ec78be4ff80ac5cadf701b521e1a12 (patch)
tree6684a6851845d6e8710308349b435e97ad7ad4ae
parentd41baa4c819a5f3c51d03ce7372286589bce563c (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/PUGHReduce/trunk@105 d60812e6-3970-4df4-986e-c251b06effeb
-rw-r--r--src/ReduceArraysGlobally.c110
-rw-r--r--src/ReduceGA.c108
-rw-r--r--src/ReductionNorm2.c4
-rw-r--r--src/ReductionNorm4.c5
4 files changed, 46 insertions, 181 deletions
diff --git a/src/ReduceArraysGlobally.c b/src/ReduceArraysGlobally.c
index 9f0e6e4..8eda7e8 100644
--- a/src/ReduceArraysGlobally.c
+++ b/src/ReduceArraysGlobally.c
@@ -180,18 +180,6 @@ static int ReduceArraysGlobally (const cGH *GH,
CCTK_INT * input_array_dims;
CCTK_INT * input_array_gz;
- /* temporary complex variables*/
- CCTK_COMPLEX cmplx_tmp;
- #ifdef HAVE_CCTK_COMPLEX8
- CCTK_COMPLEX8 cmplx_tmp8;
- #endif
- #ifdef HAVE_CCTK_COMPLEX16
- CCTK_COMPLEX16 cmplx_tmp16;
- #endif
- #ifdef HAVE_CCTK_COMPLEX32
- CCTK_COMPLEX32 cmplx_tmp32;
- #endif
-
#ifdef CCTK_MPI
int nprocs = 0, global_operation = 0;
const pGH *pughGH = NULL;
@@ -831,25 +819,21 @@ static int ReduceArraysGlobally (const cGH *GH,
break;
#endif
case CCTK_VARIABLE_COMPLEX:
- (*( (CCTK_COMPLEX *) output_values[i])).Re = (*( (CCTK_COMPLEX *) output_values[i])).Re / weight_sum;
- (*( (CCTK_COMPLEX *) output_values[i])).Im = (*( (CCTK_COMPLEX *) output_values[i])).Im / weight_sum;
+ *( (CCTK_COMPLEX *) output_values[i]) = *( (CCTK_COMPLEX *) output_values[i]) / weight_sum;
break;
#ifdef HAVE_CCTK_COMPLEX8
case CCTK_VARIABLE_COMPLEX8:
- (*( (CCTK_COMPLEX8 *) output_values[i])).Re = (*( (CCTK_COMPLEX8 *) output_values[i])).Re / weight_sum;
- (*( (CCTK_COMPLEX8 *) output_values[i])).Im = (*( (CCTK_COMPLEX8 *) output_values[i])).Im / weight_sum;
+ *( (CCTK_COMPLEX8 *) output_values[i]) = *( (CCTK_COMPLEX8 *) output_values[i]) / weight_sum;
break;
#endif
#ifdef HAVE_CCTK_COMPLEX16
case CCTK_VARIABLE_COMPLEX16:
- (*( (CCTK_COMPLEX16 *) output_values[i])).Re = (*( (CCTK_COMPLEX16 *) output_values[i])).Re / weight_sum;
- (*( (CCTK_COMPLEX16 *) output_values[i])).Im = (*( (CCTK_COMPLEX16 *) output_values[i])).Im / weight_sum;
+ *( (CCTK_COMPLEX16 *) output_values[i]) = *( (CCTK_COMPLEX16 *) output_values[i]) / weight_sum;
break;
#endif
#ifdef HAVE_CCTK_COMPLEX32
case CCTK_VARIABLE_COMPLEX32:
- (*( (CCTK_COMPLEX32 *) output_values[i])).Re = (*( (CCTK_COMPLEX32 *) output_values[i])).Re / weight_sum;
- (*( (CCTK_COMPLEX32 *) output_values[i])).Im = (*( (CCTK_COMPLEX32 *) output_values[i])).Im / weight_sum;
+ *( (CCTK_COMPLEX32 *) output_values[i]) = *( (CCTK_COMPLEX32 *) output_values[i]) / weight_sum;
break;
#endif
}
@@ -913,25 +897,21 @@ static int ReduceArraysGlobally (const cGH *GH,
break;
#endif
case CCTK_VARIABLE_COMPLEX:
- (*( (CCTK_COMPLEX *) output_values[i])).Re = (*( (CCTK_COMPLEX *) output_values[i])).Re / num_points;
- (*( (CCTK_COMPLEX *) output_values[i])).Im = (*( (CCTK_COMPLEX *) output_values[i])).Im / num_points;
+ *( (CCTK_COMPLEX *) output_values[i]) = *( (CCTK_COMPLEX *) output_values[i]) / num_points;
break;
#ifdef HAVE_CCTK_COMPLEX8
case CCTK_VARIABLE_COMPLEX8:
- (*( (CCTK_COMPLEX8 *) output_values[i])).Re = (*( (CCTK_COMPLEX8 *) output_values[i])).Re / num_points;
- (*( (CCTK_COMPLEX8 *) output_values[i])).Im = (*( (CCTK_COMPLEX8 *) output_values[i])).Im / num_points;
+ *( (CCTK_COMPLEX8 *) output_values[i]) = *( (CCTK_COMPLEX8 *) output_values[i]) / num_points;
break;
#endif
#ifdef HAVE_CCTK_COMPLEX16
case CCTK_VARIABLE_COMPLEX16:
- (*( (CCTK_COMPLEX16 *) output_values[i])).Re = (*( (CCTK_COMPLEX16 *) output_values[i])).Re / num_points;
- (*( (CCTK_COMPLEX16 *) output_values[i])).Im = (*( (CCTK_COMPLEX16 *) output_values[i])).Im / num_points;
+ *( (CCTK_COMPLEX16 *) output_values[i]) = *( (CCTK_COMPLEX16 *) output_values[i]) / num_points;
break;
#endif
#ifdef HAVE_CCTK_COMPLEX32
case CCTK_VARIABLE_COMPLEX32:
- (*( (CCTK_COMPLEX32 *) output_values[i])).Re = (*( (CCTK_COMPLEX32 *) output_values[i])).Re / num_points;
- (*( (CCTK_COMPLEX32 *) output_values[i])).Im = (*( (CCTK_COMPLEX32 *) output_values[i])).Im / num_points;
+ *( (CCTK_COMPLEX32 *) output_values[i]) = *( (CCTK_COMPLEX32 *) output_values[i]) / num_points;
break;
#endif
}
@@ -950,7 +930,7 @@ static int ReduceArraysGlobally (const cGH *GH,
*( (CCTK_BYTE *) output_values[i]) = sqrt(*( (CCTK_BYTE *) output_values[i]));
break;
case CCTK_VARIABLE_INT:
- *( (CCTK_INT *) output_values[i]) = sqrt( *( (CCTK_INT *) output_values[i]));
+ *( (CCTK_INT *) output_values[i]) = sqrt(*( (CCTK_INT *) output_values[i]));
break;
#ifdef HAVE_CCTK_INT1
case CCTK_VARIABLE_INT1:
@@ -991,37 +971,21 @@ static int ReduceArraysGlobally (const cGH *GH,
break;
#endif
case CCTK_VARIABLE_COMPLEX:
- cmplx_tmp.Re = (*( (CCTK_COMPLEX *) output_values[i])).Re;
- cmplx_tmp.Im = (*( (CCTK_COMPLEX *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/2.0);
- (*( (CCTK_COMPLEX *) output_values[i])).Re = cmplx_tmp.Re;
- (*( (CCTK_COMPLEX *) output_values[i])).Im = cmplx_tmp.Im;
+ *( (CCTK_COMPLEX *) output_values[i]) = CCTK_CmplxSqrt(*( (CCTK_COMPLEX *) output_values[i]));
break;
#ifdef HAVE_CCTK_COMPLEX8
case CCTK_VARIABLE_COMPLEX8:
- cmplx_tmp8.Re = (*( (CCTK_COMPLEX8 *) output_values[i])).Re;
- cmplx_tmp8.Im = (*( (CCTK_COMPLEX8 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/2.0);
- (*( (CCTK_COMPLEX8 *) output_values[i])).Re = cmplx_tmp8.Re;
- (*( (CCTK_COMPLEX8 *) output_values[i])).Im = cmplx_tmp8.Im;
+ *( (CCTK_COMPLEX8 *) output_values[i]) = CCTK_Cmplx8Sqrt(*( (CCTK_COMPLEX8 *) output_values[i]));
break;
#endif
#ifdef HAVE_CCTK_COMPLEX16
case CCTK_VARIABLE_COMPLEX16:
- cmplx_tmp16.Re = (*( (CCTK_COMPLEX16 *) output_values[i])).Re;
- cmplx_tmp16.Im = (*( (CCTK_COMPLEX16 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/2.0);
- (*( (CCTK_COMPLEX16 *) output_values[i])).Re = cmplx_tmp16.Re;
- (*( (CCTK_COMPLEX16 *) output_values[i])).Im = cmplx_tmp16.Im;
+ *( (CCTK_COMPLEX16 *) output_values[i]) = CCTK_Cmplx16Sqrt(*( (CCTK_COMPLEX16 *) output_values[i]));
break;
#endif
#ifdef HAVE_CCTK_COMPLEX32
case CCTK_VARIABLE_COMPLEX32:
- cmplx_tmp32.Re = (*( (CCTK_COMPLEX32 *) output_values[i])).Re;
- cmplx_tmp32.Im = (*( (CCTK_COMPLEX32 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/2.0);
- (*( (CCTK_COMPLEX32 *) output_values[i])).Re = cmplx_tmp32.Re;
- (*( (CCTK_COMPLEX32 *) output_values[i])).Im = cmplx_tmp32.Im;
+ *( (CCTK_COMPLEX32 *) output_values[i]) = CCTK_Cmplx32Sqrt(*( (CCTK_COMPLEX32 *) output_values[i]));
break;
#endif
}
@@ -1080,37 +1044,21 @@ static int ReduceArraysGlobally (const cGH *GH,
break;
#endif
case CCTK_VARIABLE_COMPLEX:
- cmplx_tmp.Re = (*( (CCTK_COMPLEX *) output_values[i])).Re;
- cmplx_tmp.Im = (*( (CCTK_COMPLEX *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/3.0);
- (*( (CCTK_COMPLEX *) output_values[i])).Re = cmplx_tmp.Re;
- (*( (CCTK_COMPLEX *) output_values[i])).Im = cmplx_tmp.Im;
+ *( (CCTK_COMPLEX *) output_values[i]) = CCTK_CmplxPow(*( (CCTK_COMPLEX *) output_values[i]), 1.0/3.0);
break;
#ifdef HAVE_CCTK_COMPLEX8
case CCTK_VARIABLE_COMPLEX8:
- cmplx_tmp8.Re = (*( (CCTK_COMPLEX8 *) output_values[i])).Re;
- cmplx_tmp8.Im = (*( (CCTK_COMPLEX8 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/3.0);
- (*( (CCTK_COMPLEX8 *) output_values[i])).Re = cmplx_tmp8.Re;
- (*( (CCTK_COMPLEX8 *) output_values[i])).Im = cmplx_tmp8.Im;
+ *( (CCTK_COMPLEX8 *) output_values[i]) = CCTK_Cmplx8Pow(*( (CCTK_COMPLEX8 *) output_values[i]), 1.0/3.0);
break;
#endif
#ifdef HAVE_CCTK_COMPLEX16
case CCTK_VARIABLE_COMPLEX16:
- cmplx_tmp16.Re = (*( (CCTK_COMPLEX16 *) output_values[i])).Re;
- cmplx_tmp16.Im = (*( (CCTK_COMPLEX16 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/3.0);
- (*( (CCTK_COMPLEX16 *) output_values[i])).Re = cmplx_tmp16.Re;
- (*( (CCTK_COMPLEX16 *) output_values[i])).Im = cmplx_tmp16.Im;
+ *( (CCTK_COMPLEX16 *) output_values[i]) = CCTK_Cmplx16Pow(*( (CCTK_COMPLEX16 *) output_values[i]), 1.0/3.0);
break;
#endif
#ifdef HAVE_CCTK_COMPLEX32
case CCTK_VARIABLE_COMPLEX32:
- cmplx_tmp32.Re = (*( (CCTK_COMPLEX32 *) output_values[i])).Re;
- cmplx_tmp32.Im = (*( (CCTK_COMPLEX32 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/3.0);
- (*( (CCTK_COMPLEX32 *) output_values[i])).Re = cmplx_tmp32.Re;
- (*( (CCTK_COMPLEX32 *) output_values[i])).Im = cmplx_tmp32.Im;
+ *( (CCTK_COMPLEX32 *) output_values[i]) = CCTK_Cmplx32Pow(*( (CCTK_COMPLEX32 *) output_values[i]), 1.0/3.0);
break;
#endif
}
@@ -1169,37 +1117,21 @@ static int ReduceArraysGlobally (const cGH *GH,
break;
#endif
case CCTK_VARIABLE_COMPLEX:
- cmplx_tmp.Re = (*( (CCTK_COMPLEX *) output_values[i])).Re;
- cmplx_tmp.Im = (*( (CCTK_COMPLEX *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/4.0);
- (*( (CCTK_COMPLEX *) output_values[i])).Re = cmplx_tmp.Re;
- (*( (CCTK_COMPLEX *) output_values[i])).Im = cmplx_tmp.Im;
+ *( (CCTK_COMPLEX *) output_values[i]) = CCTK_CmplxPow(*( (CCTK_COMPLEX *) output_values[i]), 1.0/4.0);
break;
#ifdef HAVE_CCTK_COMPLEX8
case CCTK_VARIABLE_COMPLEX8:
- cmplx_tmp8.Re = (*( (CCTK_COMPLEX8 *) output_values[i])).Re;
- cmplx_tmp8.Im = (*( (CCTK_COMPLEX8 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/4.0);
- (*( (CCTK_COMPLEX8 *) output_values[i])).Re = cmplx_tmp8.Re;
- (*( (CCTK_COMPLEX8 *) output_values[i])).Im = cmplx_tmp8.Im;
+ *( (CCTK_COMPLEX8 *) output_values[i]) = CCTK_Cmplx8Pow(*( (CCTK_COMPLEX8 *) output_values[i]), 1.0/4.0);
break;
#endif
#ifdef HAVE_CCTK_COMPLEX16
case CCTK_VARIABLE_COMPLEX16:
- cmplx_tmp16.Re = (*( (CCTK_COMPLEX16 *) output_values[i])).Re;
- cmplx_tmp16.Im = (*( (CCTK_COMPLEX16 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/4.0);
- (*( (CCTK_COMPLEX16 *) output_values[i])).Re = cmplx_tmp16.Re;
- (*( (CCTK_COMPLEX16 *) output_values[i])).Im = cmplx_tmp16.Im;
+ *( (CCTK_COMPLEX16 *) output_values[i]) = CCTK_Cmplx16Pow(*( (CCTK_COMPLEX16 *) output_values[i]), 1.0/4.0);
break;
#endif
#ifdef HAVE_CCTK_COMPLEX32
case CCTK_VARIABLE_COMPLEX32:
- cmplx_tmp32.Re = (*( (CCTK_COMPLEX32 *) output_values[i])).Re;
- cmplx_tmp32.Im = (*( (CCTK_COMPLEX32 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/4.0);
- (*( (CCTK_COMPLEX32 *) output_values[i])).Re = cmplx_tmp32.Re;
- (*( (CCTK_COMPLEX32 *) output_values[i])).Im = cmplx_tmp32.Im;
+ *( (CCTK_COMPLEX32 *) output_values[i]) = CCTK_Cmplx32Pow(*( (CCTK_COMPLEX32 *) output_values[i]), 1.0/4.0);
break;
#endif
}
diff --git a/src/ReduceGA.c b/src/ReduceGA.c
index 72c74f3..32664e5 100644
--- a/src/ReduceGA.c
+++ b/src/ReduceGA.c
@@ -161,18 +161,6 @@ static int ReduceGridArrays (const cGH *GH,
CCTK_INT * input_array_type_codes;
CCTK_INT * input_array_gz;
- /* temporary complex variables*/
- CCTK_COMPLEX cmplx_tmp;
- #ifdef HAVE_CCTK_COMPLEX8
- CCTK_COMPLEX8 cmplx_tmp8;
- #endif
- #ifdef HAVE_CCTK_COMPLEX16
- CCTK_COMPLEX16 cmplx_tmp16;
- #endif
- #ifdef HAVE_CCTK_COMPLEX32
- CCTK_COMPLEX32 cmplx_tmp32;
- #endif
-
#ifdef CCTK_MPI
int nprocs = 0, global_operation = 0;
const pGH *pughGH = NULL;
@@ -835,25 +823,21 @@ static int ReduceGridArrays (const cGH *GH,
break;
#endif
case CCTK_VARIABLE_COMPLEX:
- (*( (CCTK_COMPLEX *) output_values[i])).Re = (*( (CCTK_COMPLEX *) output_values[i])).Re / weight_sum;
- (*( (CCTK_COMPLEX *) output_values[i])).Im = (*( (CCTK_COMPLEX *) output_values[i])).Im / weight_sum;
+ *( (CCTK_COMPLEX *) output_values[i]) = *( (CCTK_COMPLEX *) output_values[i]) / weight_sum;
break;
#ifdef HAVE_CCTK_COMPLEX8
case CCTK_VARIABLE_COMPLEX8:
- (*( (CCTK_COMPLEX8 *) output_values[i])).Re = (*( (CCTK_COMPLEX8 *) output_values[i])).Re / weight_sum;
- (*( (CCTK_COMPLEX8 *) output_values[i])).Im = (*( (CCTK_COMPLEX8 *) output_values[i])).Im / weight_sum;
+ *( (CCTK_COMPLEX8 *) output_values[i]) = *( (CCTK_COMPLEX8 *) output_values[i]) / weight_sum;
break;
#endif
#ifdef HAVE_CCTK_COMPLEX16
case CCTK_VARIABLE_COMPLEX16:
- (*( (CCTK_COMPLEX16 *) output_values[i])).Re = (*( (CCTK_COMPLEX16 *) output_values[i])).Re / weight_sum;
- (*( (CCTK_COMPLEX16 *) output_values[i])).Im = (*( (CCTK_COMPLEX16 *) output_values[i])).Im / weight_sum;
+ *( (CCTK_COMPLEX16 *) output_values[i]) = *( (CCTK_COMPLEX16 *) output_values[i]) / weight_sum;
break;
#endif
#ifdef HAVE_CCTK_COMPLEX32
case CCTK_VARIABLE_COMPLEX32:
- (*( (CCTK_COMPLEX32 *) output_values[i])).Re = (*( (CCTK_COMPLEX32 *) output_values[i])).Re / weight_sum;
- (*( (CCTK_COMPLEX32 *) output_values[i])).Im = (*( (CCTK_COMPLEX32 *) output_values[i])).Im / weight_sum;
+ *( (CCTK_COMPLEX32 *) output_values[i]) = *( (CCTK_COMPLEX32 *) output_values[i]) / weight_sum;
break;
#endif
}
@@ -917,25 +901,21 @@ static int ReduceGridArrays (const cGH *GH,
break;
#endif
case CCTK_VARIABLE_COMPLEX:
- (*( (CCTK_COMPLEX *) output_values[i])).Re = (*( (CCTK_COMPLEX *) output_values[i])).Re / num_points;
- (*( (CCTK_COMPLEX *) output_values[i])).Im = (*( (CCTK_COMPLEX *) output_values[i])).Im / num_points;
+ *( (CCTK_COMPLEX *) output_values[i]) = *( (CCTK_COMPLEX *) output_values[i]) / num_points;
break;
#ifdef HAVE_CCTK_COMPLEX8
case CCTK_VARIABLE_COMPLEX8:
- (*( (CCTK_COMPLEX8 *) output_values[i])).Re = (*( (CCTK_COMPLEX8 *) output_values[i])).Re / num_points;
- (*( (CCTK_COMPLEX8 *) output_values[i])).Im = (*( (CCTK_COMPLEX8 *) output_values[i])).Im / num_points;
+ *( (CCTK_COMPLEX8 *) output_values[i]) = *( (CCTK_COMPLEX8 *) output_values[i]) / num_points;
break;
#endif
#ifdef HAVE_CCTK_COMPLEX16
case CCTK_VARIABLE_COMPLEX16:
- (*( (CCTK_COMPLEX16 *) output_values[i])).Re = (*( (CCTK_COMPLEX16 *) output_values[i])).Re / num_points;
- (*( (CCTK_COMPLEX16 *) output_values[i])).Im = (*( (CCTK_COMPLEX16 *) output_values[i])).Im / num_points;
+ *( (CCTK_COMPLEX16 *) output_values[i]) = *( (CCTK_COMPLEX16 *) output_values[i]) / num_points;
break;
#endif
#ifdef HAVE_CCTK_COMPLEX32
case CCTK_VARIABLE_COMPLEX32:
- (*( (CCTK_COMPLEX32 *) output_values[i])).Re = (*( (CCTK_COMPLEX32 *) output_values[i])).Re / num_points;
- (*( (CCTK_COMPLEX32 *) output_values[i])).Im = (*( (CCTK_COMPLEX32 *) output_values[i])).Im / num_points;
+ *( (CCTK_COMPLEX32 *) output_values[i]) = *( (CCTK_COMPLEX32 *) output_values[i]) / num_points;
break;
#endif
}
@@ -995,37 +975,21 @@ static int ReduceGridArrays (const cGH *GH,
break;
#endif
case CCTK_VARIABLE_COMPLEX:
- cmplx_tmp.Re = (*( (CCTK_COMPLEX *) output_values[i])).Re;
- cmplx_tmp.Im = (*( (CCTK_COMPLEX *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/2.0);
- (*( (CCTK_COMPLEX *) output_values[i])).Re = cmplx_tmp.Re;
- (*( (CCTK_COMPLEX *) output_values[i])).Im = cmplx_tmp.Im;
+ *( (CCTK_COMPLEX *) output_values[i]) = CCTK_CmplxSqrt(*( (CCTK_COMPLEX *) output_values[i]));
break;
#ifdef HAVE_CCTK_COMPLEX8
case CCTK_VARIABLE_COMPLEX8:
- cmplx_tmp8.Re = (*( (CCTK_COMPLEX8 *) output_values[i])).Re;
- cmplx_tmp8.Im = (*( (CCTK_COMPLEX8 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/2.0);
- (*( (CCTK_COMPLEX8 *) output_values[i])).Re = cmplx_tmp8.Re;
- (*( (CCTK_COMPLEX8 *) output_values[i])).Im = cmplx_tmp8.Im;
+ *( (CCTK_COMPLEX8 *) output_values[i]) = CCTK_Cmplx8Sqrt(*( (CCTK_COMPLEX8 *) output_values[i]));
break;
#endif
#ifdef HAVE_CCTK_COMPLEX16
case CCTK_VARIABLE_COMPLEX16:
- cmplx_tmp16.Re = (*( (CCTK_COMPLEX16 *) output_values[i])).Re;
- cmplx_tmp16.Im = (*( (CCTK_COMPLEX16 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/2.0);
- (*( (CCTK_COMPLEX16 *) output_values[i])).Re = cmplx_tmp16.Re;
- (*( (CCTK_COMPLEX16 *) output_values[i])).Im = cmplx_tmp16.Im;
+ *( (CCTK_COMPLEX16 *) output_values[i]) = CCTK_Cmplx16Sqrt(*( (CCTK_COMPLEX16 *) output_values[i]));
break;
#endif
#ifdef HAVE_CCTK_COMPLEX32
case CCTK_VARIABLE_COMPLEX32:
- cmplx_tmp32.Re = (*( (CCTK_COMPLEX32 *) output_values[i])).Re;
- cmplx_tmp32.Im = (*( (CCTK_COMPLEX32 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/2.0);
- (*( (CCTK_COMPLEX32 *) output_values[i])).Re = cmplx_tmp32.Re;
- (*( (CCTK_COMPLEX32 *) output_values[i])).Im = cmplx_tmp32.Im;
+ *( (CCTK_COMPLEX32 *) output_values[i]) = CCTK_Cmplx32Sqrt(*( (CCTK_COMPLEX32 *) output_values[i]));
break;
#endif
}
@@ -1084,37 +1048,21 @@ static int ReduceGridArrays (const cGH *GH,
break;
#endif
case CCTK_VARIABLE_COMPLEX:
- cmplx_tmp.Re = (*( (CCTK_COMPLEX *) output_values[i])).Re;
- cmplx_tmp.Im = (*( (CCTK_COMPLEX *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/3.0);
- (*( (CCTK_COMPLEX *) output_values[i])).Re = cmplx_tmp.Re;
- (*( (CCTK_COMPLEX *) output_values[i])).Im = cmplx_tmp.Im;
+ *( (CCTK_COMPLEX *) output_values[i]) = CCTK_CmplxPow(*( (CCTK_COMPLEX *) output_values[i]), 1.0/3.0);
break;
#ifdef HAVE_CCTK_COMPLEX8
case CCTK_VARIABLE_COMPLEX8:
- cmplx_tmp8.Re = (*( (CCTK_COMPLEX8 *) output_values[i])).Re;
- cmplx_tmp8.Im = (*( (CCTK_COMPLEX8 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/3.0);
- (*( (CCTK_COMPLEX8 *) output_values[i])).Re = cmplx_tmp8.Re;
- (*( (CCTK_COMPLEX8 *) output_values[i])).Im = cmplx_tmp8.Im;
+ *( (CCTK_COMPLEX8 *) output_values[i]) = CCTK_Cmplx8Pow(*( (CCTK_COMPLEX8 *) output_values[i]), 1.0/3.0);
break;
#endif
#ifdef HAVE_CCTK_COMPLEX16
case CCTK_VARIABLE_COMPLEX16:
- cmplx_tmp16.Re = (*( (CCTK_COMPLEX16 *) output_values[i])).Re;
- cmplx_tmp16.Im = (*( (CCTK_COMPLEX16 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/3.0);
- (*( (CCTK_COMPLEX16 *) output_values[i])).Re = cmplx_tmp16.Re;
- (*( (CCTK_COMPLEX16 *) output_values[i])).Im = cmplx_tmp16.Im;
+ *( (CCTK_COMPLEX16 *) output_values[i]) = CCTK_Cmplx16Pow(*( (CCTK_COMPLEX16 *) output_values[i]), 1.0/3.0);
break;
#endif
#ifdef HAVE_CCTK_COMPLEX32
case CCTK_VARIABLE_COMPLEX32:
- cmplx_tmp32.Re = (*( (CCTK_COMPLEX32 *) output_values[i])).Re;
- cmplx_tmp32.Im = (*( (CCTK_COMPLEX32 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/3.0);
- (*( (CCTK_COMPLEX32 *) output_values[i])).Re = cmplx_tmp32.Re;
- (*( (CCTK_COMPLEX32 *) output_values[i])).Im = cmplx_tmp32.Im;
+ *( (CCTK_COMPLEX32 *) output_values[i]) = CCTK_Cmplx32Pow(*( (CCTK_COMPLEX32 *) output_values[i]), 1.0/3.0);
break;
#endif
}
@@ -1173,37 +1121,21 @@ static int ReduceGridArrays (const cGH *GH,
break;
#endif
case CCTK_VARIABLE_COMPLEX:
- cmplx_tmp.Re = (*( (CCTK_COMPLEX *) output_values[i])).Re;
- cmplx_tmp.Im = (*( (CCTK_COMPLEX *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/4.0);
- (*( (CCTK_COMPLEX *) output_values[i])).Re = cmplx_tmp.Re;
- (*( (CCTK_COMPLEX *) output_values[i])).Im = cmplx_tmp.Im;
+ *( (CCTK_COMPLEX *) output_values[i]) = CCTK_CmplxPow(*( (CCTK_COMPLEX *) output_values[i]), 1.0/4.0);
break;
#ifdef HAVE_CCTK_COMPLEX8
case CCTK_VARIABLE_COMPLEX8:
- cmplx_tmp8.Re = (*( (CCTK_COMPLEX8 *) output_values[i])).Re;
- cmplx_tmp8.Im = (*( (CCTK_COMPLEX8 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/4.0);
- (*( (CCTK_COMPLEX8 *) output_values[i])).Re = cmplx_tmp8.Re;
- (*( (CCTK_COMPLEX8 *) output_values[i])).Im = cmplx_tmp8.Im;
+ *( (CCTK_COMPLEX8 *) output_values[i]) = CCTK_Cmplx8Pow(*( (CCTK_COMPLEX8 *) output_values[i]), 1.0/4.0);
break;
#endif
#ifdef HAVE_CCTK_COMPLEX16
case CCTK_VARIABLE_COMPLEX16:
- cmplx_tmp16.Re = (*( (CCTK_COMPLEX16 *) output_values[i])).Re;
- cmplx_tmp16.Im = (*( (CCTK_COMPLEX16 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/4.0);
- (*( (CCTK_COMPLEX16 *) output_values[i])).Re = cmplx_tmp16.Re;
- (*( (CCTK_COMPLEX16 *) output_values[i])).Im = cmplx_tmp16.Im;
+ *( (CCTK_COMPLEX16 *) output_values[i]) = CCTK_Cmplx16Pow(*( (CCTK_COMPLEX16 *) output_values[i]), 1.0/4.0);
break;
#endif
#ifdef HAVE_CCTK_COMPLEX32
case CCTK_VARIABLE_COMPLEX32:
- cmplx_tmp32.Re = (*( (CCTK_COMPLEX32 *) output_values[i])).Re;
- cmplx_tmp32.Im = (*( (CCTK_COMPLEX32 *) output_values[i])).Im;
- cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/4.0);
- (*( (CCTK_COMPLEX32 *) output_values[i])).Re = cmplx_tmp32.Re;
- (*( (CCTK_COMPLEX32 *) output_values[i])).Im = cmplx_tmp32.Im;
+ *( (CCTK_COMPLEX32 *) output_values[i]) = CCTK_Cmplx32Pow(*( (CCTK_COMPLEX32 *) output_values[i]), 1.0/4.0);
break;
#endif
}
diff --git a/src/ReductionNorm2.c b/src/ReductionNorm2.c
index a93e279..5eb9c3b 100644
--- a/src/ReductionNorm2.c
+++ b/src/ReductionNorm2.c
@@ -315,8 +315,8 @@ static int ReductionNorm2 (const cGH *GH,
case CCTK_VARIABLE_COMPLEX:
#undef REDUCTION_OPERATION
-#define REDUCTION_OPERATION(norm2, scalar) norm2 += SQR ((scalar).Re) + \
- SQR ((scalar).Im)
+#define REDUCTION_OPERATION(norm2, scalar) \
+ norm2 += SQR (CCTK_CmplxReal(scalar)) + SQR (CCTK_CmplxImag(scalar))
ITERATE_ARRAY (CCTK_COMPLEX, num_dims, inarrays[i],
from, to, iterator, points_per_dim,
CCTK_REAL, outvals, num_outvals, total_outvals);
diff --git a/src/ReductionNorm4.c b/src/ReductionNorm4.c
index a95c345..bba43ce 100644
--- a/src/ReductionNorm4.c
+++ b/src/ReductionNorm4.c
@@ -313,8 +313,9 @@ static int ReductionNorm4 (const cGH *GH,
case CCTK_VARIABLE_COMPLEX:
#undef REDUCTION_OPERATION
-#define REDUCTION_OPERATION(norm4, scalar) \
- norm4 += POWER2 (POWER2 ((scalar).Re) + POWER2 ((scalar).Im))
+#define REDUCTION_OPERATION(norm4, scalar) \
+ norm4 += POWER2 (POWER2 (CCTK_CmplxReal(scalar)) + \
+ POWER2 (CCTK_CmplxImag(scalar)))
ITERATE_ARRAY (CCTK_COMPLEX, num_dims, inarrays[i],
from, to, iterator, points_per_dim,
CCTK_REAL, outvals, num_outvals, total_outvals);