File Coverage

lib/PDL/Primitive-pp-statsover.c
Criterion Covered Total %
statement 207 775 26.7
branch 336 2388 14.0
condition n/a
subroutine n/a
pod n/a
total 543 3163 17.1


line stmt bran cond sub pod time code
1              
2             #line 453 "lib/PDL/PP.pm"
3             /*
4             * THIS FILE WAS GENERATED BY PDL::PP from lib/PDL/Primitive.pd! Do not modify!
5             */
6              
7             #define PDL_FREE_CODE(trans, destroy, comp_free_code, ntpriv_free_code) \
8             if (destroy) { \
9             comp_free_code \
10             } \
11             if ((trans)->dims_redone) { \
12             ntpriv_free_code \
13             }
14              
15             #include "EXTERN.h"
16             #include "perl.h"
17             #include "XSUB.h"
18             #include "pdl.h"
19             #include "pdlcore.h"
20             #define PDL PDL_Primitive
21             extern Core* PDL; /* Structure hold core C functions */
22              
23             #line 1857 "lib/PDL/PP.pm"
24             pdl_error pdl_statsover_readdata(pdl_trans *__privtrans) {
25             pdl_error PDL_err = {0, NULL, 0};
26             #line 27 "lib/PDL/Primitive-pp-statsover.c"
27 29           register PDL_Indx __n_size = __privtrans->ind_sizes[0];
28 29 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in statsover:" "broadcast.incs NULL");
29             /* broadcastloop declarations */
30             int __brcloopval;
31             register PDL_Indx __tind0,__tind1; /* counters along dim */
32 29           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
33             /* dims here are how many steps along those dims */
34 29           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
35 29           register PDL_Indx __tinc0_w = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
36 29           register PDL_Indx __tinc0_avg = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
37 29           register PDL_Indx __tinc0_prms = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,0);
38 29           register PDL_Indx __tinc0_min = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,0);
39 29           register PDL_Indx __tinc0_max = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,0);
40 29           register PDL_Indx __tinc0_adev = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,0);
41 29           register PDL_Indx __tinc0_rms = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,7,0);
42 29           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
43 29           register PDL_Indx __tinc1_w = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
44 29           register PDL_Indx __tinc1_avg = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
45 29           register PDL_Indx __tinc1_prms = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,1);
46 29           register PDL_Indx __tinc1_min = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,4,1);
47 29           register PDL_Indx __tinc1_max = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,5,1);
48 29           register PDL_Indx __tinc1_adev = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,6,1);
49 29           register PDL_Indx __tinc1_rms = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,7,1);
50             #define PDL_BROADCASTLOOP_START_statsover_readdata PDL_BROADCASTLOOP_START( \
51             readdata, \
52             __privtrans->broadcast, \
53             __privtrans->vtable, \
54             a_datap += __offsp[0]; \
55             w_datap += __offsp[1]; \
56             avg_datap += __offsp[2]; \
57             prms_datap += __offsp[3]; \
58             min_datap += __offsp[4]; \
59             max_datap += __offsp[5]; \
60             adev_datap += __offsp[6]; \
61             rms_datap += __offsp[7]; \
62             , \
63             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
64             ,w_datap += __tinc1_w - __tinc0_w * __tdims0 \
65             ,avg_datap += __tinc1_avg - __tinc0_avg * __tdims0 \
66             ,prms_datap += __tinc1_prms - __tinc0_prms * __tdims0 \
67             ,min_datap += __tinc1_min - __tinc0_min * __tdims0 \
68             ,max_datap += __tinc1_max - __tinc0_max * __tdims0 \
69             ,adev_datap += __tinc1_adev - __tinc0_adev * __tdims0 \
70             ,rms_datap += __tinc1_rms - __tinc0_rms * __tdims0 \
71             ), \
72             ( ,a_datap += __tinc0_a \
73             ,w_datap += __tinc0_w \
74             ,avg_datap += __tinc0_avg \
75             ,prms_datap += __tinc0_prms \
76             ,min_datap += __tinc0_min \
77             ,max_datap += __tinc0_max \
78             ,adev_datap += __tinc0_adev \
79             ,rms_datap += __tinc0_rms \
80             ) \
81             )
82             #define PDL_BROADCASTLOOP_END_statsover_readdata PDL_BROADCASTLOOP_END( \
83             __privtrans->broadcast, \
84             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
85             w_datap -= __tinc1_w * __tdims1 + __offsp[1]; \
86             avg_datap -= __tinc1_avg * __tdims1 + __offsp[2]; \
87             prms_datap -= __tinc1_prms * __tdims1 + __offsp[3]; \
88             min_datap -= __tinc1_min * __tdims1 + __offsp[4]; \
89             max_datap -= __tinc1_max * __tdims1 + __offsp[5]; \
90             adev_datap -= __tinc1_adev * __tdims1 + __offsp[6]; \
91             rms_datap -= __tinc1_rms * __tdims1 + __offsp[7]; \
92             )
93 29           register PDL_Indx __inc_a_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a_n;
94 29           register PDL_Indx __inc_w_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_w_n;
95             #ifndef PDL_DECLARE_PARAMS_statsover_1
96             #define PDL_DECLARE_PARAMS_statsover_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_avg,PDL_PPSYM_PARAM_avg,PDL_TYPE_PARAM_prms,PDL_PPSYM_PARAM_prms,PDL_TYPE_PARAM_min,PDL_PPSYM_PARAM_min,PDL_TYPE_PARAM_max,PDL_PPSYM_PARAM_max,PDL_TYPE_PARAM_adev,PDL_PPSYM_PARAM_adev,PDL_TYPE_PARAM_rms,PDL_PPSYM_PARAM_rms) \
97             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
98             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, w, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
99             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_avg, avg, (__privtrans->pdls[2]), 1, PDL_PPSYM_PARAM_avg) \
100             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_prms, prms, (__privtrans->pdls[3]), 1, PDL_PPSYM_PARAM_prms) \
101             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_min, min, (__privtrans->pdls[4]), 1, PDL_PPSYM_PARAM_min) \
102             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_max, max, (__privtrans->pdls[5]), 1, PDL_PPSYM_PARAM_max) \
103             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_adev, adev, (__privtrans->pdls[6]), 1, PDL_PPSYM_PARAM_adev) \
104             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_rms, rms, (__privtrans->pdls[7]), 1, PDL_PPSYM_PARAM_rms)
105             #endif
106 29 100         if ( __privtrans->bvalflag ) { /* ** do 'bad' Code ** */
107             #define PDL_BAD_CODE
108             #define PDL_IF_BAD(t,f) t
109 6           switch (__privtrans->__datatype) { /* Start generic switch */
110 0           case PDL_SB: {
111             #define PDL_IF_GENTYPE_INTEGER(t,f) t
112             #define PDL_IF_GENTYPE_REAL(t,f) t
113             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
114 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_SByte,A,PDL_Float,F,PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
115 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
116 0           PDL_Long curmin = 0, curmax = 0;
117 0           PDL_SByte norm = 0;
118 0           int flag = 0;
119 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
120             /* perhaps should check w() for bad values too ? */
121 0 0         PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,A,a_badval_isnan) )) continue;,)
    0          
122 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
123 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
124 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
125 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
126 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
127 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
128 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
129             }
130             }} /* Close n */
131             /* have at least one valid point if flag true */
132 0 0         PDL_IF_BAD(if ( !flag ) {
133             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
134             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
135             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
136             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
137             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
138             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
139             continue;
140             },)
141 0           (avg_datap)[0] = tmp / norm; /* Find mean */
142 0           (min_datap)[0] = curmin;
143 0           (max_datap)[0] = curmax;
144             /* Calculate the RMS and standard deviation. */
145 0           tmp = 0;
146 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
147 0 0         PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,A,a_badval_isnan)) continue;,)
    0          
148 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
149 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
150 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
151             }} /* Close n */
152 0           (rms_datap)[0] = sqrtl( tmp/norm );
153 0 0         if (norm>1)
154 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
155             else
156 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
157 0           (adev_datap)[0] = tmp1 / norm ;
158 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
159             #undef PDL_IF_GENTYPE_INTEGER
160             #undef PDL_IF_GENTYPE_REAL
161             #undef PDL_IF_GENTYPE_UNSIGNED
162 0           } break;
163 0           case PDL_B: {
164             #define PDL_IF_GENTYPE_INTEGER(t,f) t
165             #define PDL_IF_GENTYPE_REAL(t,f) t
166             #define PDL_IF_GENTYPE_UNSIGNED(t,f) t
167 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_Byte,B,PDL_Float,F,PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
168 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
169 0           PDL_Long curmin = 0, curmax = 0;
170 0           PDL_Byte norm = 0;
171 0           int flag = 0;
172 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
173             /* perhaps should check w() for bad values too ? */
174 0 0         PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,B,a_badval_isnan) )) continue;,)
    0          
175 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
176 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
177 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
178 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
179 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
180 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
181 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
182             }
183             }} /* Close n */
184             /* have at least one valid point if flag true */
185 0 0         PDL_IF_BAD(if ( !flag ) {
186             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
187             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
188             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
189             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
190             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
191             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
192             continue;
193             },)
194 0           (avg_datap)[0] = tmp / norm; /* Find mean */
195 0           (min_datap)[0] = curmin;
196 0           (max_datap)[0] = curmax;
197             /* Calculate the RMS and standard deviation. */
198 0           tmp = 0;
199 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
200 0 0         PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,B,a_badval_isnan)) continue;,)
    0          
201 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
202 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
203 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
204             }} /* Close n */
205 0           (rms_datap)[0] = sqrtl( tmp/norm );
206 0 0         if (norm>1)
207 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
208             else
209 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
210 0           (adev_datap)[0] = tmp1 / norm ;
211 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
212             #undef PDL_IF_GENTYPE_INTEGER
213             #undef PDL_IF_GENTYPE_REAL
214             #undef PDL_IF_GENTYPE_UNSIGNED
215 0           } break;
216 0           case PDL_S: {
217             #define PDL_IF_GENTYPE_INTEGER(t,f) t
218             #define PDL_IF_GENTYPE_REAL(t,f) t
219             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
220 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_Short,S,PDL_Float,F,PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
221 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
222 0           PDL_Long curmin = 0, curmax = 0;
223 0           PDL_Short norm = 0;
224 0           int flag = 0;
225 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
226             /* perhaps should check w() for bad values too ? */
227 0 0         PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,S,a_badval_isnan) )) continue;,)
    0          
228 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
229 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
230 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
231 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
232 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
233 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
234 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
235             }
236             }} /* Close n */
237             /* have at least one valid point if flag true */
238 0 0         PDL_IF_BAD(if ( !flag ) {
239             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
240             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
241             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
242             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
243             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
244             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
245             continue;
246             },)
247 0           (avg_datap)[0] = tmp / norm; /* Find mean */
248 0           (min_datap)[0] = curmin;
249 0           (max_datap)[0] = curmax;
250             /* Calculate the RMS and standard deviation. */
251 0           tmp = 0;
252 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
253 0 0         PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,S,a_badval_isnan)) continue;,)
    0          
254 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
255 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
256 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
257             }} /* Close n */
258 0           (rms_datap)[0] = sqrtl( tmp/norm );
259 0 0         if (norm>1)
260 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
261             else
262 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
263 0           (adev_datap)[0] = tmp1 / norm ;
264 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
265             #undef PDL_IF_GENTYPE_INTEGER
266             #undef PDL_IF_GENTYPE_REAL
267             #undef PDL_IF_GENTYPE_UNSIGNED
268 0           } break;
269 0           case PDL_US: {
270             #define PDL_IF_GENTYPE_INTEGER(t,f) t
271             #define PDL_IF_GENTYPE_REAL(t,f) t
272             #define PDL_IF_GENTYPE_UNSIGNED(t,f) t
273 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_Ushort,U,PDL_Float,F,PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
274 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
275 0           PDL_Long curmin = 0, curmax = 0;
276 0           PDL_Ushort norm = 0;
277 0           int flag = 0;
278 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
279             /* perhaps should check w() for bad values too ? */
280 0 0         PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,U,a_badval_isnan) )) continue;,)
    0          
281 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
282 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
283 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
284 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
285 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
286 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
287 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
288             }
289             }} /* Close n */
290             /* have at least one valid point if flag true */
291 0 0         PDL_IF_BAD(if ( !flag ) {
292             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
293             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
294             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
295             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
296             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
297             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
298             continue;
299             },)
300 0           (avg_datap)[0] = tmp / norm; /* Find mean */
301 0           (min_datap)[0] = curmin;
302 0           (max_datap)[0] = curmax;
303             /* Calculate the RMS and standard deviation. */
304 0           tmp = 0;
305 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
306 0 0         PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,U,a_badval_isnan)) continue;,)
    0          
307 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
308 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
309 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
310             }} /* Close n */
311 0           (rms_datap)[0] = sqrtl( tmp/norm );
312 0 0         if (norm>1)
313 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
314             else
315 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
316 0           (adev_datap)[0] = tmp1 / norm ;
317 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
318             #undef PDL_IF_GENTYPE_INTEGER
319             #undef PDL_IF_GENTYPE_REAL
320             #undef PDL_IF_GENTYPE_UNSIGNED
321 0           } break;
322 0           case PDL_L: {
323             #define PDL_IF_GENTYPE_INTEGER(t,f) t
324             #define PDL_IF_GENTYPE_REAL(t,f) t
325             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
326 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_Long,L,PDL_Float,F,PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
327 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
328 0           PDL_Long curmin = 0, curmax = 0;
329 0           PDL_Long norm = 0;
330 0           int flag = 0;
331 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
332             /* perhaps should check w() for bad values too ? */
333 0 0         PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,L,a_badval_isnan) )) continue;,)
    0          
334 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
335 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
336 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
337 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
338 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
339 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
340 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
341             }
342             }} /* Close n */
343             /* have at least one valid point if flag true */
344 0 0         PDL_IF_BAD(if ( !flag ) {
345             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
346             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
347             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
348             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
349             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
350             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
351             continue;
352             },)
353 0           (avg_datap)[0] = tmp / norm; /* Find mean */
354 0           (min_datap)[0] = curmin;
355 0           (max_datap)[0] = curmax;
356             /* Calculate the RMS and standard deviation. */
357 0           tmp = 0;
358 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
359 0 0         PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,L,a_badval_isnan)) continue;,)
    0          
360 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
361 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
362 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
363             }} /* Close n */
364 0           (rms_datap)[0] = sqrtl( tmp/norm );
365 0 0         if (norm>1)
366 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
367             else
368 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
369 0           (adev_datap)[0] = tmp1 / norm ;
370 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
371             #undef PDL_IF_GENTYPE_INTEGER
372             #undef PDL_IF_GENTYPE_REAL
373             #undef PDL_IF_GENTYPE_UNSIGNED
374 0           } break;
375 0           case PDL_UL: {
376             #define PDL_IF_GENTYPE_INTEGER(t,f) t
377             #define PDL_IF_GENTYPE_REAL(t,f) t
378             #define PDL_IF_GENTYPE_UNSIGNED(t,f) t
379 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_ULong,K,PDL_Float,F,PDL_Float,F,PDL_ULong,K,PDL_ULong,K,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
380 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
381 0           PDL_ULong curmin = 0, curmax = 0;
382 0           PDL_ULong norm = 0;
383 0           int flag = 0;
384 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
385             /* perhaps should check w() for bad values too ? */
386 0 0         PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,K,a_badval_isnan) )) continue;,)
    0          
387 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
388 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
389 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
390 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
391 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
392 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
393 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
394             }
395             }} /* Close n */
396             /* have at least one valid point if flag true */
397 0 0         PDL_IF_BAD(if ( !flag ) {
398             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
399             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
400             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
401             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
402             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
403             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
404             continue;
405             },)
406 0           (avg_datap)[0] = tmp / norm; /* Find mean */
407 0           (min_datap)[0] = curmin;
408 0           (max_datap)[0] = curmax;
409             /* Calculate the RMS and standard deviation. */
410 0           tmp = 0;
411 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
412 0 0         PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,K,a_badval_isnan)) continue;,)
    0          
413 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
414 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
415 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
416             }} /* Close n */
417 0           (rms_datap)[0] = sqrtl( tmp/norm );
418 0 0         if (norm>1)
419 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
420             else
421 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
422 0           (adev_datap)[0] = tmp1 / norm ;
423 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
424             #undef PDL_IF_GENTYPE_INTEGER
425             #undef PDL_IF_GENTYPE_REAL
426             #undef PDL_IF_GENTYPE_UNSIGNED
427 0           } break;
428 0           case PDL_IND: {
429             #define PDL_IF_GENTYPE_INTEGER(t,f) t
430             #define PDL_IF_GENTYPE_REAL(t,f) t
431             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
432 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_Indx,N,PDL_Float,F,PDL_Float,F,PDL_Indx,N,PDL_Indx,N,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
433 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
434 0           PDL_Indx curmin = 0, curmax = 0;
435 0           PDL_Indx norm = 0;
436 0           int flag = 0;
437 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
438             /* perhaps should check w() for bad values too ? */
439 0 0         PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,N,a_badval_isnan) )) continue;,)
    0          
440 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
441 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
442 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
443 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
444 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
445 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
446 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
447             }
448             }} /* Close n */
449             /* have at least one valid point if flag true */
450 0 0         PDL_IF_BAD(if ( !flag ) {
451             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
452             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
453             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
454             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
455             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
456             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
457             continue;
458             },)
459 0           (avg_datap)[0] = tmp / norm; /* Find mean */
460 0           (min_datap)[0] = curmin;
461 0           (max_datap)[0] = curmax;
462             /* Calculate the RMS and standard deviation. */
463 0           tmp = 0;
464 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
465 0 0         PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,N,a_badval_isnan)) continue;,)
    0          
466 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
467 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
468 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
469             }} /* Close n */
470 0           (rms_datap)[0] = sqrtl( tmp/norm );
471 0 0         if (norm>1)
472 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
473             else
474 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
475 0           (adev_datap)[0] = tmp1 / norm ;
476 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
477             #undef PDL_IF_GENTYPE_INTEGER
478             #undef PDL_IF_GENTYPE_REAL
479             #undef PDL_IF_GENTYPE_UNSIGNED
480 0           } break;
481 0           case PDL_ULL: {
482             #define PDL_IF_GENTYPE_INTEGER(t,f) t
483             #define PDL_IF_GENTYPE_REAL(t,f) t
484             #define PDL_IF_GENTYPE_UNSIGNED(t,f) t
485 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_ULongLong,P,PDL_Float,F,PDL_Float,F,PDL_ULongLong,P,PDL_ULongLong,P,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
486 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
487 0           PDL_ULongLong curmin = 0, curmax = 0;
488 0           PDL_ULongLong norm = 0;
489 0           int flag = 0;
490 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
491             /* perhaps should check w() for bad values too ? */
492 0 0         PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,P,a_badval_isnan) )) continue;,)
    0          
493 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
494 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
495 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
496 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
497 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
498 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
499 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
500             }
501             }} /* Close n */
502             /* have at least one valid point if flag true */
503 0 0         PDL_IF_BAD(if ( !flag ) {
504             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
505             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
506             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
507             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
508             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
509             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
510             continue;
511             },)
512 0           (avg_datap)[0] = tmp / norm; /* Find mean */
513 0           (min_datap)[0] = curmin;
514 0           (max_datap)[0] = curmax;
515             /* Calculate the RMS and standard deviation. */
516 0           tmp = 0;
517 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
518 0 0         PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,P,a_badval_isnan)) continue;,)
    0          
519 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
520 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
521 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
522             }} /* Close n */
523 0           (rms_datap)[0] = sqrtl( tmp/norm );
524 0 0         if (norm>1)
525 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
526             else
527 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
528 0           (adev_datap)[0] = tmp1 / norm ;
529 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
530             #undef PDL_IF_GENTYPE_INTEGER
531             #undef PDL_IF_GENTYPE_REAL
532             #undef PDL_IF_GENTYPE_UNSIGNED
533 0           } break;
534 0           case PDL_LL: {
535             #define PDL_IF_GENTYPE_INTEGER(t,f) t
536             #define PDL_IF_GENTYPE_REAL(t,f) t
537             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
538 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_LongLong,Q,PDL_Float,F,PDL_Float,F,PDL_LongLong,Q,PDL_LongLong,Q,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
539 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
540 0           PDL_LongLong curmin = 0, curmax = 0;
541 0           PDL_LongLong norm = 0;
542 0           int flag = 0;
543 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
544             /* perhaps should check w() for bad values too ? */
545 0 0         PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,Q,a_badval_isnan) )) continue;,)
    0          
546 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
547 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
548 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
549 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
550 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
551 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
552 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
553             }
554             }} /* Close n */
555             /* have at least one valid point if flag true */
556 0 0         PDL_IF_BAD(if ( !flag ) {
557             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
558             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
559             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
560             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
561             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
562             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
563             continue;
564             },)
565 0           (avg_datap)[0] = tmp / norm; /* Find mean */
566 0           (min_datap)[0] = curmin;
567 0           (max_datap)[0] = curmax;
568             /* Calculate the RMS and standard deviation. */
569 0           tmp = 0;
570 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
571 0 0         PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,Q,a_badval_isnan)) continue;,)
    0          
572 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
573 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
574 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
575             }} /* Close n */
576 0           (rms_datap)[0] = sqrtl( tmp/norm );
577 0 0         if (norm>1)
578 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
579             else
580 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
581 0           (adev_datap)[0] = tmp1 / norm ;
582 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
583             #undef PDL_IF_GENTYPE_INTEGER
584             #undef PDL_IF_GENTYPE_REAL
585             #undef PDL_IF_GENTYPE_UNSIGNED
586 0           } break;
587 0           case PDL_F: {
588             #define PDL_IF_GENTYPE_INTEGER(t,f) f
589             #define PDL_IF_GENTYPE_REAL(t,f) t
590             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
591 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_Float,F,PDL_Float,F,PDL_Float,F,PDL_Float,F,PDL_Float,F,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
592 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
593 0           PDL_Float curmin = 0, curmax = 0;
594 0           PDL_Float norm = 0;
595 0           int flag = 0;
596 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
597             /* perhaps should check w() for bad values too ? */
598 0 0         PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,F,a_badval_isnan) )) continue;,)
    0          
599 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
600 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
601 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
602 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
603 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
604 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
605 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
606             }
607             }} /* Close n */
608             /* have at least one valid point if flag true */
609 0 0         PDL_IF_BAD(if ( !flag ) {
610             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
611             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
612             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
613             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
614             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
615             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
616             continue;
617             },)
618 0           (avg_datap)[0] = tmp / norm; /* Find mean */
619 0           (min_datap)[0] = curmin;
620 0           (max_datap)[0] = curmax;
621             /* Calculate the RMS and standard deviation. */
622 0           tmp = 0;
623 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
624 0 0         PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,F,a_badval_isnan)) continue;,)
    0          
625 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
626 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
627 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
628             }} /* Close n */
629 0           (rms_datap)[0] = sqrtl( tmp/norm );
630 0 0         if (norm>1)
631 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
632             else
633 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
634 0           (adev_datap)[0] = tmp1 / norm ;
635 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
636             #undef PDL_IF_GENTYPE_INTEGER
637             #undef PDL_IF_GENTYPE_REAL
638             #undef PDL_IF_GENTYPE_UNSIGNED
639 0           } break;
640 6           case PDL_D: {
641             #define PDL_IF_GENTYPE_INTEGER(t,f) f
642             #define PDL_IF_GENTYPE_REAL(t,f) t
643             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
644 6 50         PDL_DECLARE_PARAMS_statsover_1(PDL_Double,D,PDL_Double,D,PDL_Double,D,PDL_Double,D,PDL_Double,D,PDL_Double,D,PDL_Double,D)
    50          
    50          
    100          
    50          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
645 28 50         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    50          
    50          
    50          
    50          
    100          
    100          
646 10           PDL_Double curmin = 0, curmax = 0;
647 10           PDL_Double norm = 0;
648 10           int flag = 0;
649 58 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
650             /* perhaps should check w() for bad values too ? */
651 48 50         PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,D,a_badval_isnan) )) continue;,)
    100          
652 33           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
653 33           norm += (PDL_Double) (w_datap)[0+(__inc_w_n*(n))];
654 33 100         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
655 33 100         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
656 1           curmin = (a_datap)[0+(__inc_a_n*(n))];
657 32 100         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
658 5           curmax = (a_datap)[0+(__inc_a_n*(n))];
659             }
660             }} /* Close n */
661             /* have at least one valid point if flag true */
662 10 100         PDL_IF_BAD(if ( !flag ) {
663             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
664             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
665             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
666             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
667             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
668             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
669             continue;
670             },)
671 8           (avg_datap)[0] = tmp / norm; /* Find mean */
672 8           (min_datap)[0] = curmin;
673 8           (max_datap)[0] = curmax;
674             /* Calculate the RMS and standard deviation. */
675 8           tmp = 0;
676 50 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
677 42 50         PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,D,a_badval_isnan)) continue;,)
    100          
678 33           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
679 33           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
680 33           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
681             }} /* Close n */
682 8           (rms_datap)[0] = sqrtl( tmp/norm );
683 8 50         if (norm>1)
684 8           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
685             else
686 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
687 8           (adev_datap)[0] = tmp1 / norm ;
688 6 50         }PDL_BROADCASTLOOP_END_statsover_readdata
    50          
689             #undef PDL_IF_GENTYPE_INTEGER
690             #undef PDL_IF_GENTYPE_REAL
691             #undef PDL_IF_GENTYPE_UNSIGNED
692 6           } break;
693 0           case PDL_LD: {
694             #define PDL_IF_GENTYPE_INTEGER(t,f) f
695             #define PDL_IF_GENTYPE_REAL(t,f) t
696             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
697 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
698 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
699 0           PDL_LDouble curmin = 0, curmax = 0;
700 0           PDL_LDouble norm = 0;
701 0           int flag = 0;
702 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
703             /* perhaps should check w() for bad values too ? */
704 0 0         PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,E,a_badval_isnan) )) continue;,)
    0          
705 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
706 0           norm += (PDL_LDouble) (w_datap)[0+(__inc_w_n*(n))];
707 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
708 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
709 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
710 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
711 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
712             }
713             }} /* Close n */
714             /* have at least one valid point if flag true */
715 0 0         PDL_IF_BAD(if ( !flag ) {
716             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
717             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
718             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
719             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
720             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
721             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
722             continue;
723             },)
724 0           (avg_datap)[0] = tmp / norm; /* Find mean */
725 0           (min_datap)[0] = curmin;
726 0           (max_datap)[0] = curmax;
727             /* Calculate the RMS and standard deviation. */
728 0           tmp = 0;
729 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
730 0 0         PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,E,a_badval_isnan)) continue;,)
    0          
731 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
732 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
733 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
734             }} /* Close n */
735 0           (rms_datap)[0] = sqrtl( tmp/norm );
736 0 0         if (norm>1)
737 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
738             else
739 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
740 0           (adev_datap)[0] = tmp1 / norm ;
741 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
742             #undef PDL_IF_GENTYPE_INTEGER
743             #undef PDL_IF_GENTYPE_REAL
744             #undef PDL_IF_GENTYPE_UNSIGNED
745 0           } break;
746 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in statsover: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
747             }
748             #undef PDL_BAD_CODE
749             #undef PDL_IF_BAD
750             } else { /* ** else do 'good' Code ** */
751             #define PDL_IF_BAD(t,f) f
752 23           switch (__privtrans->__datatype) { /* Start generic switch */
753 0           case PDL_SB: {
754             #define PDL_IF_GENTYPE_INTEGER(t,f) t
755             #define PDL_IF_GENTYPE_REAL(t,f) t
756             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
757 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_SByte,A,PDL_Float,F,PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
758 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
759 0           PDL_Long curmin = 0, curmax = 0;
760 0           PDL_SByte norm = 0;
761 0           int flag = 0;
762 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
763             /* perhaps should check w() for bad values too ? */
764             PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,A,a_badval_isnan) )) continue;,)
765 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
766 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
767 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
768 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
769 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
770 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
771 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
772             }
773             }} /* Close n */
774             /* have at least one valid point if flag true */
775             PDL_IF_BAD(if ( !flag ) {
776             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
777             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
778             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
779             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
780             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
781             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
782             continue;
783             },)
784 0           (avg_datap)[0] = tmp / norm; /* Find mean */
785 0           (min_datap)[0] = curmin;
786 0           (max_datap)[0] = curmax;
787             /* Calculate the RMS and standard deviation. */
788 0           tmp = 0;
789 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
790             PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,A,a_badval_isnan)) continue;,)
791 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
792 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
793 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
794             }} /* Close n */
795 0           (rms_datap)[0] = sqrtl( tmp/norm );
796 0 0         if (norm>1)
797 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
798             else
799 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
800 0           (adev_datap)[0] = tmp1 / norm ;
801 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
802             #undef PDL_IF_GENTYPE_INTEGER
803             #undef PDL_IF_GENTYPE_REAL
804             #undef PDL_IF_GENTYPE_UNSIGNED
805 0           } break;
806 4           case PDL_B: {
807             #define PDL_IF_GENTYPE_INTEGER(t,f) t
808             #define PDL_IF_GENTYPE_REAL(t,f) t
809             #define PDL_IF_GENTYPE_UNSIGNED(t,f) t
810 4 50         PDL_DECLARE_PARAMS_statsover_1(PDL_Byte,B,PDL_Float,F,PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Float,F,PDL_Float,F)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
811 16 50         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    50          
    50          
    50          
    50          
    100          
    100          
812 4           PDL_Long curmin = 0, curmax = 0;
813 4           PDL_Byte norm = 0;
814 4           int flag = 0;
815 16 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
816             /* perhaps should check w() for bad values too ? */
817             PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,B,a_badval_isnan) )) continue;,)
818 12           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
819 12           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
820 12 100         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
821 12 50         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
822 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
823 12 100         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
824 4           curmax = (a_datap)[0+(__inc_a_n*(n))];
825             }
826             }} /* Close n */
827             /* have at least one valid point if flag true */
828             PDL_IF_BAD(if ( !flag ) {
829             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
830             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
831             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
832             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
833             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
834             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
835             continue;
836             },)
837 4           (avg_datap)[0] = tmp / norm; /* Find mean */
838 4           (min_datap)[0] = curmin;
839 4           (max_datap)[0] = curmax;
840             /* Calculate the RMS and standard deviation. */
841 4           tmp = 0;
842 16 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
843             PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,B,a_badval_isnan)) continue;,)
844 12           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
845 12           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
846 12           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
847             }} /* Close n */
848 4           (rms_datap)[0] = sqrtl( tmp/norm );
849 4 50         if (norm>1)
850 4           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
851             else
852 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
853 4           (adev_datap)[0] = tmp1 / norm ;
854 4 50         }PDL_BROADCASTLOOP_END_statsover_readdata
    50          
855             #undef PDL_IF_GENTYPE_INTEGER
856             #undef PDL_IF_GENTYPE_REAL
857             #undef PDL_IF_GENTYPE_UNSIGNED
858 4           } break;
859 5           case PDL_S: {
860             #define PDL_IF_GENTYPE_INTEGER(t,f) t
861             #define PDL_IF_GENTYPE_REAL(t,f) t
862             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
863 5 50         PDL_DECLARE_PARAMS_statsover_1(PDL_Short,S,PDL_Float,F,PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Float,F,PDL_Float,F)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
864 20 50         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    50          
    50          
    50          
    50          
    100          
    100          
865 5           PDL_Long curmin = 0, curmax = 0;
866 5           PDL_Short norm = 0;
867 5           int flag = 0;
868 42 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
869             /* perhaps should check w() for bad values too ? */
870             PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,S,a_badval_isnan) )) continue;,)
871 37           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
872 37           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
873 37 100         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
874 37 50         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
875 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
876 37 100         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
877 9           curmax = (a_datap)[0+(__inc_a_n*(n))];
878             }
879             }} /* Close n */
880             /* have at least one valid point if flag true */
881             PDL_IF_BAD(if ( !flag ) {
882             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
883             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
884             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
885             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
886             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
887             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
888             continue;
889             },)
890 5           (avg_datap)[0] = tmp / norm; /* Find mean */
891 5           (min_datap)[0] = curmin;
892 5           (max_datap)[0] = curmax;
893             /* Calculate the RMS and standard deviation. */
894 5           tmp = 0;
895 42 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
896             PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,S,a_badval_isnan)) continue;,)
897 37           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
898 37           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
899 37           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
900             }} /* Close n */
901 5           (rms_datap)[0] = sqrtl( tmp/norm );
902 5 50         if (norm>1)
903 5           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
904             else
905 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
906 5           (adev_datap)[0] = tmp1 / norm ;
907 5 50         }PDL_BROADCASTLOOP_END_statsover_readdata
    50          
908             #undef PDL_IF_GENTYPE_INTEGER
909             #undef PDL_IF_GENTYPE_REAL
910             #undef PDL_IF_GENTYPE_UNSIGNED
911 5           } break;
912 0           case PDL_US: {
913             #define PDL_IF_GENTYPE_INTEGER(t,f) t
914             #define PDL_IF_GENTYPE_REAL(t,f) t
915             #define PDL_IF_GENTYPE_UNSIGNED(t,f) t
916 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_Ushort,U,PDL_Float,F,PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
917 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
918 0           PDL_Long curmin = 0, curmax = 0;
919 0           PDL_Ushort norm = 0;
920 0           int flag = 0;
921 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
922             /* perhaps should check w() for bad values too ? */
923             PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,U,a_badval_isnan) )) continue;,)
924 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
925 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
926 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
927 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
928 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
929 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
930 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
931             }
932             }} /* Close n */
933             /* have at least one valid point if flag true */
934             PDL_IF_BAD(if ( !flag ) {
935             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
936             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
937             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
938             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
939             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
940             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
941             continue;
942             },)
943 0           (avg_datap)[0] = tmp / norm; /* Find mean */
944 0           (min_datap)[0] = curmin;
945 0           (max_datap)[0] = curmax;
946             /* Calculate the RMS and standard deviation. */
947 0           tmp = 0;
948 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
949             PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,U,a_badval_isnan)) continue;,)
950 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
951 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
952 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
953             }} /* Close n */
954 0           (rms_datap)[0] = sqrtl( tmp/norm );
955 0 0         if (norm>1)
956 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
957             else
958 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
959 0           (adev_datap)[0] = tmp1 / norm ;
960 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
961             #undef PDL_IF_GENTYPE_INTEGER
962             #undef PDL_IF_GENTYPE_REAL
963             #undef PDL_IF_GENTYPE_UNSIGNED
964 0           } break;
965 4           case PDL_L: {
966             #define PDL_IF_GENTYPE_INTEGER(t,f) t
967             #define PDL_IF_GENTYPE_REAL(t,f) t
968             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
969 4 50         PDL_DECLARE_PARAMS_statsover_1(PDL_Long,L,PDL_Float,F,PDL_Float,F,PDL_Long,L,PDL_Long,L,PDL_Float,F,PDL_Float,F)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
970 16 50         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    50          
    50          
    50          
    50          
    100          
    100          
971 4           PDL_Long curmin = 0, curmax = 0;
972 4           PDL_Long norm = 0;
973 4           int flag = 0;
974 16 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
975             /* perhaps should check w() for bad values too ? */
976             PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,L,a_badval_isnan) )) continue;,)
977 12           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
978 12           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
979 12 100         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
980 12 50         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
981 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
982 12 100         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
983 4           curmax = (a_datap)[0+(__inc_a_n*(n))];
984             }
985             }} /* Close n */
986             /* have at least one valid point if flag true */
987             PDL_IF_BAD(if ( !flag ) {
988             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
989             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
990             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
991             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
992             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
993             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
994             continue;
995             },)
996 4           (avg_datap)[0] = tmp / norm; /* Find mean */
997 4           (min_datap)[0] = curmin;
998 4           (max_datap)[0] = curmax;
999             /* Calculate the RMS and standard deviation. */
1000 4           tmp = 0;
1001 16 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1002             PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,L,a_badval_isnan)) continue;,)
1003 12           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
1004 12           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
1005 12           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
1006             }} /* Close n */
1007 4           (rms_datap)[0] = sqrtl( tmp/norm );
1008 4 50         if (norm>1)
1009 4           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
1010             else
1011 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
1012 4           (adev_datap)[0] = tmp1 / norm ;
1013 4 50         }PDL_BROADCASTLOOP_END_statsover_readdata
    50          
1014             #undef PDL_IF_GENTYPE_INTEGER
1015             #undef PDL_IF_GENTYPE_REAL
1016             #undef PDL_IF_GENTYPE_UNSIGNED
1017 4           } break;
1018 0           case PDL_UL: {
1019             #define PDL_IF_GENTYPE_INTEGER(t,f) t
1020             #define PDL_IF_GENTYPE_REAL(t,f) t
1021             #define PDL_IF_GENTYPE_UNSIGNED(t,f) t
1022 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_ULong,K,PDL_Float,F,PDL_Float,F,PDL_ULong,K,PDL_ULong,K,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1023 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
1024 0           PDL_ULong curmin = 0, curmax = 0;
1025 0           PDL_ULong norm = 0;
1026 0           int flag = 0;
1027 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
1028             /* perhaps should check w() for bad values too ? */
1029             PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,K,a_badval_isnan) )) continue;,)
1030 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
1031 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
1032 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
1033 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
1034 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
1035 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
1036 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
1037             }
1038             }} /* Close n */
1039             /* have at least one valid point if flag true */
1040             PDL_IF_BAD(if ( !flag ) {
1041             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
1042             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
1043             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
1044             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
1045             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
1046             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
1047             continue;
1048             },)
1049 0           (avg_datap)[0] = tmp / norm; /* Find mean */
1050 0           (min_datap)[0] = curmin;
1051 0           (max_datap)[0] = curmax;
1052             /* Calculate the RMS and standard deviation. */
1053 0           tmp = 0;
1054 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1055             PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,K,a_badval_isnan)) continue;,)
1056 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
1057 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
1058 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
1059             }} /* Close n */
1060 0           (rms_datap)[0] = sqrtl( tmp/norm );
1061 0 0         if (norm>1)
1062 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
1063             else
1064 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
1065 0           (adev_datap)[0] = tmp1 / norm ;
1066 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
1067             #undef PDL_IF_GENTYPE_INTEGER
1068             #undef PDL_IF_GENTYPE_REAL
1069             #undef PDL_IF_GENTYPE_UNSIGNED
1070 0           } break;
1071 0           case PDL_IND: {
1072             #define PDL_IF_GENTYPE_INTEGER(t,f) t
1073             #define PDL_IF_GENTYPE_REAL(t,f) t
1074             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
1075 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_Indx,N,PDL_Float,F,PDL_Float,F,PDL_Indx,N,PDL_Indx,N,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1076 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
1077 0           PDL_Indx curmin = 0, curmax = 0;
1078 0           PDL_Indx norm = 0;
1079 0           int flag = 0;
1080 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
1081             /* perhaps should check w() for bad values too ? */
1082             PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,N,a_badval_isnan) )) continue;,)
1083 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
1084 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
1085 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
1086 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
1087 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
1088 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
1089 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
1090             }
1091             }} /* Close n */
1092             /* have at least one valid point if flag true */
1093             PDL_IF_BAD(if ( !flag ) {
1094             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
1095             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
1096             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
1097             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
1098             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
1099             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
1100             continue;
1101             },)
1102 0           (avg_datap)[0] = tmp / norm; /* Find mean */
1103 0           (min_datap)[0] = curmin;
1104 0           (max_datap)[0] = curmax;
1105             /* Calculate the RMS and standard deviation. */
1106 0           tmp = 0;
1107 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1108             PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,N,a_badval_isnan)) continue;,)
1109 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
1110 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
1111 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
1112             }} /* Close n */
1113 0           (rms_datap)[0] = sqrtl( tmp/norm );
1114 0 0         if (norm>1)
1115 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
1116             else
1117 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
1118 0           (adev_datap)[0] = tmp1 / norm ;
1119 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
1120             #undef PDL_IF_GENTYPE_INTEGER
1121             #undef PDL_IF_GENTYPE_REAL
1122             #undef PDL_IF_GENTYPE_UNSIGNED
1123 0           } break;
1124 0           case PDL_ULL: {
1125             #define PDL_IF_GENTYPE_INTEGER(t,f) t
1126             #define PDL_IF_GENTYPE_REAL(t,f) t
1127             #define PDL_IF_GENTYPE_UNSIGNED(t,f) t
1128 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_ULongLong,P,PDL_Float,F,PDL_Float,F,PDL_ULongLong,P,PDL_ULongLong,P,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1129 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
1130 0           PDL_ULongLong curmin = 0, curmax = 0;
1131 0           PDL_ULongLong norm = 0;
1132 0           int flag = 0;
1133 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
1134             /* perhaps should check w() for bad values too ? */
1135             PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,P,a_badval_isnan) )) continue;,)
1136 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
1137 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
1138 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
1139 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
1140 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
1141 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
1142 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
1143             }
1144             }} /* Close n */
1145             /* have at least one valid point if flag true */
1146             PDL_IF_BAD(if ( !flag ) {
1147             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
1148             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
1149             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
1150             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
1151             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
1152             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
1153             continue;
1154             },)
1155 0           (avg_datap)[0] = tmp / norm; /* Find mean */
1156 0           (min_datap)[0] = curmin;
1157 0           (max_datap)[0] = curmax;
1158             /* Calculate the RMS and standard deviation. */
1159 0           tmp = 0;
1160 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1161             PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,P,a_badval_isnan)) continue;,)
1162 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
1163 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
1164 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
1165             }} /* Close n */
1166 0           (rms_datap)[0] = sqrtl( tmp/norm );
1167 0 0         if (norm>1)
1168 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
1169             else
1170 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
1171 0           (adev_datap)[0] = tmp1 / norm ;
1172 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
1173             #undef PDL_IF_GENTYPE_INTEGER
1174             #undef PDL_IF_GENTYPE_REAL
1175             #undef PDL_IF_GENTYPE_UNSIGNED
1176 0           } break;
1177 0           case PDL_LL: {
1178             #define PDL_IF_GENTYPE_INTEGER(t,f) t
1179             #define PDL_IF_GENTYPE_REAL(t,f) t
1180             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
1181 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_LongLong,Q,PDL_Float,F,PDL_Float,F,PDL_LongLong,Q,PDL_LongLong,Q,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1182 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
1183 0           PDL_LongLong curmin = 0, curmax = 0;
1184 0           PDL_LongLong norm = 0;
1185 0           int flag = 0;
1186 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
1187             /* perhaps should check w() for bad values too ? */
1188             PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,Q,a_badval_isnan) )) continue;,)
1189 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
1190 0           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
1191 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
1192 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
1193 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
1194 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
1195 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
1196             }
1197             }} /* Close n */
1198             /* have at least one valid point if flag true */
1199             PDL_IF_BAD(if ( !flag ) {
1200             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
1201             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
1202             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
1203             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
1204             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
1205             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
1206             continue;
1207             },)
1208 0           (avg_datap)[0] = tmp / norm; /* Find mean */
1209 0           (min_datap)[0] = curmin;
1210 0           (max_datap)[0] = curmax;
1211             /* Calculate the RMS and standard deviation. */
1212 0           tmp = 0;
1213 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1214             PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,Q,a_badval_isnan)) continue;,)
1215 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
1216 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
1217 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
1218             }} /* Close n */
1219 0           (rms_datap)[0] = sqrtl( tmp/norm );
1220 0 0         if (norm>1)
1221 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
1222             else
1223 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
1224 0           (adev_datap)[0] = tmp1 / norm ;
1225 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
1226             #undef PDL_IF_GENTYPE_INTEGER
1227             #undef PDL_IF_GENTYPE_REAL
1228             #undef PDL_IF_GENTYPE_UNSIGNED
1229 0           } break;
1230 4           case PDL_F: {
1231             #define PDL_IF_GENTYPE_INTEGER(t,f) f
1232             #define PDL_IF_GENTYPE_REAL(t,f) t
1233             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
1234 4 50         PDL_DECLARE_PARAMS_statsover_1(PDL_Float,F,PDL_Float,F,PDL_Float,F,PDL_Float,F,PDL_Float,F,PDL_Float,F,PDL_Float,F)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
1235 16 50         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    50          
    50          
    50          
    50          
    100          
    100          
1236 4           PDL_Float curmin = 0, curmax = 0;
1237 4           PDL_Float norm = 0;
1238 4           int flag = 0;
1239 16 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
1240             /* perhaps should check w() for bad values too ? */
1241             PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,F,a_badval_isnan) )) continue;,)
1242 12           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
1243 12           norm += (PDL_Float) (w_datap)[0+(__inc_w_n*(n))];
1244 12 100         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
1245 12 50         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
1246 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
1247 12 100         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
1248 4           curmax = (a_datap)[0+(__inc_a_n*(n))];
1249             }
1250             }} /* Close n */
1251             /* have at least one valid point if flag true */
1252             PDL_IF_BAD(if ( !flag ) {
1253             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
1254             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
1255             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
1256             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
1257             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
1258             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
1259             continue;
1260             },)
1261 4           (avg_datap)[0] = tmp / norm; /* Find mean */
1262 4           (min_datap)[0] = curmin;
1263 4           (max_datap)[0] = curmax;
1264             /* Calculate the RMS and standard deviation. */
1265 4           tmp = 0;
1266 16 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1267             PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,F,a_badval_isnan)) continue;,)
1268 12           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
1269 12           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
1270 12           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
1271             }} /* Close n */
1272 4           (rms_datap)[0] = sqrtl( tmp/norm );
1273 4 50         if (norm>1)
1274 4           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
1275             else
1276 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
1277 4           (adev_datap)[0] = tmp1 / norm ;
1278 4 50         }PDL_BROADCASTLOOP_END_statsover_readdata
    50          
1279             #undef PDL_IF_GENTYPE_INTEGER
1280             #undef PDL_IF_GENTYPE_REAL
1281             #undef PDL_IF_GENTYPE_UNSIGNED
1282 4           } break;
1283 6           case PDL_D: {
1284             #define PDL_IF_GENTYPE_INTEGER(t,f) f
1285             #define PDL_IF_GENTYPE_REAL(t,f) t
1286             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
1287 6 50         PDL_DECLARE_PARAMS_statsover_1(PDL_Double,D,PDL_Double,D,PDL_Double,D,PDL_Double,D,PDL_Double,D,PDL_Double,D,PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
1288 24 50         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    50          
    50          
    50          
    50          
    100          
    100          
1289 6           PDL_Double curmin = 0, curmax = 0;
1290 6           PDL_Double norm = 0;
1291 6           int flag = 0;
1292 68 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
1293             /* perhaps should check w() for bad values too ? */
1294             PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,D,a_badval_isnan) )) continue;,)
1295 62           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
1296 62           norm += (PDL_Double) (w_datap)[0+(__inc_w_n*(n))];
1297 62 100         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
1298 62 50         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
1299 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
1300 62 100         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
1301 14           curmax = (a_datap)[0+(__inc_a_n*(n))];
1302             }
1303             }} /* Close n */
1304             /* have at least one valid point if flag true */
1305             PDL_IF_BAD(if ( !flag ) {
1306             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
1307             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
1308             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
1309             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
1310             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
1311             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
1312             continue;
1313             },)
1314 6           (avg_datap)[0] = tmp / norm; /* Find mean */
1315 6           (min_datap)[0] = curmin;
1316 6           (max_datap)[0] = curmax;
1317             /* Calculate the RMS and standard deviation. */
1318 6           tmp = 0;
1319 68 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1320             PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,D,a_badval_isnan)) continue;,)
1321 62           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
1322 62           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
1323 62           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
1324             }} /* Close n */
1325 6           (rms_datap)[0] = sqrtl( tmp/norm );
1326 6 50         if (norm>1)
1327 6           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
1328             else
1329 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
1330 6           (adev_datap)[0] = tmp1 / norm ;
1331 6 50         }PDL_BROADCASTLOOP_END_statsover_readdata
    50          
1332             #undef PDL_IF_GENTYPE_INTEGER
1333             #undef PDL_IF_GENTYPE_REAL
1334             #undef PDL_IF_GENTYPE_UNSIGNED
1335 6           } break;
1336 0           case PDL_LD: {
1337             #define PDL_IF_GENTYPE_INTEGER(t,f) f
1338             #define PDL_IF_GENTYPE_REAL(t,f) t
1339             #define PDL_IF_GENTYPE_UNSIGNED(t,f) f
1340 0 0         PDL_DECLARE_PARAMS_statsover_1(PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1341 0 0         PDL_BROADCASTLOOP_START_statsover_readdata {PDL_IF_GENTYPE_REAL(PDL_LDouble,PDL_CLDouble) tmp = 0, tmp1 = 0, diff = 0;
    0          
    0          
    0          
    0          
    0          
    0          
1342 0           PDL_LDouble curmin = 0, curmax = 0;
1343 0           PDL_LDouble norm = 0;
1344 0           int flag = 0;
1345 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { /* Accumulate sum and summed weight. */
1346             /* perhaps should check w() for bad values too ? */
1347             PDL_IF_BAD(if (!( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,E,a_badval_isnan) )) continue;,)
1348 0           tmp += (a_datap)[0+(__inc_a_n*(n))]*(w_datap)[0+(__inc_w_n*(n))];
1349 0           norm += (PDL_LDouble) (w_datap)[0+(__inc_w_n*(n))];
1350 0 0         if (!flag) { curmin = (a_datap)[0+(__inc_a_n*(n))]; curmax = (a_datap)[0+(__inc_a_n*(n))]; flag=1; }
1351 0 0         if ((a_datap)[0+(__inc_a_n*(n))] < curmin) {
1352 0           curmin = (a_datap)[0+(__inc_a_n*(n))];
1353 0 0         } else if ((a_datap)[0+(__inc_a_n*(n))] > curmax) {
1354 0           curmax = (a_datap)[0+(__inc_a_n*(n))];
1355             }
1356             }} /* Close n */
1357             /* have at least one valid point if flag true */
1358             PDL_IF_BAD(if ( !flag ) {
1359             (avg_datap)[0]=avg_badval; __privtrans->pdls[2]->state |= PDL_BADVAL;
1360             (rms_datap)[0]=rms_badval; __privtrans->pdls[7]->state |= PDL_BADVAL;
1361             (adev_datap)[0]=adev_badval; __privtrans->pdls[6]->state |= PDL_BADVAL;
1362             (min_datap)[0]=min_badval; __privtrans->pdls[4]->state |= PDL_BADVAL;
1363             (max_datap)[0]=max_badval; __privtrans->pdls[5]->state |= PDL_BADVAL;
1364             (prms_datap)[0]=prms_badval; __privtrans->pdls[3]->state |= PDL_BADVAL;
1365             continue;
1366             },)
1367 0           (avg_datap)[0] = tmp / norm; /* Find mean */
1368 0           (min_datap)[0] = curmin;
1369 0           (max_datap)[0] = curmax;
1370             /* Calculate the RMS and standard deviation. */
1371 0           tmp = 0;
1372 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1373             PDL_IF_BAD(if (!!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,E,a_badval_isnan)) continue;,)
1374 0           diff = (a_datap)[0+(__inc_a_n*(n))]-(avg_datap)[0];
1375 0           tmp += diff * diff * (w_datap)[0+(__inc_w_n*(n))];
1376 0           tmp1 += PDL_IF_GENTYPE_REAL(fabsl,cabsl)(diff) * (w_datap)[0+(__inc_w_n*(n))];
1377             }} /* Close n */
1378 0           (rms_datap)[0] = sqrtl( tmp/norm );
1379 0 0         if (norm>1)
1380 0           (prms_datap)[0] = sqrtl( tmp/(norm-1) );
1381             else
1382 0           PDL_IF_BAD((prms_datap)[0]=prms_badval,(prms_datap)[0] = 0);
1383 0           (adev_datap)[0] = tmp1 / norm ;
1384 0 0         }PDL_BROADCASTLOOP_END_statsover_readdata
    0          
1385             #undef PDL_IF_GENTYPE_INTEGER
1386             #undef PDL_IF_GENTYPE_REAL
1387             #undef PDL_IF_GENTYPE_UNSIGNED
1388 0           } break;
1389 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in statsover: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
1390             }
1391             #undef PDL_IF_BAD
1392             }
1393 29           return PDL_err;
1394             }
1395              
1396             static pdl_datatypes pdl_statsover_vtable_gentypes[] = { PDL_SB, PDL_B, PDL_S, PDL_US, PDL_L, PDL_UL, PDL_IND, PDL_ULL, PDL_LL, PDL_F, PDL_D, PDL_LD, -1 };
1397             static PDL_Indx pdl_statsover_vtable_realdims[] = { 1, 1, 0, 0, 0, 0, 0, 0 };
1398             static char *pdl_statsover_vtable_parnames[] = { "a","w","avg","prms","min","max","adev","rms" };
1399             static short pdl_statsover_vtable_parflags[] = {
1400             0,
1401             0,
1402             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTPLUS|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
1403             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTPLUS|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
1404             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTPLUS|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
1405             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTPLUS|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
1406             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTPLUS|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
1407             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTPLUS|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
1408             };
1409             static pdl_datatypes pdl_statsover_vtable_partypes[] = { -1, -1, PDL_F, PDL_F, PDL_L, PDL_L, PDL_F, PDL_F };
1410             static PDL_Indx pdl_statsover_vtable_realdims_starts[] = { 0, 1, 2, 2, 2, 2, 2, 2 };
1411             static PDL_Indx pdl_statsover_vtable_realdims_ind_ids[] = { 0, 0 };
1412             static char *pdl_statsover_vtable_indnames[] = { "n" };
1413             pdl_transvtable pdl_statsover_vtable = {
1414             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_statsover_vtable_gentypes, 2, 8, NULL /*CORE21*/,
1415             pdl_statsover_vtable_realdims, pdl_statsover_vtable_parnames,
1416             pdl_statsover_vtable_parflags, pdl_statsover_vtable_partypes,
1417             pdl_statsover_vtable_realdims_starts, pdl_statsover_vtable_realdims_ind_ids, 2,
1418             1, pdl_statsover_vtable_indnames,
1419             NULL, pdl_statsover_readdata, NULL,
1420             NULL,
1421             0,"PDL::Primitive::statsover"
1422             };
1423              
1424              
1425 29           pdl_error pdl_run_statsover(pdl *a,pdl *w,pdl *avg,pdl *prms,pdl *min,pdl *max,pdl *adev,pdl *rms) {
1426 29           pdl_error PDL_err = {0, NULL, 0};
1427 29 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
1428 29           pdl_trans *__privtrans = PDL->create_trans(&pdl_statsover_vtable);
1429 29 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
1430 29           __privtrans->pdls[0] = a;
1431 29           __privtrans->pdls[1] = w;
1432 29           __privtrans->pdls[2] = avg;
1433 29           __privtrans->pdls[3] = prms;
1434 29           __privtrans->pdls[4] = min;
1435 29           __privtrans->pdls[5] = max;
1436 29           __privtrans->pdls[6] = adev;
1437 29           __privtrans->pdls[7] = rms;
1438 29 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
1439 29 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
1440 29           return PDL_err;
1441             }