aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryye00 <yye00@7daa882c-dc44-4453-834e-278d26b18e6a>2004-10-26 23:36:09 +0000
committeryye00 <yye00@7daa882c-dc44-4453-834e-278d26b18e6a>2004-10-26 23:36:09 +0000
commit0580b166b649e4f697247b90fb2b92ae7e291610 (patch)
tree1549f683ac3898e55c57d459ce545897d5716b90
parent8d180b856c65d7c40c6e8867687779f3be7350c3 (diff)
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
-rw-r--r--src/AvgFunctions.c3116
-rw-r--r--src/Avg_Functions.h73
-rw-r--r--src/CountFunctions.c3114
-rw-r--r--src/Count_Functions.h73
-rw-r--r--src/MaxFunctions.c3115
-rw-r--r--src/Max_Functions.h73
-rw-r--r--src/MinFunctions.c3114
-rw-r--r--src/Min_Functions.h73
-rw-r--r--src/Norm1Functions.c3539
-rw-r--r--src/Norm1_Functions.h73
-rw-r--r--src/Norm2Functions.c3619
-rw-r--r--src/Norm2_Functions.h73
-rw-r--r--src/Norm3Functions.c3624
-rw-r--r--src/Norm3_Functions.h73
-rw-r--r--src/Norm4Functions.c3619
-rw-r--r--src/Norm4_Functions.h73
-rw-r--r--src/NormInfFunctions.c3963
-rw-r--r--src/NormInf_Functions.h73
-rw-r--r--src/Reduction.c1
-rw-r--r--src/ReductionAvg.c991
-rw-r--r--src/ReductionCount.c946
-rw-r--r--src/ReductionMax.c954
-rw-r--r--src/ReductionMin.c943
-rw-r--r--src/ReductionNorm1.c982
-rw-r--r--src/ReductionNorm2.c947
-rw-r--r--src/ReductionNorm3.c982
-rw-r--r--src/ReductionNorm4.c947
-rw-r--r--src/ReductionNormInf.c1034
-rw-r--r--src/ReductionSum.c944
-rw-r--r--src/Startup.c7
-rw-r--r--src/SumFunctions.c3115
-rw-r--r--src/Sum_Functions.h73
-rw-r--r--src/local_reductions.h16
-rw-r--r--src/make.code.defn2
34 files changed, 34944 insertions, 9420 deletions
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 <string.h>
#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 <string.h>
#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 <string.h>
#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 <string.h>
#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 <string.h>
#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 <string.h>
#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 <string.h>
#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 <string.h>
#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 <string.h>
#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 <string.h>
#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 =