File Coverage

lib/PDL/Primitive-pp-which.c
Criterion Covered Total %
statement 116 298 38.9
branch 304 1560 19.4
condition n/a
subroutine n/a
pod n/a
total 420 1858 22.6


line stmt bran cond sub pod time code
1              
2             #line 453 "lib/PDL/PP.pm"
3             /*
4             * THIS FILE WAS GENERATED BY PDL::PP from lib/PDL/Primitive.pd! Do not modify!
5             */
6              
7             #define PDL_FREE_CODE(trans, destroy, comp_free_code, ntpriv_free_code) \
8             if (destroy) { \
9             comp_free_code \
10             } \
11             if ((trans)->dims_redone) { \
12             ntpriv_free_code \
13             }
14              
15             #include "EXTERN.h"
16             #include "perl.h"
17             #include "XSUB.h"
18             #include "pdl.h"
19             #include "pdlcore.h"
20             #define PDL PDL_Primitive
21             extern Core* PDL; /* Structure hold core C functions */
22             #line 23 "lib/PDL/Primitive-pp-which.c"
23             extern int pdl_srand_threads;
24             extern uint64_t *pdl_rand_state;
25             void pdl_srand(uint64_t **s, uint64_t seed, int n);
26             double pdl_drand(uint64_t *s);
27             #define PDL_MAYBE_SRAND \
28             if (pdl_srand_threads < 0) \
29             pdl_srand(&pdl_rand_state, PDL->pdl_seed(), PDL->online_cpus());
30             #define PDL_RAND_SET_OFFSET(v, thr, pdl) \
31             if (v < 0) { \
32             if (thr.mag_nthr >= 0) { \
33             int thr_no = PDL->magic_get_thread(pdl); \
34             if (thr_no < 0) return PDL->make_error_simple(PDL_EFATAL, "Invalid pdl_magic_get_thread!"); \
35             v = thr_no == 0 ? thr_no : thr_no % PDL->online_cpus(); \
36             } else { \
37             v = 0; \
38             } \
39             }
40              
41             #line 1857 "lib/PDL/PP.pm"
42             pdl_error pdl_which_readdata(pdl_trans *__privtrans) {
43             pdl_error PDL_err = {0, NULL, 0};
44             #line 45 "lib/PDL/Primitive-pp-which.c"
45 523           register PDL_Indx __n_size = __privtrans->ind_sizes[0];
46 523 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in which:" "broadcast.incs NULL");
47             /* broadcastloop declarations */
48             int __brcloopval;
49             register PDL_Indx __tind0,__tind1; /* counters along dim */
50 523           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
51             /* dims here are how many steps along those dims */
52 523           register PDL_Indx __tinc0_mask = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
53 523           register PDL_Indx __tinc0_inds = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
54 523           register PDL_Indx __tinc0_lastout = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
55 523           register PDL_Indx __tinc1_mask = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
56 523           register PDL_Indx __tinc1_inds = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
57 523           register PDL_Indx __tinc1_lastout = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
58             #define PDL_BROADCASTLOOP_START_which_readdata PDL_BROADCASTLOOP_START( \
59             readdata, \
60             __privtrans->broadcast, \
61             __privtrans->vtable, \
62             mask_datap += __offsp[0]; \
63             inds_datap += __offsp[1]; \
64             lastout_datap += __offsp[2]; \
65             , \
66             ( ,mask_datap += __tinc1_mask - __tinc0_mask * __tdims0 \
67             ,inds_datap += __tinc1_inds - __tinc0_inds * __tdims0 \
68             ,lastout_datap += __tinc1_lastout - __tinc0_lastout * __tdims0 \
69             ), \
70             ( ,mask_datap += __tinc0_mask \
71             ,inds_datap += __tinc0_inds \
72             ,lastout_datap += __tinc0_lastout \
73             ) \
74             )
75             #define PDL_BROADCASTLOOP_END_which_readdata PDL_BROADCASTLOOP_END( \
76             __privtrans->broadcast, \
77             mask_datap -= __tinc1_mask * __tdims1 + __offsp[0]; \
78             inds_datap -= __tinc1_inds * __tdims1 + __offsp[1]; \
79             lastout_datap -= __tinc1_lastout * __tdims1 + __offsp[2]; \
80             )
81 523           register PDL_Indx __inc_inds_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_inds_n;
82 523           register PDL_Indx __inc_mask_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_mask_n;
83             #ifndef PDL_DECLARE_PARAMS_which_1
84             #define PDL_DECLARE_PARAMS_which_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_inds,PDL_PPSYM_PARAM_inds,PDL_TYPE_PARAM_lastout,PDL_PPSYM_PARAM_lastout) \
85             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, mask, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
86             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_inds, inds, (__privtrans->pdls[1]), 1, PDL_PPSYM_PARAM_inds) \
87             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_lastout, lastout, (__privtrans->pdls[2]), 1, PDL_PPSYM_PARAM_lastout)
88             #endif
89 523 100         if ( __privtrans->bvalflag ) { /* ** do 'bad' Code ** */
90             #define PDL_BAD_CODE
91             #define PDL_IF_BAD(t,f) t
92 10           switch (__privtrans->__datatype) { /* Start generic switch */
93 1           case PDL_SB: {
94 1 50         PDL_DECLARE_PARAMS_which_1(PDL_SByte,A,PDL_Indx,N,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
95 4 50         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    50          
    50          
    50          
    50          
    100          
    100          
96 7 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
97 6 100         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,A,mask_badval_isnan),) ) {
    50          
    50          
98 2           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
99 2           dm++;
100             }
101 6 100         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    50          
    50          
102 1           } break;
103 0           case PDL_B: {
104 0 0         PDL_DECLARE_PARAMS_which_1(PDL_Byte,B,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
105 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
106 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
107 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,B,mask_badval_isnan),) ) {
    0          
    0          
108 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
109 0           dm++;
110             }
111 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
112 0           } break;
113 0           case PDL_S: {
114 0 0         PDL_DECLARE_PARAMS_which_1(PDL_Short,S,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
115 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
116 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
117 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,S,mask_badval_isnan),) ) {
    0          
    0          
118 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
119 0           dm++;
120             }
121 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
122 0           } break;
123 0           case PDL_US: {
124 0 0         PDL_DECLARE_PARAMS_which_1(PDL_Ushort,U,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
125 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
126 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
127 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,U,mask_badval_isnan),) ) {
    0          
    0          
128 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
129 0           dm++;
130             }
131 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
132 0           } break;
133 4           case PDL_L: {
134 4 50         PDL_DECLARE_PARAMS_which_1(PDL_Long,L,PDL_Indx,N,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
135 16 50         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    50          
    50          
    50          
    50          
    100          
    100          
136 44 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
137 40 100         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,L,mask_badval_isnan),) ) {
    50          
    50          
138 36           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
139 36           dm++;
140             }
141 12 100         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    50          
    50          
142 4           } break;
143 0           case PDL_UL: {
144 0 0         PDL_DECLARE_PARAMS_which_1(PDL_ULong,K,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
145 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
146 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
147 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,K,mask_badval_isnan),) ) {
    0          
    0          
148 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
149 0           dm++;
150             }
151 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
152 0           } break;
153 0           case PDL_IND: {
154 0 0         PDL_DECLARE_PARAMS_which_1(PDL_Indx,N,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
155 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
156 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
157 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,N,mask_badval_isnan),) ) {
    0          
    0          
158 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
159 0           dm++;
160             }
161 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
162 0           } break;
163 0           case PDL_ULL: {
164 0 0         PDL_DECLARE_PARAMS_which_1(PDL_ULongLong,P,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
165 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
166 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
167 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,P,mask_badval_isnan),) ) {
    0          
    0          
168 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
169 0           dm++;
170             }
171 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
172 0           } break;
173 0           case PDL_LL: {
174 0 0         PDL_DECLARE_PARAMS_which_1(PDL_LongLong,Q,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
175 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
176 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
177 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,Q,mask_badval_isnan),) ) {
    0          
    0          
178 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
179 0           dm++;
180             }
181 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
182 0           } break;
183 0           case PDL_F: {
184 0 0         PDL_DECLARE_PARAMS_which_1(PDL_Float,F,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
185 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
186 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
187 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,F,mask_badval_isnan),) ) {
    0          
    0          
188 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
189 0           dm++;
190             }
191 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
192 0           } break;
193 5           case PDL_D: {
194 5 50         PDL_DECLARE_PARAMS_which_1(PDL_Double,D,PDL_Indx,N,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
195 20 50         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    50          
    50          
    50          
    50          
    100          
    100          
196 158 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
197 153 100         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,D,mask_badval_isnan),) ) {
    50          
    100          
198 6           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
199 6           dm++;
200             }
201 157 100         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    50          
    50          
202 5           } break;
203 0           case PDL_LD: {
204 0 0         PDL_DECLARE_PARAMS_which_1(PDL_LDouble,E,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
205 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
206 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
207 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,E,mask_badval_isnan),) ) {
    0          
    0          
208 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
209 0           dm++;
210             }
211 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
212 0           } break;
213 0           case PDL_CF: {
214 0 0         PDL_DECLARE_PARAMS_which_1(PDL_CFloat,G,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
215 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
216 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
217 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,G,mask_badval_isnan),) ) {
    0          
    0          
    0          
    0          
    0          
218 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
219 0           dm++;
220             }
221 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
222 0           } break;
223 0           case PDL_CD: {
224 0 0         PDL_DECLARE_PARAMS_which_1(PDL_CDouble,C,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
225 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
226 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
227 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,C,mask_badval_isnan),) ) {
    0          
    0          
    0          
    0          
    0          
228 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
229 0           dm++;
230             }
231 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
232 0           } break;
233 0           case PDL_CLD: {
234 0 0         PDL_DECLARE_PARAMS_which_1(PDL_CLDouble,H,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
235 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
236 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
237 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,H,mask_badval_isnan),) ) {
    0          
    0          
    0          
    0          
    0          
238 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
239 0           dm++;
240             }
241 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
242 0           } break;
243 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in which: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
244             }
245             #undef PDL_BAD_CODE
246             #undef PDL_IF_BAD
247             } else { /* ** else do 'good' Code ** */
248             #define PDL_IF_BAD(t,f) f
249 513           switch (__privtrans->__datatype) { /* Start generic switch */
250 6           case PDL_SB: {
251 6 50         PDL_DECLARE_PARAMS_which_1(PDL_SByte,A,PDL_Indx,N,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
252 24 50         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    50          
    50          
    50          
    50          
    100          
    100          
253 39 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
254 33 100         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,A,mask_badval_isnan),) ) {
255 7           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
256 7           dm++;
257             }
258 38 100         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    50          
    50          
259 6           } break;
260 16           case PDL_B: {
261 16 50         PDL_DECLARE_PARAMS_which_1(PDL_Byte,B,PDL_Indx,N,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
262 64 50         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    50          
    50          
    50          
    50          
    100          
    100          
263 152 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
264 136 100         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,B,mask_badval_isnan),) ) {
265 83           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
266 83           dm++;
267             }
268 85 100         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    50          
    50          
269 16           } break;
270 0           case PDL_S: {
271 0 0         PDL_DECLARE_PARAMS_which_1(PDL_Short,S,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
272 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
273 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
274 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,S,mask_badval_isnan),) ) {
275 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
276 0           dm++;
277             }
278 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
279 0           } break;
280 0           case PDL_US: {
281 0 0         PDL_DECLARE_PARAMS_which_1(PDL_Ushort,U,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
282 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
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         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,U,mask_badval_isnan),) ) {
285 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
286 0           dm++;
287             }
288 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
289 0           } break;
290 21           case PDL_L: {
291 21 50         PDL_DECLARE_PARAMS_which_1(PDL_Long,L,PDL_Indx,N,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
292 84 50         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    50          
    50          
    50          
    50          
    100          
    100          
293 4179 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
294 4158 100         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,L,mask_badval_isnan),) ) {
295 665           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
296 665           dm++;
297             }
298 3535 100         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    50          
    50          
299 21           } break;
300 0           case PDL_UL: {
301 0 0         PDL_DECLARE_PARAMS_which_1(PDL_ULong,K,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
302 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
303 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
304 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,K,mask_badval_isnan),) ) {
305 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
306 0           dm++;
307             }
308 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
309 0           } break;
310 147           case PDL_IND: {
311 147 50         PDL_DECLARE_PARAMS_which_1(PDL_Indx,N,PDL_Indx,N,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
312 588 50         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    50          
    50          
    50          
    50          
    100          
    100          
313 23015 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
314 22868 100         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,N,mask_badval_isnan),) ) {
315 14052           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
316 14052           dm++;
317             }
318 9110 100         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    50          
    50          
319 147           } break;
320 0           case PDL_ULL: {
321 0 0         PDL_DECLARE_PARAMS_which_1(PDL_ULongLong,P,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
322 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
323 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
324 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,P,mask_badval_isnan),) ) {
325 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
326 0           dm++;
327             }
328 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
329 0           } break;
330 13           case PDL_LL: {
331 13 50         PDL_DECLARE_PARAMS_which_1(PDL_LongLong,Q,PDL_Indx,N,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
332 52 50         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    50          
    50          
    50          
    50          
    100          
    100          
333 908 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
334 895 100         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,Q,mask_badval_isnan),) ) {
335 32           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
336 32           dm++;
337             }
338 889 100         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    50          
    50          
339 13           } break;
340 18           case PDL_F: {
341 18 50         PDL_DECLARE_PARAMS_which_1(PDL_Float,F,PDL_Indx,N,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
342 72 50         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    50          
    50          
    50          
    50          
    100          
    100          
343 438 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
344 420 100         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,F,mask_badval_isnan),) ) {
345 200           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
346 200           dm++;
347             }
348 256 100         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    50          
    50          
349 18           } break;
350 292           case PDL_D: {
351 292 50         PDL_DECLARE_PARAMS_which_1(PDL_Double,D,PDL_Indx,N,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
352 1170 50         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    50          
    50          
    50          
    50          
    100          
    100          
353 38954 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
354 38660 100         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,D,mask_badval_isnan),) ) {
355 10073           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
356 10073           dm++;
357             }
358 29173 100         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    50          
    50          
359 292           } break;
360 0           case PDL_LD: {
361 0 0         PDL_DECLARE_PARAMS_which_1(PDL_LDouble,E,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
362 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
363 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
364 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,E,mask_badval_isnan),) ) {
365 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
366 0           dm++;
367             }
368 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
369 0           } break;
370 0           case PDL_CF: {
371 0 0         PDL_DECLARE_PARAMS_which_1(PDL_CFloat,G,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
372 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
373 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
374 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,G,mask_badval_isnan),) ) {
    0          
375 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
376 0           dm++;
377             }
378 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
379 0           } break;
380 0           case PDL_CD: {
381 0 0         PDL_DECLARE_PARAMS_which_1(PDL_CDouble,C,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
382 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
383 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
384 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,C,mask_badval_isnan),) ) {
    0          
385 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
386 0           dm++;
387             }
388 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
389 0           } break;
390 0           case PDL_CLD: {
391 0 0         PDL_DECLARE_PARAMS_which_1(PDL_CLDouble,H,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
392 0 0         PDL_BROADCASTLOOP_START_which_readdata {PDL_Indx dm=0;
    0          
    0          
    0          
    0          
    0          
    0          
393 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
394 0 0         if ( (mask_datap)[0+(__inc_mask_n*(n))] PDL_IF_BAD(&& !PDL_ISBAD2((mask_datap)[0+(__inc_mask_n*(n))],mask_badval,H,mask_badval_isnan),) ) {
    0          
395 0           (inds_datap)[0+(__inc_inds_n*(dm))] = n;
396 0           dm++;
397             }
398 0 0         }} /* Close n */(lastout_datap)[0] = dm; {/* Open n=dm */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((dm),0), __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { (inds_datap)[0+(__inc_inds_n*(n))] = -1; }} /* Close n=dm */}PDL_BROADCASTLOOP_END_which_readdata
    0          
    0          
399 0           } break;
400 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in which: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
401             }
402             #undef PDL_IF_BAD
403             }
404 523           return PDL_err;
405             }
406              
407             static pdl_datatypes pdl_which_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, PDL_CF, PDL_CD, PDL_CLD, -1 };
408             static PDL_Indx pdl_which_vtable_realdims[] = { 1, 1, 0 };
409             static char *pdl_which_vtable_parnames[] = { "mask","inds","lastout" };
410             static short pdl_which_vtable_parflags[] = {
411             0,
412             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
413             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
414             };
415             static pdl_datatypes pdl_which_vtable_partypes[] = { -1, PDL_IND, PDL_IND };
416             static PDL_Indx pdl_which_vtable_realdims_starts[] = { 0, 1, 2 };
417             static PDL_Indx pdl_which_vtable_realdims_ind_ids[] = { 0, 0 };
418             static char *pdl_which_vtable_indnames[] = { "n" };
419             pdl_transvtable pdl_which_vtable = {
420             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_which_vtable_gentypes, 1, 3, NULL /*CORE21*/,
421             pdl_which_vtable_realdims, pdl_which_vtable_parnames,
422             pdl_which_vtable_parflags, pdl_which_vtable_partypes,
423             pdl_which_vtable_realdims_starts, pdl_which_vtable_realdims_ind_ids, 2,
424             1, pdl_which_vtable_indnames,
425             NULL, pdl_which_readdata, NULL,
426             NULL,
427             0,"PDL::Primitive::which"
428             };
429              
430              
431 523           pdl_error pdl_run_which(pdl *mask,pdl *inds,pdl *lastout) {
432 523           pdl_error PDL_err = {0, NULL, 0};
433 523 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
434 523           pdl_trans *__privtrans = PDL->create_trans(&pdl_which_vtable);
435 523 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
436 523           __privtrans->pdls[0] = mask;
437 523           __privtrans->pdls[1] = inds;
438 523           __privtrans->pdls[2] = lastout;
439 523 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
440 523 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
441 523           return PDL_err;
442             }