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/ReduceGA.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/ReduceGA.c')
-rw-r--r-- | src/ReduceGA.c | 108 |
1 files changed, 20 insertions, 88 deletions
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 } |