File Coverage

lib/PDL/Stats/Basic-pp-cov_table.c
Criterion Covered Total %
statement 67 593 11.3
branch 70 1250 5.6
condition n/a
subroutine n/a
pod n/a
total 137 1843 7.4


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/Stats/Basic.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_Stats_Basic
21             extern Core* PDL; /* Structure hold core C functions */
22             #line 23 "lib/PDL/Stats/Basic-pp-cov_table.c"
23              
24             #include
25              
26             #line 1857 "lib/PDL/PP.pm"
27             pdl_error pdl_cov_table_redodims(pdl_trans *__privtrans) {
28             pdl_error PDL_err = {0, NULL, 0};
29             #line 30 "lib/PDL/Stats/Basic-pp-cov_table.c"
30             #ifndef PDL_DECLARE_PARAMS_cov_table_0
31             #define PDL_DECLARE_PARAMS_cov_table_0(PDL_TYPE_OP,PDL_PPSYM_OP) \
32             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 0, PDL_PPSYM_OP) \
33             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, c, (__privtrans->pdls[1]), 0, PDL_PPSYM_OP)
34             #endif
35             #define PDL_IF_BAD(t,f) f
36 3           switch (__privtrans->__datatype) { /* Start generic switch */
37 0           case PDL_SB: {
38 0 0         PDL_DECLARE_PARAMS_cov_table_0(PDL_SByte,A)
    0          
    0          
    0          
39 0 0         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "too few N");}
40 0           } break;
41 0           case PDL_B: {
42 0 0         PDL_DECLARE_PARAMS_cov_table_0(PDL_Byte,B)
    0          
    0          
    0          
43 0 0         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "too few N");}
44 0           } break;
45 0           case PDL_S: {
46 0 0         PDL_DECLARE_PARAMS_cov_table_0(PDL_Short,S)
    0          
    0          
    0          
47 0 0         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "too few N");}
48 0           } break;
49 0           case PDL_US: {
50 0 0         PDL_DECLARE_PARAMS_cov_table_0(PDL_Ushort,U)
    0          
    0          
    0          
51 0 0         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "too few N");}
52 0           } break;
53 0           case PDL_L: {
54 0 0         PDL_DECLARE_PARAMS_cov_table_0(PDL_Long,L)
    0          
    0          
    0          
55 0 0         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "too few N");}
56 0           } break;
57 0           case PDL_UL: {
58 0 0         PDL_DECLARE_PARAMS_cov_table_0(PDL_ULong,K)
    0          
    0          
    0          
59 0 0         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "too few N");}
60 0           } break;
61 0           case PDL_IND: {
62 0 0         PDL_DECLARE_PARAMS_cov_table_0(PDL_Indx,N)
    0          
    0          
    0          
63 0 0         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "too few N");}
64 0           } break;
65 0           case PDL_ULL: {
66 0 0         PDL_DECLARE_PARAMS_cov_table_0(PDL_ULongLong,P)
    0          
    0          
    0          
67 0 0         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "too few N");}
68 0           } break;
69 0           case PDL_LL: {
70 0 0         PDL_DECLARE_PARAMS_cov_table_0(PDL_LongLong,Q)
    0          
    0          
    0          
71 0 0         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "too few N");}
72 0           } break;
73 0           case PDL_F: {
74 0 0         PDL_DECLARE_PARAMS_cov_table_0(PDL_Float,F)
    0          
    0          
    0          
75 0 0         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "too few N");}
76 0           } break;
77 3           case PDL_D: {
78 3 50         PDL_DECLARE_PARAMS_cov_table_0(PDL_Double,D)
    50          
    50          
    50          
79 3 50         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "too few N");}
80 3           } break;
81 0           case PDL_LD: {
82 0 0         PDL_DECLARE_PARAMS_cov_table_0(PDL_LDouble,E)
    0          
    0          
    0          
83 0 0         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "too few N");}
84 0           } break;
85 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in cov_table: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
86             }
87             #undef PDL_IF_BAD
88              
89 3 50         PDL_RETERROR(PDL_err, PDL->redodims_default(__privtrans));
90 3           return PDL_err;
91             }
92              
93              
94             #line 1857 "lib/PDL/PP.pm"
95             pdl_error pdl_cov_table_readdata(pdl_trans *__privtrans) {
96             pdl_error PDL_err = {0, NULL, 0};
97             #line 98 "lib/PDL/Stats/Basic-pp-cov_table.c"
98 3           register PDL_Indx __n_size = __privtrans->ind_sizes[1];
99 3 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in cov_table:" "broadcast.incs NULL");
100             /* broadcastloop declarations */
101             int __brcloopval;
102             register PDL_Indx __tind0,__tind1; /* counters along dim */
103 3           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
104             /* dims here are how many steps along those dims */
105 3           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
106 3           register PDL_Indx __tinc0_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
107 3           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
108 3           register PDL_Indx __tinc1_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
109             #define PDL_BROADCASTLOOP_START_cov_table_readdata PDL_BROADCASTLOOP_START( \
110             readdata, \
111             __privtrans->broadcast, \
112             __privtrans->vtable, \
113             a_datap += __offsp[0]; \
114             c_datap += __offsp[1]; \
115             , \
116             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
117             ,c_datap += __tinc1_c - __tinc0_c * __tdims0 \
118             ), \
119             ( ,a_datap += __tinc0_a \
120             ,c_datap += __tinc0_c \
121             ) \
122             )
123             #define PDL_BROADCASTLOOP_END_cov_table_readdata PDL_BROADCASTLOOP_END( \
124             __privtrans->broadcast, \
125             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
126             c_datap -= __tinc1_c * __tdims1 + __offsp[1]; \
127             )
128 3           register PDL_Indx __inc_a_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a_n;register PDL_Indx __inc_a_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,1)]; (void)__inc_a_m;
129 3           register PDL_Indx __inc_c_m0 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_c_m0;register PDL_Indx __inc_c_m1 = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,1)]; (void)__inc_c_m1;
130             #ifndef PDL_DECLARE_PARAMS_cov_table_1
131             #define PDL_DECLARE_PARAMS_cov_table_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
132             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
133             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, c, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP)
134             #endif
135 3 100         if ( __privtrans->bvalflag ) { /* ** do 'bad' Code ** */
136             #define PDL_BAD_CODE
137             #define PDL_IF_BAD(t,f) t
138 1           switch (__privtrans->__datatype) { /* Start generic switch */
139 0           case PDL_SB: {
140 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
141 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
142             PDL_SByte a_, b_;
143 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
144 0 0         for (i=0; i
145 0 0         for (j=i; j
146 0           PDL_SByte ab = 0, sa = 0, sb = 0;
147 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
148 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
149 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,A,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,A,a_badval_isnan)) continue; N++;,)
    0          
    0          
    0          
150 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
151 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
152 0           ab += a_ * b_;
153             }} /* Close n */
154 0 0         if (N < 2) {
155 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
156 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
157 0           continue;
158             }
159 0           PDL_SByte cov = ab - (sa * sb) / N;
160 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
161 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
162             }
163             }
164 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
165 0           } break;
166 0           case PDL_B: {
167 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
168 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
169             PDL_Byte a_, b_;
170 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
171 0 0         for (i=0; i
172 0 0         for (j=i; j
173 0           PDL_Byte ab = 0, sa = 0, sb = 0;
174 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
175 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
176 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,B,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,B,a_badval_isnan)) continue; N++;,)
    0          
    0          
    0          
177 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
178 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
179 0           ab += a_ * b_;
180             }} /* Close n */
181 0 0         if (N < 2) {
182 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
183 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
184 0           continue;
185             }
186 0           PDL_Byte cov = ab - (sa * sb) / N;
187 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
188 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
189             }
190             }
191 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
192 0           } break;
193 0           case PDL_S: {
194 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
195 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
196             PDL_Short a_, b_;
197 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
198 0 0         for (i=0; i
199 0 0         for (j=i; j
200 0           PDL_Short ab = 0, sa = 0, sb = 0;
201 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
202 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
203 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,S,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,S,a_badval_isnan)) continue; N++;,)
    0          
    0          
    0          
204 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
205 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
206 0           ab += a_ * b_;
207             }} /* Close n */
208 0 0         if (N < 2) {
209 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
210 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
211 0           continue;
212             }
213 0           PDL_Short cov = ab - (sa * sb) / N;
214 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
215 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
216             }
217             }
218 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
219 0           } break;
220 0           case PDL_US: {
221 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
222 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
223             PDL_Ushort a_, b_;
224 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
225 0 0         for (i=0; i
226 0 0         for (j=i; j
227 0           PDL_Ushort ab = 0, sa = 0, sb = 0;
228 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
229 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
230 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,U,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,U,a_badval_isnan)) continue; N++;,)
    0          
    0          
    0          
231 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
232 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
233 0           ab += a_ * b_;
234             }} /* Close n */
235 0 0         if (N < 2) {
236 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
237 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
238 0           continue;
239             }
240 0           PDL_Ushort cov = ab - (sa * sb) / N;
241 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
242 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
243             }
244             }
245 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
246 0           } break;
247 0           case PDL_L: {
248 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
249 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
250             PDL_Long a_, b_;
251 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
252 0 0         for (i=0; i
253 0 0         for (j=i; j
254 0           PDL_Long ab = 0, sa = 0, sb = 0;
255 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
256 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
257 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,L,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,L,a_badval_isnan)) continue; N++;,)
    0          
    0          
    0          
258 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
259 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
260 0           ab += a_ * b_;
261             }} /* Close n */
262 0 0         if (N < 2) {
263 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
264 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
265 0           continue;
266             }
267 0           PDL_Long cov = ab - (sa * sb) / N;
268 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
269 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
270             }
271             }
272 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
273 0           } break;
274 0           case PDL_UL: {
275 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
276 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
277             PDL_ULong a_, b_;
278 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
279 0 0         for (i=0; i
280 0 0         for (j=i; j
281 0           PDL_ULong ab = 0, sa = 0, sb = 0;
282 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
283 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
284 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,K,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,K,a_badval_isnan)) continue; N++;,)
    0          
    0          
    0          
285 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
286 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
287 0           ab += a_ * b_;
288             }} /* Close n */
289 0 0         if (N < 2) {
290 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
291 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
292 0           continue;
293             }
294 0           PDL_ULong cov = ab - (sa * sb) / N;
295 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
296 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
297             }
298             }
299 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
300 0           } break;
301 0           case PDL_IND: {
302 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
303 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
304             PDL_Indx a_, b_;
305 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
306 0 0         for (i=0; i
307 0 0         for (j=i; j
308 0           PDL_Indx ab = 0, sa = 0, sb = 0;
309 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
310 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
311 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,N,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,N,a_badval_isnan)) continue; N++;,)
    0          
    0          
    0          
312 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
313 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
314 0           ab += a_ * b_;
315             }} /* Close n */
316 0 0         if (N < 2) {
317 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
318 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
319 0           continue;
320             }
321 0           PDL_Indx cov = ab - (sa * sb) / N;
322 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
323 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
324             }
325             }
326 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
327 0           } break;
328 0           case PDL_ULL: {
329 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
330 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
331             PDL_ULongLong a_, b_;
332 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
333 0 0         for (i=0; i
334 0 0         for (j=i; j
335 0           PDL_ULongLong ab = 0, sa = 0, sb = 0;
336 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
337 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
338 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,P,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,P,a_badval_isnan)) continue; N++;,)
    0          
    0          
    0          
339 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
340 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
341 0           ab += a_ * b_;
342             }} /* Close n */
343 0 0         if (N < 2) {
344 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
345 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
346 0           continue;
347             }
348 0           PDL_ULongLong cov = ab - (sa * sb) / N;
349 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
350 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
351             }
352             }
353 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
354 0           } break;
355 0           case PDL_LL: {
356 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
357 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
358             PDL_LongLong a_, b_;
359 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
360 0 0         for (i=0; i
361 0 0         for (j=i; j
362 0           PDL_LongLong ab = 0, sa = 0, sb = 0;
363 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
364 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
365 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,Q,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,Q,a_badval_isnan)) continue; N++;,)
    0          
    0          
    0          
366 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
367 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
368 0           ab += a_ * b_;
369             }} /* Close n */
370 0 0         if (N < 2) {
371 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
372 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
373 0           continue;
374             }
375 0           PDL_LongLong cov = ab - (sa * sb) / N;
376 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
377 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
378             }
379             }
380 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
381 0           } break;
382 0           case PDL_F: {
383 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
384 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
385             PDL_Float a_, b_;
386 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
387 0 0         for (i=0; i
388 0 0         for (j=i; j
389 0           PDL_Float ab = 0, sa = 0, sb = 0;
390 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
391 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
392 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,F,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,F,a_badval_isnan)) continue; N++;,)
    0          
    0          
    0          
    0          
    0          
393 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
394 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
395 0           ab += a_ * b_;
396             }} /* Close n */
397 0 0         if (N < 2) {
398 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
399 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
400 0           continue;
401             }
402 0           PDL_Float cov = ab - (sa * sb) / N;
403 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
404 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
405             }
406             }
407 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
408 0           } break;
409 1           case PDL_D: {
410 1 50         PDL_DECLARE_PARAMS_cov_table_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
411 4 50         PDL_BROADCASTLOOP_START_cov_table_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
412             PDL_Double a_, b_;
413 1           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
414 4 100         for (i=0; i
415 9 100         for (j=i; j
416 6           PDL_Double ab = 0, sa = 0, sb = 0;
417 6           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
418 66 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
419 60 50         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,D,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,D,a_badval_isnan)) continue; N++;,)
    0          
    100          
    50          
    0          
    50          
420 57           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
421 57           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
422 57           ab += a_ * b_;
423             }} /* Close n */
424 6 50         if (N < 2) {
425 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
426 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
427 0           continue;
428             }
429 6           PDL_Double cov = ab - (sa * sb) / N;
430 6           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
431 6           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
432             }
433             }
434 1 50         }PDL_BROADCASTLOOP_END_cov_table_readdata
    50          
435 1           } break;
436 0           case PDL_LD: {
437 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
438 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
439             PDL_LDouble a_, b_;
440 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
441 0 0         for (i=0; i
442 0 0         for (j=i; j
443 0           PDL_LDouble ab = 0, sa = 0, sb = 0;
444 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
445 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
446 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,E,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,E,a_badval_isnan)) continue; N++;,)
    0          
    0          
    0          
    0          
    0          
447 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
448 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
449 0           ab += a_ * b_;
450             }} /* Close n */
451 0 0         if (N < 2) {
452 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
453 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
454 0           continue;
455             }
456 0           PDL_LDouble cov = ab - (sa * sb) / N;
457 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
458 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
459             }
460             }
461 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
462 0           } break;
463 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in cov_table: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
464             }
465             #undef PDL_BAD_CODE
466             #undef PDL_IF_BAD
467             } else { /* ** else do 'good' Code ** */
468             #define PDL_IF_BAD(t,f) f
469 2           switch (__privtrans->__datatype) { /* Start generic switch */
470 0           case PDL_SB: {
471 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
472 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
473             PDL_SByte a_, b_;
474 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
475 0 0         for (i=0; i
476 0 0         for (j=i; j
477 0           PDL_SByte ab = 0, sa = 0, sb = 0;
478 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
479 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
480             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,A,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,A,a_badval_isnan)) continue; N++;,)
481 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
482 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
483 0           ab += a_ * b_;
484             }} /* Close n */
485 0 0         if (N < 2) {
486 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
487 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
488 0           continue;
489             }
490 0           PDL_SByte cov = ab - (sa * sb) / N;
491 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
492 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
493             }
494             }
495 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
496 0           } break;
497 0           case PDL_B: {
498 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
499 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
500             PDL_Byte a_, b_;
501 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
502 0 0         for (i=0; i
503 0 0         for (j=i; j
504 0           PDL_Byte ab = 0, sa = 0, sb = 0;
505 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
506 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
507             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,B,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,B,a_badval_isnan)) continue; N++;,)
508 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
509 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
510 0           ab += a_ * b_;
511             }} /* Close n */
512 0 0         if (N < 2) {
513 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
514 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
515 0           continue;
516             }
517 0           PDL_Byte cov = ab - (sa * sb) / N;
518 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
519 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
520             }
521             }
522 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
523 0           } break;
524 0           case PDL_S: {
525 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
526 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
527             PDL_Short a_, b_;
528 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
529 0 0         for (i=0; i
530 0 0         for (j=i; j
531 0           PDL_Short ab = 0, sa = 0, sb = 0;
532 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
533 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
534             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,S,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,S,a_badval_isnan)) continue; N++;,)
535 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
536 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
537 0           ab += a_ * b_;
538             }} /* Close n */
539 0 0         if (N < 2) {
540 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
541 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
542 0           continue;
543             }
544 0           PDL_Short cov = ab - (sa * sb) / N;
545 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
546 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
547             }
548             }
549 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
550 0           } break;
551 0           case PDL_US: {
552 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
553 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
554             PDL_Ushort a_, b_;
555 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
556 0 0         for (i=0; i
557 0 0         for (j=i; j
558 0           PDL_Ushort ab = 0, sa = 0, sb = 0;
559 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
560 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
561             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,U,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,U,a_badval_isnan)) continue; N++;,)
562 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
563 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
564 0           ab += a_ * b_;
565             }} /* Close n */
566 0 0         if (N < 2) {
567 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
568 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
569 0           continue;
570             }
571 0           PDL_Ushort cov = ab - (sa * sb) / N;
572 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
573 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
574             }
575             }
576 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
577 0           } break;
578 0           case PDL_L: {
579 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
580 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
581             PDL_Long a_, b_;
582 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
583 0 0         for (i=0; i
584 0 0         for (j=i; j
585 0           PDL_Long ab = 0, sa = 0, sb = 0;
586 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
587 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
588             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,L,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,L,a_badval_isnan)) continue; N++;,)
589 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
590 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
591 0           ab += a_ * b_;
592             }} /* Close n */
593 0 0         if (N < 2) {
594 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
595 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
596 0           continue;
597             }
598 0           PDL_Long cov = ab - (sa * sb) / N;
599 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
600 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
601             }
602             }
603 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
604 0           } break;
605 0           case PDL_UL: {
606 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
607 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
608             PDL_ULong a_, b_;
609 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
610 0 0         for (i=0; i
611 0 0         for (j=i; j
612 0           PDL_ULong ab = 0, sa = 0, sb = 0;
613 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
614 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
615             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,K,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,K,a_badval_isnan)) continue; N++;,)
616 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
617 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
618 0           ab += a_ * b_;
619             }} /* Close n */
620 0 0         if (N < 2) {
621 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
622 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
623 0           continue;
624             }
625 0           PDL_ULong cov = ab - (sa * sb) / N;
626 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
627 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
628             }
629             }
630 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
631 0           } break;
632 0           case PDL_IND: {
633 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
634 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
635             PDL_Indx a_, b_;
636 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
637 0 0         for (i=0; i
638 0 0         for (j=i; j
639 0           PDL_Indx ab = 0, sa = 0, sb = 0;
640 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
641 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
642             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,N,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,N,a_badval_isnan)) continue; N++;,)
643 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
644 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
645 0           ab += a_ * b_;
646             }} /* Close n */
647 0 0         if (N < 2) {
648 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
649 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
650 0           continue;
651             }
652 0           PDL_Indx cov = ab - (sa * sb) / N;
653 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
654 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
655             }
656             }
657 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
658 0           } break;
659 0           case PDL_ULL: {
660 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
661 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
662             PDL_ULongLong a_, b_;
663 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
664 0 0         for (i=0; i
665 0 0         for (j=i; j
666 0           PDL_ULongLong ab = 0, sa = 0, sb = 0;
667 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
668 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
669             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,P,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,P,a_badval_isnan)) continue; N++;,)
670 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
671 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
672 0           ab += a_ * b_;
673             }} /* Close n */
674 0 0         if (N < 2) {
675 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
676 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
677 0           continue;
678             }
679 0           PDL_ULongLong cov = ab - (sa * sb) / N;
680 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
681 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
682             }
683             }
684 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
685 0           } break;
686 0           case PDL_LL: {
687 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
688 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
689             PDL_LongLong a_, b_;
690 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
691 0 0         for (i=0; i
692 0 0         for (j=i; j
693 0           PDL_LongLong ab = 0, sa = 0, sb = 0;
694 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
695 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
696             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,Q,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,Q,a_badval_isnan)) continue; N++;,)
697 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
698 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
699 0           ab += a_ * b_;
700             }} /* Close n */
701 0 0         if (N < 2) {
702 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
703 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
704 0           continue;
705             }
706 0           PDL_LongLong cov = ab - (sa * sb) / N;
707 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
708 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
709             }
710             }
711 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
712 0           } break;
713 0           case PDL_F: {
714 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
715 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
716             PDL_Float a_, b_;
717 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
718 0 0         for (i=0; i
719 0 0         for (j=i; j
720 0           PDL_Float ab = 0, sa = 0, sb = 0;
721 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
722 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
723             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,F,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,F,a_badval_isnan)) continue; N++;,)
724 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
725 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
726 0           ab += a_ * b_;
727             }} /* Close n */
728 0 0         if (N < 2) {
729 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
730 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
731 0           continue;
732             }
733 0           PDL_Float cov = ab - (sa * sb) / N;
734 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
735 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
736             }
737             }
738 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
739 0           } break;
740 2           case PDL_D: {
741 2 50         PDL_DECLARE_PARAMS_cov_table_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
742 8 50         PDL_BROADCASTLOOP_START_cov_table_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
743             PDL_Double a_, b_;
744 2           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
745 8 100         for (i=0; i
746 18 100         for (j=i; j
747 12           PDL_Double ab = 0, sa = 0, sb = 0;
748 12           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
749 102 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
750             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,D,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,D,a_badval_isnan)) continue; N++;,)
751 90           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
752 90           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
753 90           ab += a_ * b_;
754             }} /* Close n */
755 12 50         if (N < 2) {
756 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
757 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
758 0           continue;
759             }
760 12           PDL_Double cov = ab - (sa * sb) / N;
761 12           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
762 12           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
763             }
764             }
765 2 50         }PDL_BROADCASTLOOP_END_cov_table_readdata
    50          
766 2           } break;
767 0           case PDL_LD: {
768 0 0         PDL_DECLARE_PARAMS_cov_table_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
769 0 0         PDL_BROADCASTLOOP_START_cov_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
770             PDL_LDouble a_, b_;
771 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
772 0 0         for (i=0; i
773 0 0         for (j=i; j
774 0           PDL_LDouble ab = 0, sa = 0, sb = 0;
775 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
776 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
777             PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,E,a_badval_isnan) || PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))],a_badval,E,a_badval_isnan)) continue; N++;,)
778 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
779 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
780 0           ab += a_ * b_;
781             }} /* Close n */
782 0 0         if (N < 2) {
783 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
784 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
785 0           continue;
786             }
787 0           PDL_LDouble cov = ab - (sa * sb) / N;
788 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
789 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = cov / N;
790             }
791             }
792 0 0         }PDL_BROADCASTLOOP_END_cov_table_readdata
    0          
793 0           } break;
794 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in cov_table: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
795             }
796             #undef PDL_IF_BAD
797             }
798 3           return PDL_err;
799             }
800              
801             static pdl_datatypes pdl_cov_table_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 };
802             static PDL_Indx pdl_cov_table_vtable_realdims[] = { 2, 2 };
803             static char *pdl_cov_table_vtable_parnames[] = { "a","c" };
804             static short pdl_cov_table_vtable_parflags[] = {
805             0,
806             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
807             };
808             static pdl_datatypes pdl_cov_table_vtable_partypes[] = { -1, -1 };
809             static PDL_Indx pdl_cov_table_vtable_realdims_starts[] = { 0, 2 };
810             static PDL_Indx pdl_cov_table_vtable_realdims_ind_ids[] = { 1, 0, 0, 0 };
811             static char *pdl_cov_table_vtable_indnames[] = { "m","n" };
812             pdl_transvtable pdl_cov_table_vtable = {
813             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_cov_table_vtable_gentypes, 1, 2, NULL /*CORE21*/,
814             pdl_cov_table_vtable_realdims, pdl_cov_table_vtable_parnames,
815             pdl_cov_table_vtable_parflags, pdl_cov_table_vtable_partypes,
816             pdl_cov_table_vtable_realdims_starts, pdl_cov_table_vtable_realdims_ind_ids, 4,
817             2, pdl_cov_table_vtable_indnames,
818             pdl_cov_table_redodims, pdl_cov_table_readdata, NULL,
819             NULL,
820             0,"PDL::Stats::Basic::cov_table"
821             };
822              
823              
824 3           pdl_error pdl_run_cov_table(pdl *a,pdl *c) {
825 3           pdl_error PDL_err = {0, NULL, 0};
826 3 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
827 3           pdl_trans *__privtrans = PDL->create_trans(&pdl_cov_table_vtable);
828 3 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
829 3           __privtrans->pdls[0] = a;
830 3           __privtrans->pdls[1] = c;
831 3 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
832 3 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
833 3           return PDL_err;
834             }