diff options
Diffstat (limited to 'src/ReductionNorm4.c')
-rw-r--r-- | src/ReductionNorm4.c | 48 |
1 files changed, 45 insertions, 3 deletions
diff --git a/src/ReductionNorm4.c b/src/ReductionNorm4.c index 37b6afa..376ef3e 100644 --- a/src/ReductionNorm4.c +++ b/src/ReductionNorm4.c @@ -17,7 +17,7 @@ static const char *rcsid = "$Id$"; -CCTK_FILEVERSION(CCTDevelopment_LocalReduce_ReductionNorm4_c); +CCTK_FILEVERSION(CactusBase_LocalReduce_ReductionNorm4_c); /* Define the reduction operations */ @@ -158,7 +158,19 @@ static int ReductionL4 (int N_dims, int operator_handle, CCTK_INT mask_type_code; /* one of the CCTK_VARIABLE_* codes */ CCTK_INT mask_offset; CCTK_INT mask_time_level; - + + /* temporary complex variables*/ + CCTK_COMPLEX cmplx_tmp; + #ifdef CCTK_COMPLEX8 + CCTK_COMPLEX8 cmplx_tmp8; + #endif + #ifdef CCTK_COMPLEX16 + CCTK_COMPLEX16 cmplx_tmp16; + #endif + #ifdef CCTK_COMPLEX32 + CCTK_COMPLEX32 cmplx_tmp32; + #endif + /* prevent warnings for unused vars */ (void)(mask_array); (void)(mask_offset + 0); @@ -342,68 +354,98 @@ static int ReductionL4 (int N_dims, int operator_handle, /* out values type switches*/ case CCTK_VARIABLE_CHAR: *( (CCTK_CHAR *) output_numbers[i]) = *( (CCTK_CHAR *) output_numbers[i]) / num_points; + *( (CCTK_CHAR *) output_numbers[i]) = pow(*( (CCTK_CHAR *) output_numbers[i]), 1.0/4.0); break; case CCTK_VARIABLE_INT: *( (CCTK_INT *) output_numbers[i]) = *( (CCTK_INT *) output_numbers[i]) / num_points; + *( (CCTK_INT *) output_numbers[i]) = pow(*( (CCTK_INT *) output_numbers[i]), 1.0/4.0); break; #ifdef CCTK_INT1 case CCTK_VARIABLE_INT1: *( (CCTK_INT1 *) output_numbers[i]) = *( (CCTK_INT1 *) output_numbers[i]) / num_points; + *( (CCTK_INT1 *) output_numbers[i]) = pow(*( (CCTK_INT1 *) output_numbers[i]), 1.0/4.0); break; #endif #ifdef CCTK_INT2 case CCTK_VARIABLE_INT2: *( (CCTK_INT2 *) output_numbers[i]) = *( (CCTK_INT2 *) output_numbers[i]) / num_points; + *( (CCTK_INT2 *) output_numbers[i]) = pow(*( (CCTK_INT2 *) output_numbers[i]), 1.0/4.0); break; #endif #ifdef CCTK_INT4 case CCTK_VARIABLE_INT4: *( (CCTK_INT4 *) output_numbers[i]) = *( (CCTK_INT4 *) output_numbers[i]) / num_points; + *( (CCTK_INT4 *) output_numbers[i]) = pow( *( (CCTK_INT4 *) output_numbers[i]), 1.0/4.0); break; #endif #ifdef CCTK_INT8 case CCTK_VARIABLE_INT8: *( (CCTK_INT8 *) output_numbers[i]) = *( (CCTK_INT8 *) output_numbers[i]) / num_points; + *( (CCTK_INT8 *) output_numbers[i]) = pow(*( (CCTK_INT8 *) output_numbers[i]), 1.0/4.0); break; #endif case CCTK_VARIABLE_REAL: *( (CCTK_REAL *) output_numbers[i]) = *( (CCTK_REAL *) output_numbers[i]) / num_points; + *( (CCTK_REAL *) output_numbers[i]) = pow(*( (CCTK_REAL *) output_numbers[i]), 1.0/4.0); break; #ifdef CCTK_REAL4 case CCTK_VARIABLE_REAL4: *( (CCTK_REAL4 *) output_numbers[i]) = *( (CCTK_REAL4 *) output_numbers[i]) / num_points; + *( (CCTK_REAL4 *) output_numbers[i]) = pow(*( (CCTK_REAL4 *) output_numbers[i]), 1.0/4.0); break; #endif #ifdef CCTK_REAL8 case CCTK_VARIABLE_REAL8: *( (CCTK_REAL8 *) output_numbers[i]) = *( (CCTK_REAL8 *) output_numbers[i]) / num_points; + *( (CCTK_REAL8 *) output_numbers[i]) = pow(*( (CCTK_REAL8 *) output_numbers[i]), 1.0/4.0); break; #endif #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: *( (CCTK_REAL16 *) output_numbers[i]) = *( (CCTK_REAL16 *) output_numbers[i]) / num_points; + *( (CCTK_REAL16 *) output_numbers[i]) = pow(*( (CCTK_REAL16 *) output_numbers[i]), 1.0/4.0); break; #endif case CCTK_VARIABLE_COMPLEX: (*( (CCTK_COMPLEX *) output_numbers[i])).Re = (*( (CCTK_COMPLEX *) output_numbers[i])).Re / num_points; (*( (CCTK_COMPLEX *) output_numbers[i])).Im = (*( (CCTK_COMPLEX *) output_numbers[i])).Im / num_points; + cmplx_tmp.Re = (*( (CCTK_COMPLEX *) output_numbers[i])).Re; + cmplx_tmp.Im = (*( (CCTK_COMPLEX *) output_numbers[i])).Im; + cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/4.0); + (*( (CCTK_COMPLEX *) output_numbers[i])).Re = cmplx_tmp.Re; + (*( (CCTK_COMPLEX *) output_numbers[i])).Im = cmplx_tmp.Im; break; #ifdef CCTK_COMPLEX8 case CCTK_VARIABLE_COMPLEX8: (*( (CCTK_COMPLEX8 *) output_numbers[i])).Re = (*( (CCTK_COMPLEX8 *) output_numbers[i])).Re / num_points; (*( (CCTK_COMPLEX8 *) output_numbers[i])).Im = (*( (CCTK_COMPLEX8 *) output_numbers[i])).Im / num_points; + cmplx_tmp8.Re = (*( (CCTK_COMPLEX8 *) output_numbers[i])).Re; + cmplx_tmp8.Im = (*( (CCTK_COMPLEX8 *) output_numbers[i])).Im; + cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/4.0); + (*( (CCTK_COMPLEX8 *) output_numbers[i])).Re = cmplx_tmp8.Re; + (*( (CCTK_COMPLEX8 *) output_numbers[i])).Im = cmplx_tmp8.Im; break; #endif #ifdef CCTK_COMPLEX16 case CCTK_VARIABLE_COMPLEX16: (*( (CCTK_COMPLEX16 *) output_numbers[i])).Re = (*( (CCTK_COMPLEX16 *) output_numbers[i])).Re / num_points; - (*( (CCTK_COMPLEX16 *) output_numbers[i])).Im = (*( (CCTK_COMPLEX16 *) output_numbers[i])).Im / num_points; + (*( (CCTK_COMPLEX16 *) output_numbers[i])).Im = (*( (CCTK_COMPLEX16 *) output_numbers[i])).Im / num_points; + cmplx_tmp16.Re = (*( (CCTK_COMPLEX16 *) output_numbers[i])).Re; + cmplx_tmp16.Im = (*( (CCTK_COMPLEX16 *) output_numbers[i])).Im; + cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/4.0); + (*( (CCTK_COMPLEX16 *) output_numbers[i])).Re = cmplx_tmp16.Re; + (*( (CCTK_COMPLEX16 *) output_numbers[i])).Im = cmplx_tmp16.Im; break; #endif #ifdef CCTK_COMPLEX32 case CCTK_VARIABLE_COMPLEX32: (*( (CCTK_COMPLEX32 *) output_numbers[i])).Re = (*( (CCTK_COMPLEX32 *) output_numbers[i])).Re / num_points; (*( (CCTK_COMPLEX32 *) output_numbers[i])).Im = (*( (CCTK_COMPLEX32 *) output_numbers[i])).Im / num_points; + cmplx_tmp32.Re = (*( (CCTK_COMPLEX32 *) output_numbers[i])).Re; + cmplx_tmp32.Im = (*( (CCTK_COMPLEX32 *) output_numbers[i])).Im; + cmplx_tmp = CCTK_CmplxPow(cmplx_tmp, 1.0/4.0); + (*( (CCTK_COMPLEX32 *) output_numbers[i])).Re = cmplx_tmp32.Re; + (*( (CCTK_COMPLEX32 *) output_numbers[i])).Im = cmplx_tmp32.Im; break; #endif } |