File Coverage

lib/PDL/Stats/Basic-pp-corr_table.c
Criterion Covered Total %
statement 80 749 10.6
branch 76 1370 5.5
condition n/a
subroutine n/a
pod n/a
total 156 2119 7.3


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-corr_table.c"
23              
24             #include
25              
26             #line 1857 "lib/PDL/PP.pm"
27             pdl_error pdl_corr_table_redodims(pdl_trans *__privtrans) {
28             pdl_error PDL_err = {0, NULL, 0};
29             #line 30 "lib/PDL/Stats/Basic-pp-corr_table.c"
30             #ifndef PDL_DECLARE_PARAMS_corr_table_0
31             #define PDL_DECLARE_PARAMS_corr_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 4           switch (__privtrans->__datatype) { /* Start generic switch */
37 0           case PDL_SB: {
38 0 0         PDL_DECLARE_PARAMS_corr_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 corr_table:" "too few N");}
40 0           } break;
41 0           case PDL_B: {
42 0 0         PDL_DECLARE_PARAMS_corr_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 corr_table:" "too few N");}
44 0           } break;
45 0           case PDL_S: {
46 0 0         PDL_DECLARE_PARAMS_corr_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 corr_table:" "too few N");}
48 0           } break;
49 0           case PDL_US: {
50 0 0         PDL_DECLARE_PARAMS_corr_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 corr_table:" "too few N");}
52 0           } break;
53 0           case PDL_L: {
54 0 0         PDL_DECLARE_PARAMS_corr_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 corr_table:" "too few N");}
56 0           } break;
57 0           case PDL_UL: {
58 0 0         PDL_DECLARE_PARAMS_corr_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 corr_table:" "too few N");}
60 0           } break;
61 0           case PDL_IND: {
62 0 0         PDL_DECLARE_PARAMS_corr_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 corr_table:" "too few N");}
64 0           } break;
65 0           case PDL_ULL: {
66 0 0         PDL_DECLARE_PARAMS_corr_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 corr_table:" "too few N");}
68 0           } break;
69 0           case PDL_LL: {
70 0 0         PDL_DECLARE_PARAMS_corr_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 corr_table:" "too few N");}
72 0           } break;
73 0           case PDL_F: {
74 0 0         PDL_DECLARE_PARAMS_corr_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 corr_table:" "too few N");}
76 0           } break;
77 4           case PDL_D: {
78 4 50         PDL_DECLARE_PARAMS_corr_table_0(PDL_Double,D)
    50          
    50          
    50          
79 4 50         {if (__privtrans->ind_sizes[1] < 2) return PDL->make_error(PDL_EUSERERROR, "Error in corr_table:" "too few N");}
80 4           } break;
81 0           case PDL_LD: {
82 0 0         PDL_DECLARE_PARAMS_corr_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 corr_table:" "too few N");}
84 0           } break;
85 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in corr_table: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
86             }
87             #undef PDL_IF_BAD
88              
89 4 50         PDL_RETERROR(PDL_err, PDL->redodims_default(__privtrans));
90 4           return PDL_err;
91             }
92              
93              
94             #line 1857 "lib/PDL/PP.pm"
95             pdl_error pdl_corr_table_readdata(pdl_trans *__privtrans) {
96             pdl_error PDL_err = {0, NULL, 0};
97             #line 98 "lib/PDL/Stats/Basic-pp-corr_table.c"
98 4           register PDL_Indx __n_size = __privtrans->ind_sizes[1];
99 4 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in corr_table:" "broadcast.incs NULL");
100             /* broadcastloop declarations */
101             int __brcloopval;
102             register PDL_Indx __tind0,__tind1; /* counters along dim */
103 4           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
104             /* dims here are how many steps along those dims */
105 4           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
106 4           register PDL_Indx __tinc0_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
107 4           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
108 4           register PDL_Indx __tinc1_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
109             #define PDL_BROADCASTLOOP_START_corr_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_corr_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 4           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 4           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_corr_table_1
131             #define PDL_DECLARE_PARAMS_corr_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 4 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_corr_table_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
141 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
142             PDL_SByte a_, b_;
143             PDL_SByte ab, sa, sb, a2, b2, cov, va, vb, r;
144 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
145 0 0         for (i=0; i
146 0 0         for (j=i+1; j
147 0           ab=0; sa=0; sb=0; a2=0; b2=0;
148 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
149 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
150 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          
151 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
152 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
153 0           ab += a_ * b_;
154 0           a2 += a_ * a_;
155 0           b2 += b_ * b_;
156             }} /* Close n */
157 0 0         if (N < 2) {
158 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
159 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
160 0           continue;
161             }
162 0           cov = ab - (sa * sb) / N;
163 0           va = a2 - sa*sa / N;
164 0           vb = b2 - sb*sb / N;
165 0           r = cov / sqrt( va * vb );
166 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
167 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
168             }
169 0 0         PDL_IF_BAD(PDL_Indx N = 0;
    0          
    0          
    0          
    0          
170             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
171             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,A,a_badval_isnan))
172             N ++;
173             if (N > 1)
174             break;
175             }} /* Close n */
176             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
177 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
178             }
179 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
180 0           } break;
181 0           case PDL_B: {
182 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
183 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
184             PDL_Byte a_, b_;
185             PDL_Byte ab, sa, sb, a2, b2, cov, va, vb, r;
186 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
187 0 0         for (i=0; i
188 0 0         for (j=i+1; j
189 0           ab=0; sa=0; sb=0; a2=0; b2=0;
190 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
191 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
192 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          
193 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
194 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
195 0           ab += a_ * b_;
196 0           a2 += a_ * a_;
197 0           b2 += b_ * b_;
198             }} /* Close n */
199 0 0         if (N < 2) {
200 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
201 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
202 0           continue;
203             }
204 0           cov = ab - (sa * sb) / N;
205 0           va = a2 - sa*sa / N;
206 0           vb = b2 - sb*sb / N;
207 0           r = cov / sqrt( va * vb );
208 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
209 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
210             }
211 0 0         PDL_IF_BAD(PDL_Indx N = 0;
    0          
    0          
    0          
    0          
212             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
213             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,B,a_badval_isnan))
214             N ++;
215             if (N > 1)
216             break;
217             }} /* Close n */
218             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
219 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
220             }
221 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
222 0           } break;
223 0           case PDL_S: {
224 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
225 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
226             PDL_Short a_, b_;
227             PDL_Short ab, sa, sb, a2, b2, cov, va, vb, r;
228 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
229 0 0         for (i=0; i
230 0 0         for (j=i+1; j
231 0           ab=0; sa=0; sb=0; a2=0; b2=0;
232 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
233 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
234 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          
235 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
236 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
237 0           ab += a_ * b_;
238 0           a2 += a_ * a_;
239 0           b2 += b_ * b_;
240             }} /* Close n */
241 0 0         if (N < 2) {
242 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
243 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
244 0           continue;
245             }
246 0           cov = ab - (sa * sb) / N;
247 0           va = a2 - sa*sa / N;
248 0           vb = b2 - sb*sb / N;
249 0           r = cov / sqrt( va * vb );
250 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
251 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
252             }
253 0 0         PDL_IF_BAD(PDL_Indx N = 0;
    0          
    0          
    0          
    0          
254             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
255             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,S,a_badval_isnan))
256             N ++;
257             if (N > 1)
258             break;
259             }} /* Close n */
260             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
261 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
262             }
263 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
264 0           } break;
265 0           case PDL_US: {
266 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
267 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
268             PDL_Ushort a_, b_;
269             PDL_Ushort ab, sa, sb, a2, b2, cov, va, vb, r;
270 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
271 0 0         for (i=0; i
272 0 0         for (j=i+1; j
273 0           ab=0; sa=0; sb=0; a2=0; b2=0;
274 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
275 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
276 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          
277 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
278 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
279 0           ab += a_ * b_;
280 0           a2 += a_ * a_;
281 0           b2 += b_ * b_;
282             }} /* Close n */
283 0 0         if (N < 2) {
284 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
285 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
286 0           continue;
287             }
288 0           cov = ab - (sa * sb) / N;
289 0           va = a2 - sa*sa / N;
290 0           vb = b2 - sb*sb / N;
291 0           r = cov / sqrt( va * vb );
292 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
293 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
294             }
295 0 0         PDL_IF_BAD(PDL_Indx N = 0;
    0          
    0          
    0          
    0          
296             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
297             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,U,a_badval_isnan))
298             N ++;
299             if (N > 1)
300             break;
301             }} /* Close n */
302             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
303 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
304             }
305 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
306 0           } break;
307 0           case PDL_L: {
308 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
309 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
310             PDL_Long a_, b_;
311             PDL_Long ab, sa, sb, a2, b2, cov, va, vb, r;
312 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
313 0 0         for (i=0; i
314 0 0         for (j=i+1; j
315 0           ab=0; sa=0; sb=0; a2=0; b2=0;
316 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
317 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
318 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          
319 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
320 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
321 0           ab += a_ * b_;
322 0           a2 += a_ * a_;
323 0           b2 += b_ * b_;
324             }} /* Close n */
325 0 0         if (N < 2) {
326 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
327 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
328 0           continue;
329             }
330 0           cov = ab - (sa * sb) / N;
331 0           va = a2 - sa*sa / N;
332 0           vb = b2 - sb*sb / N;
333 0           r = cov / sqrt( va * vb );
334 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
335 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
336             }
337 0 0         PDL_IF_BAD(PDL_Indx N = 0;
    0          
    0          
    0          
    0          
338             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
339             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,L,a_badval_isnan))
340             N ++;
341             if (N > 1)
342             break;
343             }} /* Close n */
344             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
345 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
346             }
347 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
348 0           } break;
349 0           case PDL_UL: {
350 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
351 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
352             PDL_ULong a_, b_;
353             PDL_ULong ab, sa, sb, a2, b2, cov, va, vb, r;
354 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
355 0 0         for (i=0; i
356 0 0         for (j=i+1; j
357 0           ab=0; sa=0; sb=0; a2=0; b2=0;
358 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
359 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
360 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          
361 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
362 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
363 0           ab += a_ * b_;
364 0           a2 += a_ * a_;
365 0           b2 += b_ * b_;
366             }} /* Close n */
367 0 0         if (N < 2) {
368 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
369 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
370 0           continue;
371             }
372 0           cov = ab - (sa * sb) / N;
373 0           va = a2 - sa*sa / N;
374 0           vb = b2 - sb*sb / N;
375 0           r = cov / sqrt( va * vb );
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))] = r;
378             }
379 0 0         PDL_IF_BAD(PDL_Indx N = 0;
    0          
    0          
    0          
    0          
380             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
381             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,K,a_badval_isnan))
382             N ++;
383             if (N > 1)
384             break;
385             }} /* Close n */
386             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
387 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
388             }
389 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
390 0           } break;
391 0           case PDL_IND: {
392 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
393 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
394             PDL_Indx a_, b_;
395             PDL_Indx ab, sa, sb, a2, b2, cov, va, vb, r;
396 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
397 0 0         for (i=0; i
398 0 0         for (j=i+1; j
399 0           ab=0; sa=0; sb=0; a2=0; b2=0;
400 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
401 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
402 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          
403 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
404 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
405 0           ab += a_ * b_;
406 0           a2 += a_ * a_;
407 0           b2 += b_ * b_;
408             }} /* Close n */
409 0 0         if (N < 2) {
410 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
411 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
412 0           continue;
413             }
414 0           cov = ab - (sa * sb) / N;
415 0           va = a2 - sa*sa / N;
416 0           vb = b2 - sb*sb / N;
417 0           r = cov / sqrt( va * vb );
418 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
419 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
420             }
421 0 0         PDL_IF_BAD(PDL_Indx N = 0;
    0          
    0          
    0          
    0          
422             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
423             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,N,a_badval_isnan))
424             N ++;
425             if (N > 1)
426             break;
427             }} /* Close n */
428             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
429 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
430             }
431 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
432 0           } break;
433 0           case PDL_ULL: {
434 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
435 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
436             PDL_ULongLong a_, b_;
437             PDL_ULongLong ab, sa, sb, a2, b2, cov, va, vb, r;
438 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
439 0 0         for (i=0; i
440 0 0         for (j=i+1; j
441 0           ab=0; sa=0; sb=0; a2=0; b2=0;
442 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
443 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
444 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          
445 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
446 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
447 0           ab += a_ * b_;
448 0           a2 += a_ * a_;
449 0           b2 += b_ * 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           cov = ab - (sa * sb) / N;
457 0           va = a2 - sa*sa / N;
458 0           vb = b2 - sb*sb / N;
459 0           r = cov / sqrt( va * vb );
460 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
461 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
462             }
463 0 0         PDL_IF_BAD(PDL_Indx N = 0;
    0          
    0          
    0          
    0          
464             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
465             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,P,a_badval_isnan))
466             N ++;
467             if (N > 1)
468             break;
469             }} /* Close n */
470             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
471 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
472             }
473 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
474 0           } break;
475 0           case PDL_LL: {
476 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
477 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
478             PDL_LongLong a_, b_;
479             PDL_LongLong ab, sa, sb, a2, b2, cov, va, vb, r;
480 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
481 0 0         for (i=0; i
482 0 0         for (j=i+1; j
483 0           ab=0; sa=0; sb=0; a2=0; b2=0;
484 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
485 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
486 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          
487 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
488 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
489 0           ab += a_ * b_;
490 0           a2 += a_ * a_;
491 0           b2 += b_ * b_;
492             }} /* Close n */
493 0 0         if (N < 2) {
494 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
495 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
496 0           continue;
497             }
498 0           cov = ab - (sa * sb) / N;
499 0           va = a2 - sa*sa / N;
500 0           vb = b2 - sb*sb / N;
501 0           r = cov / sqrt( va * vb );
502 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
503 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
504             }
505 0 0         PDL_IF_BAD(PDL_Indx N = 0;
    0          
    0          
    0          
    0          
506             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
507             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,Q,a_badval_isnan))
508             N ++;
509             if (N > 1)
510             break;
511             }} /* Close n */
512             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
513 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
514             }
515 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
516 0           } break;
517 0           case PDL_F: {
518 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
519 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
520             PDL_Float a_, b_;
521             PDL_Float ab, sa, sb, a2, b2, cov, va, vb, r;
522 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
523 0 0         for (i=0; i
524 0 0         for (j=i+1; j
525 0           ab=0; sa=0; sb=0; a2=0; b2=0;
526 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
527 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
528 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          
529 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
530 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
531 0           ab += a_ * b_;
532 0           a2 += a_ * a_;
533 0           b2 += b_ * b_;
534             }} /* Close n */
535 0 0         if (N < 2) {
536 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
537 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
538 0           continue;
539             }
540 0           cov = ab - (sa * sb) / N;
541 0           va = a2 - sa*sa / N;
542 0           vb = b2 - sb*sb / N;
543 0           r = cov / sqrt( va * vb );
544 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
545 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
546             }
547 0 0         PDL_IF_BAD(PDL_Indx N = 0;
    0          
    0          
    0          
    0          
548             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
549             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,F,a_badval_isnan))
550             N ++;
551             if (N > 1)
552             break;
553             }} /* Close n */
554             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
555 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
556             }
557 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
558 0           } break;
559 1           case PDL_D: {
560 1 50         PDL_DECLARE_PARAMS_corr_table_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
561 4 50         PDL_BROADCASTLOOP_START_corr_table_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
562             PDL_Double a_, b_;
563             PDL_Double ab, sa, sb, a2, b2, cov, va, vb, r;
564 1           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
565 4 100         for (i=0; i
566 6 100         for (j=i+1; j
567 3           ab=0; sa=0; sb=0; a2=0; b2=0;
568 3           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
569 33 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
570 30 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          
571 28           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
572 28           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
573 28           ab += a_ * b_;
574 28           a2 += a_ * a_;
575 28           b2 += b_ * b_;
576             }} /* Close n */
577 3 50         if (N < 2) {
578 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
579 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
580 0           continue;
581             }
582 3           cov = ab - (sa * sb) / N;
583 3           va = a2 - sa*sa / N;
584 3           vb = b2 - sb*sb / N;
585 3           r = cov / sqrt( va * vb );
586 3           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
587 3           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
588             }
589 6 50         PDL_IF_BAD(PDL_Indx N = 0;
    50          
    100          
    50          
    50          
590             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
591             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,D,a_badval_isnan))
592             N ++;
593             if (N > 1)
594             break;
595             }} /* Close n */
596             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
597 3           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
598             }
599 1 50         }PDL_BROADCASTLOOP_END_corr_table_readdata
    50          
600 1           } break;
601 0           case PDL_LD: {
602 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
603 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
604             PDL_LDouble a_, b_;
605             PDL_LDouble ab, sa, sb, a2, b2, cov, va, vb, r;
606 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
607 0 0         for (i=0; i
608 0 0         for (j=i+1; j
609 0           ab=0; sa=0; sb=0; a2=0; b2=0;
610 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
611 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
612 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          
613 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
614 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
615 0           ab += a_ * b_;
616 0           a2 += a_ * a_;
617 0           b2 += b_ * b_;
618             }} /* Close n */
619 0 0         if (N < 2) {
620 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
621 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
622 0           continue;
623             }
624 0           cov = ab - (sa * sb) / N;
625 0           va = a2 - sa*sa / N;
626 0           vb = b2 - sb*sb / N;
627 0           r = cov / sqrt( va * vb );
628 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
629 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
630             }
631 0 0         PDL_IF_BAD(PDL_Indx N = 0;
    0          
    0          
    0          
    0          
632             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
633             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,E,a_badval_isnan))
634             N ++;
635             if (N > 1)
636             break;
637             }} /* Close n */
638             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
639 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
640             }
641 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
642 0           } break;
643 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in corr_table: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
644             }
645             #undef PDL_BAD_CODE
646             #undef PDL_IF_BAD
647             } else { /* ** else do 'good' Code ** */
648             #define PDL_IF_BAD(t,f) f
649 3           switch (__privtrans->__datatype) { /* Start generic switch */
650 0           case PDL_SB: {
651 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
652 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
653             PDL_SByte a_, b_;
654             PDL_SByte ab, sa, sb, a2, b2, cov, va, vb, r;
655 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
656 0 0         for (i=0; i
657 0 0         for (j=i+1; j
658 0           ab=0; sa=0; sb=0; a2=0; b2=0;
659 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
660 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
661             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++;,)
662 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
663 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
664 0           ab += a_ * b_;
665 0           a2 += a_ * a_;
666 0           b2 += b_ * b_;
667             }} /* Close n */
668 0 0         if (N < 2) {
669 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
670 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
671 0           continue;
672             }
673 0           cov = ab - (sa * sb) / N;
674 0           va = a2 - sa*sa / N;
675 0           vb = b2 - sb*sb / N;
676 0           r = cov / sqrt( va * vb );
677 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
678 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
679             }
680             PDL_IF_BAD(PDL_Indx N = 0;
681             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
682             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,A,a_badval_isnan))
683             N ++;
684             if (N > 1)
685             break;
686             }} /* Close n */
687             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
688 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
689             }
690 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
691 0           } break;
692 0           case PDL_B: {
693 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
694 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
695             PDL_Byte a_, b_;
696             PDL_Byte ab, sa, sb, a2, b2, cov, va, vb, r;
697 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
698 0 0         for (i=0; i
699 0 0         for (j=i+1; j
700 0           ab=0; sa=0; sb=0; a2=0; b2=0;
701 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
702 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
703             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++;,)
704 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
705 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
706 0           ab += a_ * b_;
707 0           a2 += a_ * a_;
708 0           b2 += b_ * b_;
709             }} /* Close n */
710 0 0         if (N < 2) {
711 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
712 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
713 0           continue;
714             }
715 0           cov = ab - (sa * sb) / N;
716 0           va = a2 - sa*sa / N;
717 0           vb = b2 - sb*sb / N;
718 0           r = cov / sqrt( va * vb );
719 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
720 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
721             }
722             PDL_IF_BAD(PDL_Indx N = 0;
723             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
724             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,B,a_badval_isnan))
725             N ++;
726             if (N > 1)
727             break;
728             }} /* Close n */
729             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
730 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
731             }
732 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
733 0           } break;
734 0           case PDL_S: {
735 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
736 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
737             PDL_Short a_, b_;
738             PDL_Short ab, sa, sb, a2, b2, cov, va, vb, r;
739 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
740 0 0         for (i=0; i
741 0 0         for (j=i+1; j
742 0           ab=0; sa=0; sb=0; a2=0; b2=0;
743 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
744 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
745             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++;,)
746 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
747 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
748 0           ab += a_ * b_;
749 0           a2 += a_ * a_;
750 0           b2 += b_ * b_;
751             }} /* Close n */
752 0 0         if (N < 2) {
753 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
754 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
755 0           continue;
756             }
757 0           cov = ab - (sa * sb) / N;
758 0           va = a2 - sa*sa / N;
759 0           vb = b2 - sb*sb / N;
760 0           r = cov / sqrt( va * vb );
761 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
762 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
763             }
764             PDL_IF_BAD(PDL_Indx N = 0;
765             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
766             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,S,a_badval_isnan))
767             N ++;
768             if (N > 1)
769             break;
770             }} /* Close n */
771             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
772 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
773             }
774 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
775 0           } break;
776 0           case PDL_US: {
777 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
778 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
779             PDL_Ushort a_, b_;
780             PDL_Ushort ab, sa, sb, a2, b2, cov, va, vb, r;
781 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
782 0 0         for (i=0; i
783 0 0         for (j=i+1; j
784 0           ab=0; sa=0; sb=0; a2=0; b2=0;
785 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
786 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
787             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++;,)
788 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
789 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
790 0           ab += a_ * b_;
791 0           a2 += a_ * a_;
792 0           b2 += b_ * b_;
793             }} /* Close n */
794 0 0         if (N < 2) {
795 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
796 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
797 0           continue;
798             }
799 0           cov = ab - (sa * sb) / N;
800 0           va = a2 - sa*sa / N;
801 0           vb = b2 - sb*sb / N;
802 0           r = cov / sqrt( va * vb );
803 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
804 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
805             }
806             PDL_IF_BAD(PDL_Indx N = 0;
807             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
808             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,U,a_badval_isnan))
809             N ++;
810             if (N > 1)
811             break;
812             }} /* Close n */
813             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
814 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
815             }
816 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
817 0           } break;
818 0           case PDL_L: {
819 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
820 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
821             PDL_Long a_, b_;
822             PDL_Long ab, sa, sb, a2, b2, cov, va, vb, r;
823 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
824 0 0         for (i=0; i
825 0 0         for (j=i+1; j
826 0           ab=0; sa=0; sb=0; a2=0; b2=0;
827 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
828 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
829             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++;,)
830 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
831 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
832 0           ab += a_ * b_;
833 0           a2 += a_ * a_;
834 0           b2 += b_ * b_;
835             }} /* Close n */
836 0 0         if (N < 2) {
837 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
838 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
839 0           continue;
840             }
841 0           cov = ab - (sa * sb) / N;
842 0           va = a2 - sa*sa / N;
843 0           vb = b2 - sb*sb / N;
844 0           r = cov / sqrt( va * vb );
845 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
846 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
847             }
848             PDL_IF_BAD(PDL_Indx N = 0;
849             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
850             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,L,a_badval_isnan))
851             N ++;
852             if (N > 1)
853             break;
854             }} /* Close n */
855             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
856 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
857             }
858 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
859 0           } break;
860 0           case PDL_UL: {
861 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
862 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
863             PDL_ULong a_, b_;
864             PDL_ULong ab, sa, sb, a2, b2, cov, va, vb, r;
865 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
866 0 0         for (i=0; i
867 0 0         for (j=i+1; j
868 0           ab=0; sa=0; sb=0; a2=0; b2=0;
869 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
870 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
871             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++;,)
872 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
873 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
874 0           ab += a_ * b_;
875 0           a2 += a_ * a_;
876 0           b2 += b_ * b_;
877             }} /* Close n */
878 0 0         if (N < 2) {
879 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
880 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
881 0           continue;
882             }
883 0           cov = ab - (sa * sb) / N;
884 0           va = a2 - sa*sa / N;
885 0           vb = b2 - sb*sb / N;
886 0           r = cov / sqrt( va * vb );
887 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
888 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
889             }
890             PDL_IF_BAD(PDL_Indx N = 0;
891             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
892             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,K,a_badval_isnan))
893             N ++;
894             if (N > 1)
895             break;
896             }} /* Close n */
897             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
898 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
899             }
900 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
901 0           } break;
902 0           case PDL_IND: {
903 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
904 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
905             PDL_Indx a_, b_;
906             PDL_Indx ab, sa, sb, a2, b2, cov, va, vb, r;
907 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
908 0 0         for (i=0; i
909 0 0         for (j=i+1; j
910 0           ab=0; sa=0; sb=0; a2=0; b2=0;
911 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
912 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
913             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++;,)
914 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
915 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
916 0           ab += a_ * b_;
917 0           a2 += a_ * a_;
918 0           b2 += b_ * b_;
919             }} /* Close n */
920 0 0         if (N < 2) {
921 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
922 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
923 0           continue;
924             }
925 0           cov = ab - (sa * sb) / N;
926 0           va = a2 - sa*sa / N;
927 0           vb = b2 - sb*sb / N;
928 0           r = cov / sqrt( va * vb );
929 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
930 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
931             }
932             PDL_IF_BAD(PDL_Indx N = 0;
933             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
934             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,N,a_badval_isnan))
935             N ++;
936             if (N > 1)
937             break;
938             }} /* Close n */
939             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
940 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
941             }
942 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
943 0           } break;
944 0           case PDL_ULL: {
945 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
946 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
947             PDL_ULongLong a_, b_;
948             PDL_ULongLong ab, sa, sb, a2, b2, cov, va, vb, r;
949 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
950 0 0         for (i=0; i
951 0 0         for (j=i+1; j
952 0           ab=0; sa=0; sb=0; a2=0; b2=0;
953 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
954 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
955             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++;,)
956 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
957 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
958 0           ab += a_ * b_;
959 0           a2 += a_ * a_;
960 0           b2 += b_ * b_;
961             }} /* Close n */
962 0 0         if (N < 2) {
963 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
964 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
965 0           continue;
966             }
967 0           cov = ab - (sa * sb) / N;
968 0           va = a2 - sa*sa / N;
969 0           vb = b2 - sb*sb / N;
970 0           r = cov / sqrt( va * vb );
971 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
972 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
973             }
974             PDL_IF_BAD(PDL_Indx N = 0;
975             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
976             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,P,a_badval_isnan))
977             N ++;
978             if (N > 1)
979             break;
980             }} /* Close n */
981             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
982 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
983             }
984 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
985 0           } break;
986 0           case PDL_LL: {
987 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
988 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
989             PDL_LongLong a_, b_;
990             PDL_LongLong ab, sa, sb, a2, b2, cov, va, vb, r;
991 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
992 0 0         for (i=0; i
993 0 0         for (j=i+1; j
994 0           ab=0; sa=0; sb=0; a2=0; b2=0;
995 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
996 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
997             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++;,)
998 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
999 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
1000 0           ab += a_ * b_;
1001 0           a2 += a_ * a_;
1002 0           b2 += b_ * b_;
1003             }} /* Close n */
1004 0 0         if (N < 2) {
1005 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
1006 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
1007 0           continue;
1008             }
1009 0           cov = ab - (sa * sb) / N;
1010 0           va = a2 - sa*sa / N;
1011 0           vb = b2 - sb*sb / N;
1012 0           r = cov / sqrt( va * vb );
1013 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
1014 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
1015             }
1016             PDL_IF_BAD(PDL_Indx N = 0;
1017             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1018             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,Q,a_badval_isnan))
1019             N ++;
1020             if (N > 1)
1021             break;
1022             }} /* Close n */
1023             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
1024 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
1025             }
1026 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
1027 0           } break;
1028 0           case PDL_F: {
1029 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1030 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1031             PDL_Float a_, b_;
1032             PDL_Float ab, sa, sb, a2, b2, cov, va, vb, r;
1033 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
1034 0 0         for (i=0; i
1035 0 0         for (j=i+1; j
1036 0           ab=0; sa=0; sb=0; a2=0; b2=0;
1037 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
1038 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1039             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++;,)
1040 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
1041 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
1042 0           ab += a_ * b_;
1043 0           a2 += a_ * a_;
1044 0           b2 += b_ * b_;
1045             }} /* Close n */
1046 0 0         if (N < 2) {
1047 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
1048 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
1049 0           continue;
1050             }
1051 0           cov = ab - (sa * sb) / N;
1052 0           va = a2 - sa*sa / N;
1053 0           vb = b2 - sb*sb / N;
1054 0           r = cov / sqrt( va * vb );
1055 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
1056 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
1057             }
1058             PDL_IF_BAD(PDL_Indx N = 0;
1059             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1060             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,F,a_badval_isnan))
1061             N ++;
1062             if (N > 1)
1063             break;
1064             }} /* Close n */
1065             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
1066 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
1067             }
1068 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
1069 0           } break;
1070 3           case PDL_D: {
1071 3 50         PDL_DECLARE_PARAMS_corr_table_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
1072 12 50         PDL_BROADCASTLOOP_START_corr_table_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
1073             PDL_Double a_, b_;
1074             PDL_Double ab, sa, sb, a2, b2, cov, va, vb, r;
1075 3           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
1076 14 100         for (i=0; i
1077 27 100         for (j=i+1; j
1078 16           ab=0; sa=0; sb=0; a2=0; b2=0;
1079 16           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
1080 161 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1081             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++;,)
1082 145           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
1083 145           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
1084 145           ab += a_ * b_;
1085 145           a2 += a_ * a_;
1086 145           b2 += b_ * b_;
1087             }} /* Close n */
1088 16 50         if (N < 2) {
1089 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
1090 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
1091 0           continue;
1092             }
1093 16           cov = ab - (sa * sb) / N;
1094 16           va = a2 - sa*sa / N;
1095 16           vb = b2 - sb*sb / N;
1096 16           r = cov / sqrt( va * vb );
1097 16           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
1098 16           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
1099             }
1100             PDL_IF_BAD(PDL_Indx N = 0;
1101             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1102             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,D,a_badval_isnan))
1103             N ++;
1104             if (N > 1)
1105             break;
1106             }} /* Close n */
1107             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
1108 11           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
1109             }
1110 3 50         }PDL_BROADCASTLOOP_END_corr_table_readdata
    50          
1111 3           } break;
1112 0           case PDL_LD: {
1113 0 0         PDL_DECLARE_PARAMS_corr_table_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1114 0 0         PDL_BROADCASTLOOP_START_corr_table_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1115             PDL_LDouble a_, b_;
1116             PDL_LDouble ab, sa, sb, a2, b2, cov, va, vb, r;
1117 0           PDL_Indx M = __privtrans->ind_sizes[0], i, j;
1118 0 0         for (i=0; i
1119 0 0         for (j=i+1; j
1120 0           ab=0; sa=0; sb=0; a2=0; b2=0;
1121 0           PDL_Indx N = PDL_IF_BAD(0,__privtrans->ind_sizes[1]);
1122 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1123             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++;,)
1124 0           sa += a_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))];
1125 0           sb += b_ = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(j))];
1126 0           ab += a_ * b_;
1127 0           a2 += a_ * a_;
1128 0           b2 += b_ * b_;
1129             }} /* Close n */
1130 0 0         if (N < 2) {
1131 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))]=c_badval;
1132 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))]=c_badval;
1133 0           continue;
1134             }
1135 0           cov = ab - (sa * sb) / N;
1136 0           va = a2 - sa*sa / N;
1137 0           vb = b2 - sb*sb / N;
1138 0           r = cov / sqrt( va * vb );
1139 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(j))] =
1140 0           (c_datap)[0+(__inc_c_m0*(j))+(__inc_c_m1*(i))] = r;
1141             }
1142             PDL_IF_BAD(PDL_Indx N = 0;
1143             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1144             if (!PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(i))],a_badval,E,a_badval_isnan))
1145             N ++;
1146             if (N > 1)
1147             break;
1148             }} /* Close n */
1149             if (N < 2) { (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))]=c_badval; continue; },)
1150 0           (c_datap)[0+(__inc_c_m0*(i))+(__inc_c_m1*(i))] = 1.0;
1151             }
1152 0 0         }PDL_BROADCASTLOOP_END_corr_table_readdata
    0          
1153 0           } break;
1154 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in corr_table: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
1155             }
1156             #undef PDL_IF_BAD
1157             }
1158 4           return PDL_err;
1159             }
1160              
1161             static pdl_datatypes pdl_corr_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 };
1162             static PDL_Indx pdl_corr_table_vtable_realdims[] = { 2, 2 };
1163             static char *pdl_corr_table_vtable_parnames[] = { "a","c" };
1164             static short pdl_corr_table_vtable_parflags[] = {
1165             0,
1166             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
1167             };
1168             static pdl_datatypes pdl_corr_table_vtable_partypes[] = { -1, -1 };
1169             static PDL_Indx pdl_corr_table_vtable_realdims_starts[] = { 0, 2 };
1170             static PDL_Indx pdl_corr_table_vtable_realdims_ind_ids[] = { 1, 0, 0, 0 };
1171             static char *pdl_corr_table_vtable_indnames[] = { "m","n" };
1172             pdl_transvtable pdl_corr_table_vtable = {
1173             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_corr_table_vtable_gentypes, 1, 2, NULL /*CORE21*/,
1174             pdl_corr_table_vtable_realdims, pdl_corr_table_vtable_parnames,
1175             pdl_corr_table_vtable_parflags, pdl_corr_table_vtable_partypes,
1176             pdl_corr_table_vtable_realdims_starts, pdl_corr_table_vtable_realdims_ind_ids, 4,
1177             2, pdl_corr_table_vtable_indnames,
1178             pdl_corr_table_redodims, pdl_corr_table_readdata, NULL,
1179             NULL,
1180             0,"PDL::Stats::Basic::corr_table"
1181             };
1182              
1183              
1184 4           pdl_error pdl_run_corr_table(pdl *a,pdl *c) {
1185 4           pdl_error PDL_err = {0, NULL, 0};
1186 4 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
1187 4           pdl_trans *__privtrans = PDL->create_trans(&pdl_corr_table_vtable);
1188 4 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
1189 4           __privtrans->pdls[0] = a;
1190 4           __privtrans->pdls[1] = c;
1191 4 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
1192 4 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
1193 4           return PDL_err;
1194             }