From 0580b166b649e4f697247b90fb2b92ae7e291610 Mon Sep 17 00:00:00 2001 From: yye00 Date: Tue, 26 Oct 2004 23:36:09 +0000 Subject: new implementation of LocalReduction that does not cause compilers to crash, changed the cascaded switch statements to function calls git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/LocalReduce/trunk@48 7daa882c-dc44-4453-834e-278d26b18e6a --- src/AvgFunctions.c | 3116 +++++++++++++++++++++++++++++++++++++ src/Avg_Functions.h | 73 + src/CountFunctions.c | 3114 +++++++++++++++++++++++++++++++++++++ src/Count_Functions.h | 73 + src/MaxFunctions.c | 3115 +++++++++++++++++++++++++++++++++++++ src/Max_Functions.h | 73 + src/MinFunctions.c | 3114 +++++++++++++++++++++++++++++++++++++ src/Min_Functions.h | 73 + src/Norm1Functions.c | 3539 ++++++++++++++++++++++++++++++++++++++++++ src/Norm1_Functions.h | 73 + src/Norm2Functions.c | 3619 +++++++++++++++++++++++++++++++++++++++++++ src/Norm2_Functions.h | 73 + src/Norm3Functions.c | 3624 +++++++++++++++++++++++++++++++++++++++++++ src/Norm3_Functions.h | 73 + src/Norm4Functions.c | 3619 +++++++++++++++++++++++++++++++++++++++++++ src/Norm4_Functions.h | 73 + src/NormInfFunctions.c | 3963 +++++++++++++++++++++++++++++++++++++++++++++++ src/NormInf_Functions.h | 73 + src/Reduction.c | 1 + src/ReductionAvg.c | 991 +----------- src/ReductionCount.c | 946 +---------- src/ReductionMax.c | 954 +----------- src/ReductionMin.c | 943 +---------- src/ReductionNorm1.c | 982 +----------- src/ReductionNorm2.c | 947 +---------- src/ReductionNorm3.c | 982 +----------- src/ReductionNorm4.c | 947 +---------- src/ReductionNormInf.c | 1034 +------------ src/ReductionSum.c | 944 +---------- src/Startup.c | 7 +- src/SumFunctions.c | 3115 +++++++++++++++++++++++++++++++++++++ src/Sum_Functions.h | 73 + src/local_reductions.h | 16 +- src/make.code.defn | 2 +- 34 files changed, 34944 insertions(+), 9420 deletions(-) create mode 100644 src/AvgFunctions.c create mode 100644 src/Avg_Functions.h create mode 100644 src/CountFunctions.c create mode 100644 src/Count_Functions.h create mode 100644 src/MaxFunctions.c create mode 100644 src/Max_Functions.h create mode 100644 src/MinFunctions.c create mode 100644 src/Min_Functions.h create mode 100644 src/Norm1Functions.c create mode 100644 src/Norm1_Functions.h create mode 100644 src/Norm2Functions.c create mode 100644 src/Norm2_Functions.h create mode 100644 src/Norm3Functions.c create mode 100644 src/Norm3_Functions.h create mode 100644 src/Norm4Functions.c create mode 100644 src/Norm4_Functions.h create mode 100644 src/NormInfFunctions.c create mode 100644 src/NormInf_Functions.h create mode 100644 src/SumFunctions.c create mode 100644 src/Sum_Functions.h diff --git a/src/AvgFunctions.c b/src/AvgFunctions.c new file mode 100644 index 0000000..5228ef9 --- /dev/null +++ b/src/AvgFunctions.c @@ -0,0 +1,3116 @@ + /*@@ + @file AvgFunctions.c + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + The functions responsible for performing the actual iteration. + Having cascaded switch statements broke some compilers. + @enddesc + @version $Id$ + @@*/ + +#include "cctk.h" +#include "local_reductions.h" +#include "Avg_Functions.h" + +#ifdef __cplusplus +extern "C" { +#endif + + + +int LocalReduce_Avg_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +int LocalReduce_Avg_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_VARIABLE_INT1 +int LocalReduce_Avg_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT11 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT12 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT14 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT18 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_VARIABLE_INT2 +int LocalReduce_Avg_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT21 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT22 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT24 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT28 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_VARIABLE_INT4 +int LocalReduce_Avg_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_VARIABLE_INT8 +int LocalReduce_Avg_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Avg_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_VARIABLE_REAL4 +int LocalReduce_Avg_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_VARIABLE_REAL8 +int LocalReduce_Avg_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Avg_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Avg_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Avg_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Avg_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Avg_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd8( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd16( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(avg, scalar) avg = CCTK_CmplxAdd32( avg, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(avg, scalar) avg = avg + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/Avg_Functions.h b/src/Avg_Functions.h new file mode 100644 index 0000000..c183594 --- /dev/null +++ b/src/Avg_Functions.h @@ -0,0 +1,73 @@ + /*@@ + @header Avg_Functions.h + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + Prototypes for Avg reduction operators + @enddesc + @version $Header$ + @@*/ + +#ifndef _Avg_FUNCTIONS_H_ +#define _Avg_FUNCTIONS_H_ + +#include "cctk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Avg reduction functions */ +int LocalReduce_Avg_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +int LocalReduce_Avg_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_INT1 +int LocalReduce_Avg_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Avg_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Avg_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Avg_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Avg_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_REAL4 +int LocalReduce_Avg_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Avg_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Avg_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Avg_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Avg_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Avg_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Avg_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/CountFunctions.c b/src/CountFunctions.c new file mode 100644 index 0000000..1f0a5a9 --- /dev/null +++ b/src/CountFunctions.c @@ -0,0 +1,3114 @@ + /*@@ + @file CountFunctions.c + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + The functions responsible for performing the actual iteration. + Having cascaded switch statements broke some compilers. + @enddesc + @version $Id$ + @@*/ + +#include "cctk.h" +#include "local_reductions.h" +#include "Count_Functions.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int LocalReduce_Count_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +int LocalReduce_Count_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_INT1 +int LocalReduce_Count_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT11 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT12 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT14 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT18 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Count_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT21 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT22 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT24 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT28 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Count_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Count_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Count_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_REAL4 +int LocalReduce_Count_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Count_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Count_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Count_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Count_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Count_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Count_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Count, scalar) (Count).Re = num_points; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Count, scalar) Count = num_points; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/Count_Functions.h b/src/Count_Functions.h new file mode 100644 index 0000000..9df20f3 --- /dev/null +++ b/src/Count_Functions.h @@ -0,0 +1,73 @@ + /*@@ + @header Count_Functions.h + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + Prototypes for Count reduction operators + @enddesc + @version $Header$ + @@*/ + +#ifndef _Count_FUNCTIONS_H_ +#define _Count_FUNCTIONS_H_ + +#include "cctk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Count reduction functions */ +int LocalReduce_Count_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +int LocalReduce_Count_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_INT1 +int LocalReduce_Count_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Count_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Count_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Count_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Count_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_REAL4 +int LocalReduce_Count_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Count_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Count_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Count_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Count_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Count_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Count_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/MaxFunctions.c b/src/MaxFunctions.c new file mode 100644 index 0000000..92b0dc3 --- /dev/null +++ b/src/MaxFunctions.c @@ -0,0 +1,3115 @@ + /*@@ + @file MaxFunctions.c + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + The functions responsible for performing the actual iteration. + Having cascaded switch statements broke some compilers. + @enddesc + @version $Id$ + @@*/ + +#include "cctk.h" +#include "local_reductions.h" +#include "Max_Functions.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +int LocalReduce_Max_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +int LocalReduce_Max_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_INT1 +int LocalReduce_Max_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT11 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT12 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT14 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT18 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Max_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT21 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT22 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT24 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT28 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Max_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Max_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Max_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_REAL4 +int LocalReduce_Max_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Max_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Max_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Max_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Max_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Max_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Max_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Max, scalar) if ((Max).Re < (scalar).Re) (Max).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/Max_Functions.h b/src/Max_Functions.h new file mode 100644 index 0000000..275fe78 --- /dev/null +++ b/src/Max_Functions.h @@ -0,0 +1,73 @@ + /*@@ + @header Max_Functions.h + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + Prototypes for Max reduction operators + @enddesc + @version $Header$ + @@*/ + +#ifndef _Max_FUNCTIONS_H_ +#define _Max_FUNCTIONS_H_ + +#include "cctk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Max reduction functions */ +int LocalReduce_Max_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +int LocalReduce_Max_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_INT1 +int LocalReduce_Max_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Max_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Max_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Max_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Max_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_REAL4 +int LocalReduce_Max_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Max_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Max_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Max_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Max_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Max_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Max_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/MinFunctions.c b/src/MinFunctions.c new file mode 100644 index 0000000..1922ebf --- /dev/null +++ b/src/MinFunctions.c @@ -0,0 +1,3114 @@ + /*@@ + @file MinFunctions.c + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + The functions responsible for performing the actual iteration. + Having cascaded switch statements broke some compilers. + @enddesc + @version $Id$ + @@*/ + +#include "cctk.h" +#include "local_reductions.h" +#include "Min_Functions.h" + +#ifdef __cplusplus +extern "C" { +#endif + +int LocalReduce_Min_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +int LocalReduce_Min_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_INT1 +int LocalReduce_Min_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT11 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT12 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT14 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT18 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Min_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT21 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT22 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT24 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT28 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Min_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Min_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Min_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_REAL4 +int LocalReduce_Min_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Min_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Min_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Min_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Min_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Min_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Min_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Min, scalar) if ((Min).Re > (scalar).Re) (Min).Re = (scalar).Re; +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Min, scalar) if (Min < scalar) Min = scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/Min_Functions.h b/src/Min_Functions.h new file mode 100644 index 0000000..e690828 --- /dev/null +++ b/src/Min_Functions.h @@ -0,0 +1,73 @@ + /*@@ + @header Min_Functions.h + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + Prototypes for Min reduction operators + @enddesc + @version $Header$ + @@*/ + +#ifndef _Min_FUNCTIONS_H_ +#define _Min_FUNCTIONS_H_ + +#include "cctk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Min reduction functions */ +int LocalReduce_Min_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +int LocalReduce_Min_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_INT1 +int LocalReduce_Min_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Min_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Min_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Min_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Min_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_REAL4 +int LocalReduce_Min_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Min_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Min_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Min_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Min_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Min_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Min_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/Norm1Functions.c b/src/Norm1Functions.c new file mode 100644 index 0000000..6330c9f --- /dev/null +++ b/src/Norm1Functions.c @@ -0,0 +1,3539 @@ + /*@@ + @file Norm1Functions.c + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + The functions responsible for performing the actual iteration. + Having cascaded switch statements broke some compilers. + @enddesc + @version $Id$ + @@*/ + +#include "cctk.h" +#include "local_reductions.h" +#include "Norm1_Functions.h" + +#ifdef _cplusplus +extern "C" { +#endif + + +int LocalReduce_Norm1_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +int LocalReduce_Norm1_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_INT1 +int LocalReduce_Norm1_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT11 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT12 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT14 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT18 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Norm1_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT21 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT22 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT24 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT28 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Norm1_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Norm1_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Norm1_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_REAL4 +int LocalReduce_Norm1_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Norm1_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Norm1_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Norm1_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Norm1_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Norm1_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Norm1_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd8( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd16( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm1, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);Norm1 = CCTK_CmplxAdd32( Norm1, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + + +#ifdef _cplusplus +} +#endif diff --git a/src/Norm1_Functions.h b/src/Norm1_Functions.h new file mode 100644 index 0000000..e6fd99b --- /dev/null +++ b/src/Norm1_Functions.h @@ -0,0 +1,73 @@ + /*@@ + @header Norm1_Functions.h + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + Prototypes for Norm1 reduction operators + @enddesc + @version $Header$ + @@*/ + +#ifndef _Norm1_FUNCTIONS_H_ +#define _Norm1_FUNCTIONS_H_ + +#include "cctk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Norm1 reduction functions */ +int LocalReduce_Norm1_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +int LocalReduce_Norm1_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_INT1 +int LocalReduce_Norm1_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Norm1_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Norm1_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Norm1_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Norm1_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_REAL4 +int LocalReduce_Norm1_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Norm1_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Norm1_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Norm1_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Norm1_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Norm1_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Norm1_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/Norm2Functions.c b/src/Norm2Functions.c new file mode 100644 index 0000000..9caae45 --- /dev/null +++ b/src/Norm2Functions.c @@ -0,0 +1,3619 @@ + /*@@ + @file Norm2Functions.c + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + The functions responsible for performing the actual iteration. + Having cascaded switch statements broke some compilers. + @enddesc + @version $Id$ + @@*/ + +#include "cctk.h" +#include "local_reductions.h" +#include "Norm2_Functions.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +int LocalReduce_Norm2_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +int LocalReduce_Norm2_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_INT1 +int LocalReduce_Norm2_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT11 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT12 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT14 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT18 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Norm2_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT21 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT22 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT24 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT28 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Norm2_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Norm2_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Norm2_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_REAL4 +int LocalReduce_Norm2_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Norm2_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Norm2_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm2, scalar) (scalar).Re = SQR((scalar).Re); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Norm2_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul(scalar,scalar); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul8(scalar,scalar);Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul16(scalar,scalar); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul32(scalar,scalar); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Norm2_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul(scalar,scalar); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul8(scalar,scalar);Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul16(scalar,scalar); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul32(scalar,scalar); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Norm2_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul(scalar,scalar); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul8(scalar,scalar);Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul16(scalar,scalar); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul32(scalar,scalar); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Norm2_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul(scalar,scalar); Norm2 = CCTK_CmplxAdd( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul8(scalar,scalar);Norm2 = CCTK_CmplxAdd8( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul16(scalar,scalar); Norm2 = CCTK_CmplxAdd16( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm2, scalar) scalar = CCTK_CmplxMul32(scalar,scalar); Norm2 = CCTK_CmplxAdd32( Norm2, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef SQR +#undef SQR +#endif +#define SQR(x) ((x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm2, scalar) Norm2 = Norm2 + SQR(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/Norm2_Functions.h b/src/Norm2_Functions.h new file mode 100644 index 0000000..68edced --- /dev/null +++ b/src/Norm2_Functions.h @@ -0,0 +1,73 @@ + /*@@ + @header Norm2_Functions.h + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + Prototypes for Norm2 reduction operators + @enddesc + @version $Header$ + @@*/ + +#ifndef _Norm2_FUNCTIONS_H_ +#define _Norm2_FUNCTIONS_H_ + +#include "cctk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Norm2 reduction functions */ +int LocalReduce_Norm2_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +int LocalReduce_Norm2_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_INT1 +int LocalReduce_Norm2_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Norm2_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Norm2_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Norm2_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Norm2_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_REAL4 +int LocalReduce_Norm2_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Norm2_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Norm2_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Norm2_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Norm2_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Norm2_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Norm2_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/Norm3Functions.c b/src/Norm3Functions.c new file mode 100644 index 0000000..f12d68c --- /dev/null +++ b/src/Norm3Functions.c @@ -0,0 +1,3624 @@ + /*@@ + @file Norm3Functions.c + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + The functions responsible for performing the actual iteration. + Having cascaded switch statements broke some compilers. + @enddesc + @version $Id$ + @@*/ + +#include "cctk.h" +#include "local_reductions.h" +#include "Norm3_Functions.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((x) < 0 ? -(x) : (x)) + + +int LocalReduce_Norm3_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +int LocalReduce_Norm3_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_INT1 +int LocalReduce_Norm3_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT11 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT12 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT14 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT18 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Norm3_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT21 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT22 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT24 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT28 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Norm3_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Norm3_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Norm3_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_REAL4 +int LocalReduce_Norm3_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Norm3_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Norm3_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm3, scalar) (scalar).Re = CUBE_ABS((scalar).Re); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Norm3_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul(scalar, CCTK_CmplxMul(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul8(scalar, CCTK_CmplxMul8(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul16(scalar, CCTK_CmplxMul16(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul32(scalar, CCTK_CmplxMul32(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Norm3_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul(scalar, CCTK_CmplxMul(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul8(scalar, CCTK_CmplxMul8(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul16(scalar, CCTK_CmplxMul16(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul32(scalar, CCTK_CmplxMul32(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Norm3_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul(scalar, CCTK_CmplxMul(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul8(scalar, CCTK_CmplxMul8(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul16(scalar, CCTK_CmplxMul16(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul32(scalar, CCTK_CmplxMul32(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Norm3_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul(scalar, CCTK_CmplxMul(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul8(scalar, CCTK_CmplxMul8(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd8( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul16(scalar, CCTK_CmplxMul16(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd16( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm3, scalar) scalar = CCTK_CmplxMul32(scalar, CCTK_CmplxMul32(scalar,scalar)); (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im); Norm3 = CCTK_CmplxAdd32( Norm3, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef CUBE_ABS +#undef CUBE_ABS +#endif +#define CUBE_ABS(x) ((CCTK_REAL)(x) < 0 ? -((x) * (x) * (x)) : (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm3, scalar) Norm3 = Norm3 + CUBE_ABS(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/Norm3_Functions.h b/src/Norm3_Functions.h new file mode 100644 index 0000000..09a1aa2 --- /dev/null +++ b/src/Norm3_Functions.h @@ -0,0 +1,73 @@ + /*@@ + @header Norm3_Functions.h + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + Prototypes for Norm3 reduction operators + @enddesc + @version $Header$ + @@*/ + +#ifndef _Norm3_FUNCTIONS_H_ +#define _Norm3_FUNCTIONS_H_ + +#include "cctk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Norm3 reduction functions */ +int LocalReduce_Norm3_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +int LocalReduce_Norm3_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_INT1 +int LocalReduce_Norm3_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Norm3_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Norm3_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Norm3_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Norm3_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_REAL4 +int LocalReduce_Norm3_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Norm3_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Norm3_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Norm3_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Norm3_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Norm3_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Norm3_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/Norm4Functions.c b/src/Norm4Functions.c new file mode 100644 index 0000000..64cc946 --- /dev/null +++ b/src/Norm4Functions.c @@ -0,0 +1,3619 @@ + /*@@ + @file Norm4Functions.c + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + The functions responsible for performing the actual iteration. + Having cascaded switch statements broke some compilers. + @enddesc + @version $Id$ + @@*/ + +#include "cctk.h" +#include "local_reductions.h" +#include "Norm4_Functions.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +int LocalReduce_Norm4_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +int LocalReduce_Norm4_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_INT1 +int LocalReduce_Norm4_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT11 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT12 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT14 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT18 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Norm4_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT21 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT22 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT24 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT28 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Norm4_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Norm4_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Norm4_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_REAL4 +int LocalReduce_Norm4_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Norm4_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Norm4_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Norm4, scalar) (scalar).Re = POWER4((scalar).Re); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Norm4_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul(scalar, scalar); CCTK_CmplxMul(scalar,scalar); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul8(scalar,scalar); scalar = CCTK_CmplxMul8(scalar,scalar);Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul16(scalar,scalar); scalar = CCTK_CmplxMul16(scalar,scalar); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul32(scalar,scalar); scalar = CCTK_CmplxMul32(scalar,scalar); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Norm4_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul(scalar, scalar); CCTK_CmplxMul(scalar,scalar); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul8(scalar,scalar); scalar = CCTK_CmplxMul8(scalar,scalar);Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul16(scalar,scalar); scalar = CCTK_CmplxMul16(scalar,scalar); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul32(scalar,scalar); scalar = CCTK_CmplxMul32(scalar,scalar); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Norm4_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul(scalar, scalar); CCTK_CmplxMul(scalar,scalar); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul8(scalar,scalar); scalar = CCTK_CmplxMul8(scalar,scalar);Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul16(scalar,scalar); scalar = CCTK_CmplxMul16(scalar,scalar); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul32(scalar,scalar); scalar = CCTK_CmplxMul32(scalar,scalar); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Norm4_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul(scalar, scalar); CCTK_CmplxMul(scalar,scalar); Norm4 = CCTK_CmplxAdd( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul8(scalar,scalar); scalar = CCTK_CmplxMul8(scalar,scalar);Norm4 = CCTK_CmplxAdd8( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul16(scalar,scalar); scalar = CCTK_CmplxMul16(scalar,scalar); Norm4 = CCTK_CmplxAdd16( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Norm4, scalar) scalar = CCTK_CmplxMul32(scalar,scalar); scalar = CCTK_CmplxMul32(scalar,scalar); Norm4 = CCTK_CmplxAdd32( Norm4, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef POWER4 +#undef POWER4 +#endif +#define POWER4(x) ((x) * (x) * (x) * (x)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) ((typed_vdata[sum_indices]).Re); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) ((typed_vdata[sum_indices]).Re); +#endif + +#define REDUCTION_OPERATION(Norm4, scalar) Norm4 = Norm4 + POWER4(scalar); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/Norm4_Functions.h b/src/Norm4_Functions.h new file mode 100644 index 0000000..8517704 --- /dev/null +++ b/src/Norm4_Functions.h @@ -0,0 +1,73 @@ + /*@@ + @header Norm4_Functions.h + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + Prototypes for Norm4 reduction operators + @enddesc + @version $Header$ + @@*/ + +#ifndef _Norm4_FUNCTIONS_H_ +#define _Norm4_FUNCTIONS_H_ + +#include "cctk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Norm4 reduction functions */ +int LocalReduce_Norm4_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +int LocalReduce_Norm4_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_INT1 +int LocalReduce_Norm4_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Norm4_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Norm4_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Norm4_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Norm4_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_REAL4 +int LocalReduce_Norm4_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Norm4_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Norm4_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Norm4_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Norm4_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Norm4_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Norm4_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/NormInfFunctions.c b/src/NormInfFunctions.c new file mode 100644 index 0000000..f690619 --- /dev/null +++ b/src/NormInfFunctions.c @@ -0,0 +1,3963 @@ + /*@@ + @file NormInfFunctions.c + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + The functions responsible for performing the actual iteration. + Having cascaded switch statements broke some compilers. + @enddesc + @version $Id$ + @@*/ + +#include "cctk.h" +#include "local_reductions.h" +#include "NormInf_Functions.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +int LocalReduce_NormInf_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) (NormInf).Re = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +int LocalReduce_NormInf_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) (NormInf).Re = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_INT1 +int LocalReduce_NormInf_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT11 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT12 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT14 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT18 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) (NormInf).Re = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT2 +int LocalReduce_NormInf_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT21 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT22 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT24 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT28 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) (NormInf).Re = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT4 +int LocalReduce_NormInf_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) (NormInf).Re = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT8 +int LocalReduce_NormInf_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) (NormInf).Re = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_NormInf_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) (NormInf).Re = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_REAL4 +int LocalReduce_NormInf_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) (NormInf).Re = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_NormInf_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) (NormInf).Re = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_NormInf_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) (NormInf).Re = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX( (NormInf).Re, ABS((scalar).Re)); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = MAX(NormInf , ABS(scalar)); +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_NormInf_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + + +#ifdef CCTK_COMPLEX8 +int LocalReduce_NormInf_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_NormInf_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_NormInf_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#ifdef ABS +#undef ABS +#endif +#define ABS(x) ((CCTK_REAL)(x) < 0 ? -(x) : (x)) +#ifdef MAX +#undef MAX +#endif +#define MAX(x,y) ((x) >= (y) ? (x) : (y)) + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(NormInf, scalar) (scalar).Re = ABS((scalar).Re); (scalar).Im = ABS((scalar).Im);(NormInf).Re = MAX( (NormInf).Re, (scalar).Re); (NormInf).Im = MAX( (NormInf).Im, (scalar).Im); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) (CCTK_Cmplx8Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) (CCTK_Cmplx16Abs(typed_vdata[sum_indices])); +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) (CCTK_Cmplx32Abs(typed_vdata[sum_indices])); +#endif + +#define REDUCTION_OPERATION(NormInf, scalar) NormInf = NormInf + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/NormInf_Functions.h b/src/NormInf_Functions.h new file mode 100644 index 0000000..85bfc76 --- /dev/null +++ b/src/NormInf_Functions.h @@ -0,0 +1,73 @@ + /*@@ + @header NormInf_Functions.h + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + Prototypes for NormInf reduction operators + @enddesc + @version $Header$ + @@*/ + +#ifndef _NormInf_FUNCTIONS_H_ +#define _NormInf_FUNCTIONS_H_ + +#include "cctk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NormInf reduction functions */ +int LocalReduce_NormInf_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +int LocalReduce_NormInf_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_INT1 +int LocalReduce_NormInf_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT2 +int LocalReduce_NormInf_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT4 +int LocalReduce_NormInf_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT8 +int LocalReduce_NormInf_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_NormInf_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_REAL4 +int LocalReduce_NormInf_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_NormInf_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_NormInf_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_NormInf_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_COMPLEX8 +int LocalReduce_NormInf_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_NormInf_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_NormInf_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/Reduction.c b/src/Reduction.c index 1ae4f50..f3829c6 100644 --- a/src/Reduction.c +++ b/src/Reduction.c @@ -103,3 +103,4 @@ int LocalReduce_Reduce (int N_dims, int operator_handle, return (retval); } + diff --git a/src/ReductionAvg.c b/src/ReductionAvg.c index 0d3e615..0b3eeda 100644 --- a/src/ReductionAvg.c +++ b/src/ReductionAvg.c @@ -13,6 +13,7 @@ #include #include "local_reductions.h" +#include "Avg_Functions.h" static const char *rcsid = "$Id$"; @@ -33,6 +34,54 @@ static int ReductionAvg (int N_dims, int operator_handle, const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +/* Average (mean) reduction functions */ +int LocalReduce_Avg_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +int LocalReduce_Avg_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_INT1 +int LocalReduce_Avg_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Avg_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Avg_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Avg_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Avg_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_REAL4 +int LocalReduce_Avg_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Avg_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Avg_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Avg_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Avg_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Avg_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Avg_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif /*@@ @routine LocalReduce_Mean @@ -134,7 +183,7 @@ static int ReductionAvg (int N_dims, int operator_handle, void * const output_numbers[]) { /* utility variables */ - int i, j, k, flag, product, num_points; + int i, j, num_points; int ierr; int * iters_per_dim; int global_calling = 0; @@ -144,8 +193,6 @@ static int ReductionAvg (int N_dims, int operator_handle, int * actual_indices; int * actual_iters_per_dim; int max_iter = 0; - int iter = 0; - int sum_indices = 0; int max_index = 1; /* data pointer offset and strides declared here */ @@ -258,975 +305,65 @@ static int ReductionAvg (int N_dims, int operator_handle, { /* in values type switches*/ case CCTK_VARIABLE_CHAR: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_CHAR(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; case CCTK_VARIABLE_INT: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_INT(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_INT1 case CCTK_VARIABLE_INT1: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_INT1(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT2 case CCTK_VARIABLE_INT2: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_INT2(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT4 case CCTK_VARIABLE_INT4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_INT4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT8 case CCTK_VARIABLE_INT8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_INT8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_REAL: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_REAL(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_REAL4 case CCTK_VARIABLE_REAL4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_REAL4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL8 case CCTK_VARIABLE_REAL8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_REAL8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_REAL16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_COMPLEX: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - case CCTK_VARIABLE_INT: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_REAL: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_COMPLEX(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_COMPLEX8 case CCTK_VARIABLE_COMPLEX8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_COMPLEX8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX16 case CCTK_VARIABLE_COMPLEX16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_COMPLEX16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX32 case CCTK_VARIABLE_COMPLEX32: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Avg_COMPLEX32(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif } diff --git a/src/ReductionCount.c b/src/ReductionCount.c index a3db331..e25e106 100644 --- a/src/ReductionCount.c +++ b/src/ReductionCount.c @@ -13,6 +13,7 @@ #include #include "local_reductions.h" +#include "Count_Functions.h" static const char *rcsid = "$Id$"; @@ -33,7 +34,6 @@ static int ReductionCount (int N_dims, int operator_handle, const CCTK_INT output_number_type_codes[], void * const output_numbers[]); - /*@@ @routine LocalReduce_Count @author Tom Goodale, Yaakoub Y El Khamra @@ -134,7 +134,7 @@ static int ReductionCount (int N_dims, int operator_handle, void * const output_numbers[]) { /* utility variables */ - int i, j, k, flag, product, num_points; + int i, j, num_points; int ierr; int * iters_per_dim; @@ -143,8 +143,6 @@ static int ReductionCount (int N_dims, int operator_handle, int * actual_indices; int * actual_iters_per_dim; int max_iter = 0; - int iter = 0; - int sum_indices = 0; int max_index = 1; /* data pointer offset and strides declared here */ @@ -257,980 +255,70 @@ static int ReductionCount (int N_dims, int operator_handle, { /* in values type switches*/ case CCTK_VARIABLE_CHAR: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_CHAR(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; case CCTK_VARIABLE_INT: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_INT(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_INT1 case CCTK_VARIABLE_INT1: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_INT1(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT2 case CCTK_VARIABLE_INT2: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_INT2(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT4 case CCTK_VARIABLE_INT4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_INT4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT8 case CCTK_VARIABLE_INT8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_INT8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_REAL: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_REAL(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_REAL4 case CCTK_VARIABLE_REAL4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_REAL4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL8 case CCTK_VARIABLE_REAL8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_REAL8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_REAL16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_COMPLEX: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - case CCTK_VARIABLE_INT: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_REAL: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_COMPLEX(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_COMPLEX8 case CCTK_VARIABLE_COMPLEX8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_COMPLEX8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX16 case CCTK_VARIABLE_COMPLEX16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_COMPLEX16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX32 case CCTK_VARIABLE_COMPLEX32: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Count_COMPLEX32(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif } } - + num_points--; /* store the number of points in the paramater table */ diff --git a/src/ReductionMax.c b/src/ReductionMax.c index d86579d..bd78caa 100644 --- a/src/ReductionMax.c +++ b/src/ReductionMax.c @@ -13,6 +13,7 @@ #include #include "local_reductions.h" +#include "Max_Functions.h" static const char *rcsid = "$Id$"; @@ -33,7 +34,6 @@ static int ReductionMax (int N_dims, int operator_handle, const CCTK_INT output_number_type_codes[], void * const output_numbers[]); - /*@@ @routine LocalReduce_Max @author Tom Goodale, Yaakoub Y El Khamra @@ -134,7 +134,7 @@ static int ReductionMax (int N_dims, int operator_handle, void * const output_numbers[]) { /* utility variables */ - int i, j, k, flag, product, num_points; + int i, j, num_points; int ierr; int * iters_per_dim; @@ -143,8 +143,6 @@ static int ReductionMax (int N_dims, int operator_handle, int * actual_indices; int * actual_iters_per_dim; int max_iter = 0; - int iter = 0; - int sum_indices = 0; int max_index = 1; /* data pointer offset and strides declared here */ @@ -242,990 +240,72 @@ static int ReductionMax (int N_dims, int operator_handle, max_iter *= iters_per_dim [j]; } -#undef REDUCTION_OPERATION -#undef REDUCTION_INITIAL -#undef EXTRA_STEP - -#define REDUCTION_OPERATION(Max, scalar) if (Max < scalar) Max = scalar; -#define REDUCTION_INITIAL(num) num = 0; -#define EXTRA_STEP(a, b) - for (i = 0; i < N_input_arrays; i++) { /* Do the type matching */ switch (input_array_type_codes[i]) { - /* in values type switches*/ + /* in values type switches*/ case CCTK_VARIABLE_CHAR: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_CHAR(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; case CCTK_VARIABLE_INT: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_INT(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_INT1 case CCTK_VARIABLE_INT1: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_INT1(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT2 case CCTK_VARIABLE_INT2: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_INT2(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT4 case CCTK_VARIABLE_INT4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_INT4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT8 case CCTK_VARIABLE_INT8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_INT8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_REAL: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_REAL(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_REAL4 case CCTK_VARIABLE_REAL4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_REAL4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL8 case CCTK_VARIABLE_REAL8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_REAL8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_REAL16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_COMPLEX: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - case CCTK_VARIABLE_INT: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_REAL: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_COMPLEX(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_COMPLEX8 case CCTK_VARIABLE_COMPLEX8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_COMPLEX8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX16 case CCTK_VARIABLE_COMPLEX16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_COMPLEX16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX32 case CCTK_VARIABLE_COMPLEX32: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Max_COMPLEX32(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif } diff --git a/src/ReductionMin.c b/src/ReductionMin.c index 957cb1a..ee42eb4 100644 --- a/src/ReductionMin.c +++ b/src/ReductionMin.c @@ -13,6 +13,7 @@ #include #include "local_reductions.h" +#include "Min_Functions.h" static const char *rcsid = "$Id$"; @@ -134,7 +135,7 @@ static int ReductionMin (int N_dims, int operator_handle, void * const output_numbers[]) { /* utility variables */ - int i, j, k, flag, product, num_points; + int i, j, num_points; int ierr; int * iters_per_dim; @@ -143,8 +144,6 @@ static int ReductionMin (int N_dims, int operator_handle, int * actual_indices; int * actual_iters_per_dim; int max_iter = 0; - int iter = 0; - int sum_indices = 0; int max_index = 1; /* data pointer offset and strides declared here */ @@ -257,975 +256,65 @@ static int ReductionMin (int N_dims, int operator_handle, { /* in values type switches*/ case CCTK_VARIABLE_CHAR: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_CHAR(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; case CCTK_VARIABLE_INT: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_INT(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_INT1 case CCTK_VARIABLE_INT1: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_INT1(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT2 case CCTK_VARIABLE_INT2: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_INT2(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT4 case CCTK_VARIABLE_INT4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_INT4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT8 case CCTK_VARIABLE_INT8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_INT8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_REAL: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_REAL(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_REAL4 case CCTK_VARIABLE_REAL4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_REAL4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL8 case CCTK_VARIABLE_REAL8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_REAL8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_REAL16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_COMPLEX: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - case CCTK_VARIABLE_INT: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_REAL: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_COMPLEX(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_COMPLEX8 case CCTK_VARIABLE_COMPLEX8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_COMPLEX8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX16 case CCTK_VARIABLE_COMPLEX16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_COMPLEX16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX32 case CCTK_VARIABLE_COMPLEX32: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Min_COMPLEX32(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif } diff --git a/src/ReductionNorm1.c b/src/ReductionNorm1.c index eb7bc03..3108f4a 100644 --- a/src/ReductionNorm1.c +++ b/src/ReductionNorm1.c @@ -13,6 +13,7 @@ #include #include "local_reductions.h" +#include "Norm1_Functions.h" static const char *rcsid = "$Id$"; @@ -33,7 +34,6 @@ static int ReductionL1 (int N_dims, int operator_handle, const CCTK_INT output_number_type_codes[], void * const output_numbers[]); - /*@@ @routine LocalReduce_L1 @author Tom Goodale, Yaakoub Y El Khamra @@ -134,7 +134,7 @@ static int ReductionL1 (int N_dims, int operator_handle, void * const output_numbers[]) { /* utility variables */ - int i, j, k, flag, product, num_points; + int i, j, num_points; int ierr; int * iters_per_dim; int global_calling = 0; @@ -144,8 +144,6 @@ static int ReductionL1 (int N_dims, int operator_handle, int * actual_indices; int * actual_iters_per_dim; int max_iter = 0; - int iter = 0; - int sum_indices = 0; int max_index = 1; /* data pointer offset and strides declared here */ @@ -262,1013 +260,65 @@ static int ReductionL1 (int N_dims, int operator_handle, { /* in values type switches*/ case CCTK_VARIABLE_CHAR: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_CHAR(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; case CCTK_VARIABLE_INT: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_INT(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_INT1 case CCTK_VARIABLE_INT1: - switch (output_number_type_codes[i]) - { -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_INT1(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT2 case CCTK_VARIABLE_INT2: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_INT2(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT4 case CCTK_VARIABLE_INT4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_INT4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT8 case CCTK_VARIABLE_INT8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_INT8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_REAL: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_REAL(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_REAL4 case CCTK_VARIABLE_REAL4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_REAL4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL8 case CCTK_VARIABLE_REAL8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_REAL8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_REAL16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_COMPLEX: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm1, scalar) norm1 = norm1 + CCTK_CmplxAbs (scalar) - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - case CCTK_VARIABLE_INT: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_REAL: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_COMPLEX(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_COMPLEX8 case CCTK_VARIABLE_COMPLEX8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_COMPLEX8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX16 case CCTK_VARIABLE_COMPLEX16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_COMPLEX16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX32 case CCTK_VARIABLE_COMPLEX32: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm1_COMPLEX32(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif } diff --git a/src/ReductionNorm2.c b/src/ReductionNorm2.c index 8ff2d02..1605d49 100644 --- a/src/ReductionNorm2.c +++ b/src/ReductionNorm2.c @@ -13,6 +13,7 @@ #include #include "local_reductions.h" +#include "Norm2_Functions.h" static const char *rcsid = "$Id$"; @@ -33,7 +34,6 @@ static int ReductionL2 (int N_dims, int operator_handle, const CCTK_INT output_number_type_codes[], void * const output_numbers[]); - /*@@ @routine LocalReduce_L2 @author Tom Goodale, Yaakoub Y El Khamra @@ -134,7 +134,7 @@ static int ReductionL2 (int N_dims, int operator_handle, void * const output_numbers[]) { /* utility variables */ - int i, j, k, flag, product, num_points; + int i, j, num_points; int ierr; int * iters_per_dim; int global_calling = 0; @@ -144,8 +144,6 @@ static int ReductionL2 (int N_dims, int operator_handle, int * actual_indices; int * actual_iters_per_dim; int max_iter = 0; - int iter = 0; - int sum_indices = 0; int max_index = 1; /* data pointer offset and strides declared here */ @@ -263,978 +261,65 @@ static int ReductionL2 (int N_dims, int operator_handle, { /* in values type switches*/ case CCTK_VARIABLE_CHAR: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_CHAR(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; case CCTK_VARIABLE_INT: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_INT(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_INT1 case CCTK_VARIABLE_INT1: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_INT1(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT2 case CCTK_VARIABLE_INT2: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_INT2(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT4 case CCTK_VARIABLE_INT4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_INT4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT8 case CCTK_VARIABLE_INT8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_INT8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_REAL: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_REAL(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_REAL4 case CCTK_VARIABLE_REAL4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_REAL4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL8 case CCTK_VARIABLE_REAL8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_REAL8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_REAL16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_COMPLEX: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm2, scalar) norm2 += SQR ((scalar).Re) + \ - SQR ((scalar).Im) - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - case CCTK_VARIABLE_INT: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_REAL: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_COMPLEX(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_COMPLEX8 case CCTK_VARIABLE_COMPLEX8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_COMPLEX8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX16 case CCTK_VARIABLE_COMPLEX16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_COMPLEX16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX32 case CCTK_VARIABLE_COMPLEX32: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm2_COMPLEX32(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif } diff --git a/src/ReductionNorm3.c b/src/ReductionNorm3.c index 7dd735d..43a001b 100644 --- a/src/ReductionNorm3.c +++ b/src/ReductionNorm3.c @@ -13,6 +13,7 @@ #include #include "local_reductions.h" +#include "Norm3_Functions.h" static const char *rcsid = "$Id$"; @@ -33,7 +34,6 @@ static int ReductionL3 (int N_dims, int operator_handle, const CCTK_INT output_number_type_codes[], void * const output_numbers[]); - /*@@ @routine LocalReduce_L3 @author Tom Goodale, Yaakoub Y El Khamra @@ -134,7 +134,7 @@ static int ReductionL3 (int N_dims, int operator_handle, void * const output_numbers[]) { /* utility variables */ - int i, j, k, flag, product, num_points; + int i, j, num_points; int ierr; int * iters_per_dim; int global_calling = 0; @@ -144,8 +144,6 @@ static int ReductionL3 (int N_dims, int operator_handle, int * actual_indices; int * actual_iters_per_dim; int max_iter = 0; - int iter = 0; - int sum_indices = 0; int max_index = 1; /* data pointer offset and strides declared here */ @@ -260,1013 +258,65 @@ static int ReductionL3 (int N_dims, int operator_handle, { /* in values type switches*/ case CCTK_VARIABLE_CHAR: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + CUBE_ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_CHAR(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; case CCTK_VARIABLE_INT: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + CUBE_ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_INT(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_INT1 case CCTK_VARIABLE_INT1: - switch (output_number_type_codes[i]) - { -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + CUBE_ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_INT1(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT2 case CCTK_VARIABLE_INT2: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + CUBE_ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_INT2(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT4 case CCTK_VARIABLE_INT4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + CUBE_ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_INT4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT8 case CCTK_VARIABLE_INT8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + CUBE_ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_INT8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_REAL: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + CUBE_ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_REAL(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_REAL4 case CCTK_VARIABLE_REAL4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + CUBE_ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_REAL4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL8 case CCTK_VARIABLE_REAL8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + scalar; - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(Norm1, scalar) Norm1 = Norm1 + CUBE_ABS(scalar); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_REAL8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -/* ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: -/* ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_REAL16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_COMPLEX: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm1, scalar) norm1 = norm1 + CCTK_CmplxAbs (scalar) - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - case CCTK_VARIABLE_INT: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_REAL: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_COMPLEX(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_COMPLEX8 case CCTK_VARIABLE_COMPLEX8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_COMPLEX8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX16 case CCTK_VARIABLE_COMPLEX16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_COMPLEX16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX32 case CCTK_VARIABLE_COMPLEX32: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm3_COMPLEX32(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif } diff --git a/src/ReductionNorm4.c b/src/ReductionNorm4.c index 56fc928..5d4763e 100644 --- a/src/ReductionNorm4.c +++ b/src/ReductionNorm4.c @@ -13,6 +13,7 @@ #include #include "local_reductions.h" +#include "Norm4_Functions.h" static const char *rcsid = "$Id$"; @@ -33,7 +34,6 @@ static int ReductionL4 (int N_dims, int operator_handle, const CCTK_INT output_number_type_codes[], void * const output_numbers[]); - /*@@ @routine LocalReduce_L4 @author Tom Goodale, Yaakoub Y El Khamra @@ -134,7 +134,7 @@ static int ReductionL4 (int N_dims, int operator_handle, void * const output_numbers[]) { /* utility variables */ - int i, j, k, flag, product, num_points; + int i, j, num_points; int ierr; int * iters_per_dim; int global_calling = 0; @@ -144,8 +144,6 @@ static int ReductionL4 (int N_dims, int operator_handle, int * actual_indices; int * actual_iters_per_dim; int max_iter = 0; - int iter = 0; - int sum_indices = 0; int max_index = 1; /* data pointer offset and strides declared here */ @@ -260,978 +258,65 @@ static int ReductionL4 (int N_dims, int operator_handle, { /* in values type switches*/ case CCTK_VARIABLE_CHAR: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_CHAR(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; case CCTK_VARIABLE_INT: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_INT(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_INT1 case CCTK_VARIABLE_INT1: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_INT1(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT2 case CCTK_VARIABLE_INT2: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_INT2(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT4 case CCTK_VARIABLE_INT4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_INT4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT8 case CCTK_VARIABLE_INT8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_INT8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_REAL: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_REAL(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_REAL4 case CCTK_VARIABLE_REAL4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_REAL4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL8 case CCTK_VARIABLE_REAL8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_REAL8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_REAL16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_COMPLEX: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm4, scalar) norm4 += POWER4 ((scalar).Re) + \ - POWER4 ((scalar).Im) - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - case CCTK_VARIABLE_INT: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_REAL: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_COMPLEX(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_COMPLEX8 case CCTK_VARIABLE_COMPLEX8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_COMPLEX8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX16 case CCTK_VARIABLE_COMPLEX16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_COMPLEX16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX32 case CCTK_VARIABLE_COMPLEX32: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Norm4_COMPLEX32(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif } diff --git a/src/ReductionNormInf.c b/src/ReductionNormInf.c index 3ffcc39..307359a 100644 --- a/src/ReductionNormInf.c +++ b/src/ReductionNormInf.c @@ -13,6 +13,7 @@ #include #include "local_reductions.h" +#include "NormInf_Functions.h" static const char *rcsid = "$Id$"; @@ -33,6 +34,54 @@ static int ReductionLInf (int N_dims, int operator_handle, const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +/* NormInf reduction functions */ +int LocalReduce_NormInf_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +int LocalReduce_NormInf_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_INT1 +int LocalReduce_NormInf_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT2 +int LocalReduce_NormInf_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT4 +int LocalReduce_NormInf_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT8 +int LocalReduce_NormInf_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_NormInf_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_REAL4 +int LocalReduce_NormInf_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_NormInf_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_NormInf_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_NormInf_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_COMPLEX8 +int LocalReduce_NormInf_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_NormInf_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_NormInf_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif /*@@ @routine LocalReduce_LInf @@ -134,7 +183,7 @@ static int ReductionLInf (int N_dims, int operator_handle, void * const output_numbers[]) { /* utility variables */ - int i, j, k, flag, product, num_points; + int i, j, num_points; int ierr; int * iters_per_dim; int global_calling = 0; @@ -144,8 +193,6 @@ static int ReductionLInf (int N_dims, int operator_handle, int * actual_indices; int * actual_iters_per_dim; int max_iter = 0; - int iter = 0; - int sum_indices = 0; int max_index = 1; /* data pointer offset and strides declared here */ @@ -267,1018 +314,65 @@ static int ReductionLInf (int N_dims, int operator_handle, { /* in values type switches*/ case CCTK_VARIABLE_CHAR: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, scalar); - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, ABS(scalar)); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_CHAR(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; case CCTK_VARIABLE_INT: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, scalar); - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf,ABS(scalar)); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_INT(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_INT1 case CCTK_VARIABLE_INT1: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, scalar); - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, ABS(scalar)); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_INT1(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT2 case CCTK_VARIABLE_INT2: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, scalar); - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, ABS(scalar)); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_INT2(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT4 case CCTK_VARIABLE_INT4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, scalar); - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, ABS(scalar)); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_INT4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT8 case CCTK_VARIABLE_INT8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, scalar); - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, ABS(scalar)); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_INT8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_REAL: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, scalar); - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, ABS(scalar)); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_REAL(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_REAL4 case CCTK_VARIABLE_REAL4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, scalar); - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, ABS(scalar)); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_REAL4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL8 case CCTK_VARIABLE_REAL8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, scalar); - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, ABS(scalar)); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: -/* ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_REAL8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, scalar); - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(norm_inf, scalar) norm_inf = MAX(norm_inf, ABS(scalar)); - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_REAL16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_COMPLEX: -#undef REDUCTION_OPERATION -#define REDUCTION_OPERATION(NormInf, scalar) NormInf += POWER4 ((scalar).Re) + \ - POWER4 ((scalar).Im) - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - case CCTK_VARIABLE_INT: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_REAL: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_COMPLEX(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_COMPLEX8 case CCTK_VARIABLE_COMPLEX8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_COMPLEX8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX16 case CCTK_VARIABLE_COMPLEX16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_COMPLEX16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX32 case CCTK_VARIABLE_COMPLEX32: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_NormInf_COMPLEX32(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif } diff --git a/src/ReductionSum.c b/src/ReductionSum.c index 43da67b..b8df856 100644 --- a/src/ReductionSum.c +++ b/src/ReductionSum.c @@ -13,6 +13,7 @@ #include #include "local_reductions.h" +#include "Sum_Functions.h" static const char *rcsid = "$Id$"; @@ -34,6 +35,7 @@ static int ReductionSum (int N_dims, int operator_handle, void * const output_numbers[]); + /*@@ @routine LocalReduce_Mean @author Tom Goodale, Yaakoub Y El Khamra @@ -134,7 +136,7 @@ static int ReductionSum (int N_dims, int operator_handle, void * const output_numbers[]) { /* utility variables */ - int i, j, k, flag, product, num_points; + int i, j, num_points; int ierr; int * iters_per_dim; @@ -143,8 +145,6 @@ static int ReductionSum (int N_dims, int operator_handle, int * actual_indices; int * actual_iters_per_dim; int max_iter = 0; - int iter = 0; - int sum_indices = 0; int max_index = 1; /* data pointer offset and strides declared here */ @@ -257,975 +257,65 @@ static int ReductionSum (int N_dims, int operator_handle, { /* in values type switches*/ case CCTK_VARIABLE_CHAR: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_CHAR(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; case CCTK_VARIABLE_INT: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_INT(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_INT1 case CCTK_VARIABLE_INT1: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_INT1(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT2 case CCTK_VARIABLE_INT2: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_INT2(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT4 case CCTK_VARIABLE_INT4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_INT4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_INT8 case CCTK_VARIABLE_INT8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_INT8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_REAL: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_REAL(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_REAL4 case CCTK_VARIABLE_REAL4: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_REAL4(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL8 case CCTK_VARIABLE_REAL8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_REAL8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_REAL16 case CCTK_VARIABLE_REAL16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_REAL16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif case CCTK_VARIABLE_COMPLEX: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - case CCTK_VARIABLE_INT: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_REAL: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #endif - case CCTK_VARIABLE_COMPLEX: -/* ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product)*/ - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_COMPLEX(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #ifdef CCTK_COMPLEX8 case CCTK_VARIABLE_COMPLEX8: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_COMPLEX8(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX16 case CCTK_VARIABLE_COMPLEX16: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_COMPLEX16(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif #ifdef CCTK_COMPLEX32 case CCTK_VARIABLE_COMPLEX32: - switch (output_number_type_codes[i]) - { - /* out values type switches*/ - case CCTK_VARIABLE_CHAR: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - case CCTK_VARIABLE_INT: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_INT1 - case CCTK_VARIABLE_INT1: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT2 - case CCTK_VARIABLE_INT2: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT4 - case CCTK_VARIABLE_INT4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_INT8 - case CCTK_VARIABLE_INT8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_REAL: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_REAL4 - case CCTK_VARIABLE_REAL4: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL8 - case CCTK_VARIABLE_REAL8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_REAL16 - case CCTK_VARIABLE_REAL16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - case CCTK_VARIABLE_COMPLEX: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #ifdef CCTK_COMPLEX8 - case CCTK_VARIABLE_COMPLEX8: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX16 - case CCTK_VARIABLE_COMPLEX16: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - #ifdef CCTK_COMPLEX32 - case CCTK_VARIABLE_COMPLEX32: - ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) - break; - #endif - } + num_points = LocalReduce_Sum_COMPLEX32(i, mask_on, input_array_offsets, indices, max_iter, actual_indices, input_array_strides, input_array_min_subscripts, num_points, actual_iters_per_dim, iters_per_dim, N_dims, input_arrays, output_number_type_codes, output_numbers); break; #endif } diff --git a/src/Startup.c b/src/Startup.c index c3e4a67..12aace8 100644 --- a/src/Startup.c +++ b/src/Startup.c @@ -24,16 +24,17 @@ int LocalReduce_Startup (void) { /* Register the reduction operators */ - CCTK_RegisterLocalArrayReductionOperator (LocalReduce_Max, "maximum"); CCTK_RegisterLocalArrayReductionOperator (LocalReduce_Mean, "mean"); - CCTK_RegisterLocalArrayReductionOperator (LocalReduce_Count, "count"); + CCTK_RegisterLocalArrayReductionOperator (LocalReduce_Max, "maximum"); CCTK_RegisterLocalArrayReductionOperator (LocalReduce_Min, "minimum"); + CCTK_RegisterLocalArrayReductionOperator (LocalReduce_Count, "count"); + CCTK_RegisterLocalArrayReductionOperator (LocalReduce_Sum, "sum"); CCTK_RegisterLocalArrayReductionOperator (LocalReduce_L1, "norm1"); CCTK_RegisterLocalArrayReductionOperator (LocalReduce_L2, "norm2"); CCTK_RegisterLocalArrayReductionOperator (LocalReduce_L3, "norm3"); CCTK_RegisterLocalArrayReductionOperator (LocalReduce_L4, "norm4"); CCTK_RegisterLocalArrayReductionOperator (LocalReduce_LInf, "norm_inf"); - CCTK_RegisterLocalArrayReductionOperator (LocalReduce_Sum, "sum"); + return (0); } diff --git a/src/SumFunctions.c b/src/SumFunctions.c new file mode 100644 index 0000000..b7960e0 --- /dev/null +++ b/src/SumFunctions.c @@ -0,0 +1,3115 @@ + /*@@ + @file SumFunctions.c + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + The functions responsible for performing the actual iteration. + Having cascaded switch statements broke some compilers. + @enddesc + @version $Id$ + @@*/ + +#include "cctk.h" +#include "local_reductions.h" +#include "Sum_Functions.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +int LocalReduce_Sum_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_BYTE, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +int LocalReduce_Sum_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_INT1 +int LocalReduce_Sum_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT11 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT12 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT14 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT18 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT1, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Sum_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT21 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT22 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT24 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT28 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT2, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Sum_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Sum_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_INT8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Sum_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + +#ifdef CCTK_REAL4 +int LocalReduce_Sum_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL4, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Sum_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Sum_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL4) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL8) typed_vdata[sum_indices]; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval.Re = (CCTK_REAL16) typed_vdata[sum_indices]; +#endif +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_REAL16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP +#undef REDUCTION_PREOP_CAST + +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (out_type) typed_vdata[sum_indices]; +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +int LocalReduce_Sum_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} + + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Sum_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX8, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Sum_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_BYTE, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX16, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Sum_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]) +{ + int iter = 0; + int sum_indices = 0; + int flag, product, j, k; + +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + switch (output_number_type_codes[i]) + { + /* out values type switches*/ + case CCTK_VARIABLE_CHAR: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + case CCTK_VARIABLE_INT: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT1, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT2, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_INT8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_REAL: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL4, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + #ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_REAL16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) + break; + #endif + case CCTK_VARIABLE_COMPLEX: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #ifdef CCTK_COMPLEX8 + case CCTK_VARIABLE_COMPLEX8: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL4) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL4) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd8( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX8, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX16 + case CCTK_VARIABLE_COMPLEX16: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL8) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL8) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd16( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX16, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + + break; + #endif + #ifdef CCTK_COMPLEX32 + case CCTK_VARIABLE_COMPLEX32: +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + (inval).Re = (CCTK_REAL16) (typed_vdata[sum_indices]).Re; (inval).Im = (CCTK_REAL16) (typed_vdata[sum_indices]).Im; + +#define REDUCTION_OPERATION(Sum, scalar) Sum = CCTK_CmplxAdd32( Sum, scalar); +#define REDUCTION_INITIAL(num) (num).Re = 0.0; (num).Im = 0.0; +#define EXTRA_STEP(a, b) + + ITERATE_ON_ARRAY(i,CCTK_COMPLEX32, input_arrays[i], CCTK_COMPLEX32, output_numbers[i], mask_on, input_array_offsets[i], indices, sum_indices, max_iter, iter, flag, actual_indices,input_array_strides, input_array_min_subscripts,product) +#undef REDUCTION_OPERATION +#undef REDUCTION_INITIAL +#undef EXTRA_STEP + +#ifdef CCTK_REAL_PRECISION_4 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL4) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_8 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL8) typed_vdata[sum_indices].Re; +#elif CCTK_REAL_PRECISION_16 +#undef REDUCTION_PREOP_CAST +#define REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type) \ + inval = (CCTK_REAL16) typed_vdata[sum_indices].Re; +#endif + +#define REDUCTION_OPERATION(Sum, scalar) Sum = Sum + scalar; +#define REDUCTION_INITIAL(num) num = 0; +#define EXTRA_STEP(a, b) + break; + #endif + } + return num_points; +} +#endif + + +#ifdef __cplusplus +} +#endif diff --git a/src/Sum_Functions.h b/src/Sum_Functions.h new file mode 100644 index 0000000..9d915ad --- /dev/null +++ b/src/Sum_Functions.h @@ -0,0 +1,73 @@ + /*@@ + @header Sum_Functions.h + @date + @author Tom Goodale, Yaakoub Y El Khamra + @desc + Prototypes for sum reduction operators + @enddesc + @version $Header$ + @@*/ + +#ifndef _SUM_FUNCTIONS_H_ +#define _SUM_FUNCTIONS_H_ + +#include "cctk.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Sum reduction functions */ +int LocalReduce_Sum_CHAR(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +int LocalReduce_Sum_INT(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_INT1 +int LocalReduce_Sum_INT1(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT2 +int LocalReduce_Sum_INT2(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT4 +int LocalReduce_Sum_INT4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_INT8 +int LocalReduce_Sum_INT8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Sum_REAL(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_REAL4 +int LocalReduce_Sum_REAL4(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL8 +int LocalReduce_Sum_REAL8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_REAL16 +int LocalReduce_Sum_REAL16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +int LocalReduce_Sum_COMPLEX(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); + +#ifdef CCTK_COMPLEX8 +int LocalReduce_Sum_COMPLEX8(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX16 +int LocalReduce_Sum_COMPLEX16(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef CCTK_COMPLEX32 +int LocalReduce_Sum_COMPLEX32(int i, int mask_on, CCTK_INT * input_array_offsets, int * indices, int max_iter, int * actual_indices, CCTK_INT * input_array_strides, CCTK_INT * input_array_min_subscripts, int num_points, int * actual_iters_per_dim, int * iters_per_dim, int N_dims, const void *const input_arrays[], const CCTK_INT output_number_type_codes[], void * const output_numbers[]); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/local_reductions.h b/src/local_reductions.h index 6f073b2..3e3eba8 100644 --- a/src/local_reductions.h +++ b/src/local_reductions.h @@ -48,7 +48,7 @@ extern "C" { } \ sum_indices += actual_indices[k]*product; \ } \ - inval = (out_type) typed_vdata[sum_indices]; \ + REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type); \ REDUCTION_OPERATION(*outval,inval); \ num_points++; \ iter++; \ @@ -103,7 +103,7 @@ extern "C" { CCTK_WARN(1,"offsets and strides access unallocated memory"); \ return -1; \ } \ - inval = (out_type) typed_vdata[sum_indices]; \ + REDUCTION_PREOP_CAST(inval, typed_vdata,sum_indices, out_type); \ REDUCTION_OPERATION(*outval,inval); \ num_points++; \ iter++; \ @@ -145,18 +145,20 @@ extern "C" { } \ EXTRA_STEP(*outval, (out_type)num_points) \ } - + int LocalReduce_Mean (REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST); -int LocalReduce_Count (REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST); int LocalReduce_Max (REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST); int LocalReduce_Min (REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST); +int LocalReduce_Count (REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST); +int LocalReduce_Sum (REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST); + int LocalReduce_L1 (REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST); int LocalReduce_L2 (REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST); int LocalReduce_L3 (REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST); int LocalReduce_L4 (REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST); int LocalReduce_LInf (REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST); -int LocalReduce_Sum (REDUCTION_LOCAL_ARRAY_OPERATOR_REGISTER_ARGLIST); + typedef int (*reduction_fn_t) (int N_dims, int operator_handle, int param_table_handle, int N_input_arrays, @@ -176,9 +178,13 @@ int LocalReduce_Reduce (int N_dims, int operator_handle, const CCTK_INT output_number_type_codes[], void * const output_numbers[],reduction_fn_t reduction_fn); + + #ifdef __cplusplus } #endif + + #endif diff --git a/src/make.code.defn b/src/make.code.defn index 04bbb2f..2e3d01c 100644 --- a/src/make.code.defn +++ b/src/make.code.defn @@ -2,7 +2,7 @@ # $Header$ # Source files in this directory -SRCS = Startup.c Reduction.c ReductionAvg.c ReductionCount.c ReductionMax.c ReductionMin.c ReductionNorm1.c ReductionNorm2.c ReductionNorm3.c ReductionNorm4.c ReductionNormInf.c ReductionSum.c Startup.c +SRCS = Startup.c Reduction.c ReductionAvg.c AvgFunctions.c ReductionMax.c MaxFunctions.c ReductionMin.c MinFunctions.c ReductionCount.c CountFunctions.c ReductionSum.c SumFunctions.c ReductionNorm1.c Norm1Functions.c ReductionNorm2.c Norm2Functions.c ReductionNorm3.c Norm3Functions.c ReductionNorm4.c Norm4Functions.c ReductionNormInf.c NormInfFunctions.c # Subdirectories containing source files SUBDIRS = -- cgit v1.2.3