diff options
author | eschnett <eschnett@d60812e6-3970-4df4-986e-c251b06effeb> | 2013-03-08 20:31:28 +0000 |
---|---|---|
committer | eschnett <eschnett@d60812e6-3970-4df4-986e-c251b06effeb> | 2013-03-08 20:31:28 +0000 |
commit | 67672101e3ec78be4ff80ac5cadf701b521e1a12 (patch) | |
tree | 6684a6851845d6e8710308349b435e97ad7ad4ae | |
parent | d41baa4c819a5f3c51d03ce7372286589bce563c (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/PUGHReduce/trunk@105 d60812e6-3970-4df4-986e-c251b06effeb
-rw-r--r-- | src/ReduceArraysGlobally.c | 110 | ||||
-rw-r--r-- | src/ReduceGA.c | 108 | ||||
-rw-r--r-- | src/ReductionNorm2.c | 4 | ||||
-rw-r--r-- | src/ReductionNorm4.c | 5 |
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); |