diff options
Diffstat (limited to 'src/ReductionNorm3.c')
-rw-r--r-- | src/ReductionNorm3.c | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/src/ReductionNorm3.c b/src/ReductionNorm3.c index b201136..bb54b82 100644 --- a/src/ReductionNorm3.c +++ b/src/ReductionNorm3.c @@ -17,7 +17,7 @@ static const char *rcsid = "$Id$"; -CCTK_FILEVERSION(CCTDevelopment_LocalReduce_ReductionNorm3_c); +CCTK_FILEVERSION(CactusBase_LocalReduce_ReductionNorm3_c); /* Define the reduction operations */ @@ -159,6 +159,18 @@ static int ReductionL3 (int N_dims, int operator_handle, 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,74 +354,104 @@ static int ReductionL3 (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/3.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/3.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/3.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/3.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/3.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/3.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/3.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/3.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/3.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/3.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/3.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/3.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; + 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/3.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/3.0); + (*( (CCTK_COMPLEX32 *) output_numbers[i])).Re = cmplx_tmp32.Re; + (*( (CCTK_COMPLEX32 *) output_numbers[i])).Im = cmplx_tmp32.Im; break; #endif } } } - + /* free memory */ free (iters_per_dim); free (indices); |