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 /src/ReduceArraysGlobally.c | |
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
Diffstat (limited to 'src/ReduceArraysGlobally.c')
-rw-r--r-- | src/ReduceArraysGlobally.c | 110 |
1 files changed, 21 insertions, 89 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 } |