File Coverage

lib/PDL/Ufunc-pp-qsortveci.c
Criterion Covered Total %
statement 42 242 17.3
branch 60 1044 5.7
condition n/a
subroutine n/a
pod n/a
total 102 1286 7.9


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/Ufunc.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_Ufunc
21             extern Core* PDL; /* Structure hold core C functions */
22              
23             #line 781 "lib/PDL/Ufunc.pd"
24             #define X(symbol, ctype, ppsym, ...) \
25             /******* \
26             * qsortvec helper routines \
27             * --CED 21-Aug-2003 \
28             */ \
29             /* Compare a vector in lexicographic order, return equivalent of "<=>". \
30             */ \
31             static inline signed int pdl_cmpvec_ ## ppsym(ctype *a, ctype *b, PDL_Indx n) { \
32             PDL_Indx i; \
33             for(i=0; i
34             if( *a < *b ) return -1; \
35             if( *a > *b ) return 1; \
36             } \
37             return 0; \
38             }
39             PDL_TYPELIST_REAL(X)
40             #undef X
41             #define PDL_QSORTVEC(ppsym, RECURSE, INDEXTERM, swapcode) \
42             PDL_Indx i,j, median_ind; \
43             i = a; \
44             j = b; \
45             median_ind = (i+j)/2; \
46             do { \
47             while( pdl_cmpvec_ ## ppsym( &(xx[n*INDEXTERM(i)]), &(xx[n*INDEXTERM(median_ind)]), n ) < 0 ) \
48             i++; \
49             while( pdl_cmpvec_ ## ppsym( &(xx[n*INDEXTERM(j)]), &(xx[n*INDEXTERM(median_ind)]), n ) > 0 ) \
50             j--; \
51             if(i<=j) { \
52             PDL_Indx k; \
53             swapcode \
54             if (median_ind==i) \
55             median_ind=j; \
56             else if (median_ind==j) \
57             median_ind=i; \
58             i++; \
59             j--; \
60             } \
61             } while (i <= j); \
62             if (a < j) \
63             RECURSE( ppsym, a, j ); \
64             if (i < b) \
65             RECURSE( ppsym, i, b );
66              
67             #line 845 "lib/PDL/Ufunc.pd"
68             #define PDL_QSORTVEC_INDEXTERM(indexterm) ix[indexterm]
69             #define PDL_QSORTVEC_RECURSE(ppsym, ...) pdl_qsortvec_ind_ ## ppsym(xx, ix, n, __VA_ARGS__)
70             #define X(symbol, ctype, ppsym, ...) \
71             static inline void pdl_qsortvec_ind_ ## ppsym(ctype *xx, PDL_Indx *ix, PDL_Indx n, PDL_Indx a, PDL_Indx b) { \
72             PDL_QSORTVEC(ppsym, PDL_QSORTVEC_RECURSE, PDL_QSORTVEC_INDEXTERM, \
73             k = ix[i]; \
74             ix[i] = ix[j]; \
75             ix[j] = k; \
76             ) \
77             }
78             PDL_TYPELIST_REAL(X)
79             #undef X
80             #undef PDL_QSORTVEC_INDEXTERM
81             #undef PDL_QSORTVEC_RECURSE
82              
83             #line 1857 "lib/PDL/PP.pm"
84             pdl_error pdl_qsortveci_readdata(pdl_trans *__privtrans) {
85             pdl_error PDL_err = {0, NULL, 0};
86             #line 87 "lib/PDL/Ufunc-pp-qsortveci.c"
87 7           register PDL_Indx __m_size = __privtrans->ind_sizes[0];
88 7           register PDL_Indx __n_size = __privtrans->ind_sizes[1];
89 7 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in qsortveci:" "broadcast.incs NULL");
90             /* broadcastloop declarations */
91             int __brcloopval;
92             register PDL_Indx __tind0,__tind1; /* counters along dim */
93 7           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
94             /* dims here are how many steps along those dims */
95 7           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
96 7           register PDL_Indx __tinc0_indx = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
97 7           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
98 7           register PDL_Indx __tinc1_indx = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
99             #define PDL_BROADCASTLOOP_START_qsortveci_readdata PDL_BROADCASTLOOP_START( \
100             readdata, \
101             __privtrans->broadcast, \
102             __privtrans->vtable, \
103             a_datap += __offsp[0]; \
104             indx_datap += __offsp[1]; \
105             , \
106             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
107             ,indx_datap += __tinc1_indx - __tinc0_indx * __tdims0 \
108             ), \
109             ( ,a_datap += __tinc0_a \
110             ,indx_datap += __tinc0_indx \
111             ) \
112             )
113             #define PDL_BROADCASTLOOP_END_qsortveci_readdata PDL_BROADCASTLOOP_END( \
114             __privtrans->broadcast, \
115             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
116             indx_datap -= __tinc1_indx * __tdims1 + __offsp[1]; \
117             )
118 7           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;
119 7           register PDL_Indx __inc_indx_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_indx_m;
120             #ifndef PDL_DECLARE_PARAMS_qsortveci_1
121             #define PDL_DECLARE_PARAMS_qsortveci_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_a,PDL_PPSYM_PARAM_a,PDL_TYPE_PARAM_indx,PDL_PPSYM_PARAM_indx) \
122             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_a, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_PARAM_a) \
123             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_indx, indx, (__privtrans->pdls[1]), 1, PDL_PPSYM_PARAM_indx)
124             #endif
125 7 100         if ( __privtrans->bvalflag ) { /* ** do 'bad' Code ** */
126             #define PDL_BAD_CODE
127             #define PDL_IF_BAD(t,f) t
128 2           switch (__privtrans->__datatype) { /* Start generic switch */
129 0           case PDL_SB: {
130 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_SByte,A,PDL_SByte,A,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
131 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
132 0           PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
133 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
134 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
135 0 0         PDL_IF_BAD(
    0          
    0          
    0          
136             char allgood_a = 1;
137             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,A,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
138             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
139             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
140             ,
141             (indx_datap)[0+(__inc_indx_m*(m))]=m;
142             )
143             }} /* Close m */
144 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
145 0 0         pdl_qsortvec_ind_A (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
146 0           } break;
147 0           case PDL_B: {
148 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Byte,B,PDL_Byte,B,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
149 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
150 0           PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
151 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
152 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
153 0 0         PDL_IF_BAD(
    0          
    0          
    0          
154             char allgood_a = 1;
155             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,B,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
156             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
157             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
158             ,
159             (indx_datap)[0+(__inc_indx_m*(m))]=m;
160             )
161             }} /* Close m */
162 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
163 0 0         pdl_qsortvec_ind_B (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
164 0           } break;
165 0           case PDL_S: {
166 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Short,S,PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
167 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
168 0           PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
169 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
170 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
171 0 0         PDL_IF_BAD(
    0          
    0          
    0          
172             char allgood_a = 1;
173             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,S,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
174             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
175             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
176             ,
177             (indx_datap)[0+(__inc_indx_m*(m))]=m;
178             )
179             }} /* Close m */
180 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
181 0 0         pdl_qsortvec_ind_S (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
182 0           } break;
183 0           case PDL_US: {
184 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Ushort,U,PDL_Ushort,U,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
185 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
186 0           PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
187 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
188 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
189 0 0         PDL_IF_BAD(
    0          
    0          
    0          
190             char allgood_a = 1;
191             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,U,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
192             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
193             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
194             ,
195             (indx_datap)[0+(__inc_indx_m*(m))]=m;
196             )
197             }} /* Close m */
198 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
199 0 0         pdl_qsortvec_ind_U (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
200 0           } break;
201 0           case PDL_L: {
202 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Long,L,PDL_Long,L,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
203 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
204 0           PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
205 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
206 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
207 0 0         PDL_IF_BAD(
    0          
    0          
    0          
208             char allgood_a = 1;
209             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,L,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
210             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
211             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
212             ,
213             (indx_datap)[0+(__inc_indx_m*(m))]=m;
214             )
215             }} /* Close m */
216 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
217 0 0         pdl_qsortvec_ind_L (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
218 0           } break;
219 0           case PDL_UL: {
220 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_ULong,K,PDL_ULong,K,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
221 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
222 0           PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
223 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
224 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
225 0 0         PDL_IF_BAD(
    0          
    0          
    0          
226             char allgood_a = 1;
227             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,K,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
228             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
229             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
230             ,
231             (indx_datap)[0+(__inc_indx_m*(m))]=m;
232             )
233             }} /* Close m */
234 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
235 0 0         pdl_qsortvec_ind_K (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
236 0           } break;
237 0           case PDL_IND: {
238 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Indx,N,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
239 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
240 0           PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
241 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
242 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
243 0 0         PDL_IF_BAD(
    0          
    0          
    0          
244             char allgood_a = 1;
245             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,N,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
246             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
247             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
248             ,
249             (indx_datap)[0+(__inc_indx_m*(m))]=m;
250             )
251             }} /* Close m */
252 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
253 0 0         pdl_qsortvec_ind_N (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
254 0           } break;
255 0           case PDL_ULL: {
256 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_ULongLong,P,PDL_ULongLong,P,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
257 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
258 0           PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
259 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
260 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
261 0 0         PDL_IF_BAD(
    0          
    0          
    0          
262             char allgood_a = 1;
263             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,P,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
264             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
265             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
266             ,
267             (indx_datap)[0+(__inc_indx_m*(m))]=m;
268             )
269             }} /* Close m */
270 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
271 0 0         pdl_qsortvec_ind_P (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
272 0           } break;
273 0           case PDL_LL: {
274 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_LongLong,Q,PDL_LongLong,Q,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
275 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
276 0           PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
277 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
278 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
279 0 0         PDL_IF_BAD(
    0          
    0          
    0          
280             char allgood_a = 1;
281             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,Q,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
282             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
283             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
284             ,
285             (indx_datap)[0+(__inc_indx_m*(m))]=m;
286             )
287             }} /* Close m */
288 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
289 0 0         pdl_qsortvec_ind_Q (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
290 0           } break;
291 0           case PDL_F: {
292 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Float,F,PDL_Float,F,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
293 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
294 0           PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
295 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
296 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
297 0 0         PDL_IF_BAD(
    0          
    0          
    0          
298             char allgood_a = 1;
299             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,F,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
300             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
301             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
302             ,
303             (indx_datap)[0+(__inc_indx_m*(m))]=m;
304             )
305             }} /* Close m */
306 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
307 0 0         pdl_qsortvec_ind_F (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
308 0           } break;
309 2           case PDL_D: {
310 2 50         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Double,D,PDL_Double,D,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
311 8 50         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    50          
    50          
    50          
    50          
    100          
    100          
312 2           PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
313 2 50         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
314 12 100         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
315 27 50         PDL_IF_BAD(
    100          
    100          
    100          
316             char allgood_a = 1;
317             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,D,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
318             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
319             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
320             ,
321             (indx_datap)[0+(__inc_indx_m*(m))]=m;
322             )
323             }} /* Close m */
324 2 50         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
325 4 50         pdl_qsortvec_ind_D (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    50          
326 2           } break;
327 0           case PDL_LD: {
328 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_LDouble,E,PDL_LDouble,E,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
329 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
330 0           PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
331 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
332 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
333 0 0         PDL_IF_BAD(
    0          
    0          
    0          
334             char allgood_a = 1;
335             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,E,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
336             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
337             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
338             ,
339             (indx_datap)[0+(__inc_indx_m*(m))]=m;
340             )
341             }} /* Close m */
342 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
343 0 0         pdl_qsortvec_ind_E (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
344 0           } break;
345 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in qsortveci: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
346             }
347             #undef PDL_BAD_CODE
348             #undef PDL_IF_BAD
349             } else { /* ** else do 'good' Code ** */
350             #define PDL_IF_BAD(t,f) f
351 5           switch (__privtrans->__datatype) { /* Start generic switch */
352 0           case PDL_SB: {
353 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_SByte,A,PDL_SByte,A,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
354 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
355             PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
356 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
357 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
358 0           PDL_IF_BAD(
359             char allgood_a = 1;
360             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,A,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
361             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
362             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
363             ,
364             (indx_datap)[0+(__inc_indx_m*(m))]=m;
365             )
366             }} /* Close m */
367             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
368 0 0         pdl_qsortvec_ind_A (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
369 0           } break;
370 0           case PDL_B: {
371 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Byte,B,PDL_Byte,B,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
372 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
373             PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
374 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
375 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
376 0           PDL_IF_BAD(
377             char allgood_a = 1;
378             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,B,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
379             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
380             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
381             ,
382             (indx_datap)[0+(__inc_indx_m*(m))]=m;
383             )
384             }} /* Close m */
385             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
386 0 0         pdl_qsortvec_ind_B (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
387 0           } break;
388 0           case PDL_S: {
389 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Short,S,PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
390 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
391             PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
392 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
393 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
394 0           PDL_IF_BAD(
395             char allgood_a = 1;
396             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,S,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
397             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
398             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
399             ,
400             (indx_datap)[0+(__inc_indx_m*(m))]=m;
401             )
402             }} /* Close m */
403             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
404 0 0         pdl_qsortvec_ind_S (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
405 0           } break;
406 0           case PDL_US: {
407 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Ushort,U,PDL_Ushort,U,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
408 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
409             PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
410 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
411 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
412 0           PDL_IF_BAD(
413             char allgood_a = 1;
414             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,U,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
415             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
416             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
417             ,
418             (indx_datap)[0+(__inc_indx_m*(m))]=m;
419             )
420             }} /* Close m */
421             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
422 0 0         pdl_qsortvec_ind_U (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
423 0           } break;
424 0           case PDL_L: {
425 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Long,L,PDL_Long,L,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
426 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
427             PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
428 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
429 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
430 0           PDL_IF_BAD(
431             char allgood_a = 1;
432             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,L,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
433             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
434             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
435             ,
436             (indx_datap)[0+(__inc_indx_m*(m))]=m;
437             )
438             }} /* Close m */
439             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
440 0 0         pdl_qsortvec_ind_L (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
441 0           } break;
442 0           case PDL_UL: {
443 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_ULong,K,PDL_ULong,K,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
444 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
445             PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
446 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
447 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
448 0           PDL_IF_BAD(
449             char allgood_a = 1;
450             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,K,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
451             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
452             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
453             ,
454             (indx_datap)[0+(__inc_indx_m*(m))]=m;
455             )
456             }} /* Close m */
457             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
458 0 0         pdl_qsortvec_ind_K (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
459 0           } break;
460 0           case PDL_IND: {
461 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Indx,N,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
462 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
463             PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
464 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
465 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
466 0           PDL_IF_BAD(
467             char allgood_a = 1;
468             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,N,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
469             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
470             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
471             ,
472             (indx_datap)[0+(__inc_indx_m*(m))]=m;
473             )
474             }} /* Close m */
475             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
476 0 0         pdl_qsortvec_ind_N (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
477 0           } break;
478 0           case PDL_ULL: {
479 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_ULongLong,P,PDL_ULongLong,P,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
480 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
481             PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
482 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
483 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
484 0           PDL_IF_BAD(
485             char allgood_a = 1;
486             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,P,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
487             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
488             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
489             ,
490             (indx_datap)[0+(__inc_indx_m*(m))]=m;
491             )
492             }} /* Close m */
493             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
494 0 0         pdl_qsortvec_ind_P (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
495 0           } break;
496 0           case PDL_LL: {
497 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_LongLong,Q,PDL_LongLong,Q,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
498 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
499             PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
500 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
501 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
502 0           PDL_IF_BAD(
503             char allgood_a = 1;
504             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,Q,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
505             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
506             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
507             ,
508             (indx_datap)[0+(__inc_indx_m*(m))]=m;
509             )
510             }} /* Close m */
511             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
512 0 0         pdl_qsortvec_ind_Q (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
513 0           } break;
514 0           case PDL_F: {
515 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Float,F,PDL_Float,F,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
516 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
517             PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
518 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
519 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
520 0           PDL_IF_BAD(
521             char allgood_a = 1;
522             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,F,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
523             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
524             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
525             ,
526             (indx_datap)[0+(__inc_indx_m*(m))]=m;
527             )
528             }} /* Close m */
529             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
530 0 0         pdl_qsortvec_ind_F (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
531 0           } break;
532 5           case PDL_D: {
533 5 50         PDL_DECLARE_PARAMS_qsortveci_1(PDL_Double,D,PDL_Double,D,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
534 20 50         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    50          
    50          
    50          
    50          
    100          
    100          
535             PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
536 5 50         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
537 27 100         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
538 22           PDL_IF_BAD(
539             char allgood_a = 1;
540             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,D,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
541             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
542             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
543             ,
544             (indx_datap)[0+(__inc_indx_m*(m))]=m;
545             )
546             }} /* Close m */
547             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
548 10 50         pdl_qsortvec_ind_D (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    50          
549 5           } break;
550 0           case PDL_LD: {
551 0 0         PDL_DECLARE_PARAMS_qsortveci_1(PDL_LDouble,E,PDL_LDouble,E,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
552 0 0         PDL_BROADCASTLOOP_START_qsortveci_readdata {register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
    0          
    0          
    0          
    0          
    0          
    0          
553             PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1;,)
554 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
555 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
556 0           PDL_IF_BAD(
557             char allgood_a = 1;
558             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if ( PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,E,a_badval_isnan) ) { allgood_a = 0; break; } }} /* Close n */
559             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
560             (indx_datap)[0+(__inc_indx_m*(copy_dest))] = m;
561             ,
562             (indx_datap)[0+(__inc_indx_m*(m))]=m;
563             )
564             }} /* Close m */
565             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
566 0 0         pdl_qsortvec_ind_E (a_datap, indx_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortveci_readdata
    0          
567 0           } break;
568 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in qsortveci: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
569             }
570             #undef PDL_IF_BAD
571             }
572 7           return PDL_err;
573             }
574              
575             static pdl_datatypes pdl_qsortveci_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 };
576             static PDL_Indx pdl_qsortveci_vtable_realdims[] = { 2, 1 };
577             static char *pdl_qsortveci_vtable_parnames[] = { "a","indx" };
578             static short pdl_qsortveci_vtable_parflags[] = {
579             PDL_PARAM_ISNOTCOMPLEX|PDL_PARAM_ISPHYS,
580             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISPHYS|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
581             };
582             static pdl_datatypes pdl_qsortveci_vtable_partypes[] = { -1, PDL_IND };
583             static PDL_Indx pdl_qsortveci_vtable_realdims_starts[] = { 0, 2 };
584             static PDL_Indx pdl_qsortveci_vtable_realdims_ind_ids[] = { 1, 0, 0 };
585             static char *pdl_qsortveci_vtable_indnames[] = { "m","n" };
586             pdl_transvtable pdl_qsortveci_vtable = {
587             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_qsortveci_vtable_gentypes, 1, 2, NULL /*CORE21*/,
588             pdl_qsortveci_vtable_realdims, pdl_qsortveci_vtable_parnames,
589             pdl_qsortveci_vtable_parflags, pdl_qsortveci_vtable_partypes,
590             pdl_qsortveci_vtable_realdims_starts, pdl_qsortveci_vtable_realdims_ind_ids, 3,
591             2, pdl_qsortveci_vtable_indnames,
592             NULL, pdl_qsortveci_readdata, NULL,
593             NULL,
594             0,"PDL::Ufunc::qsortveci"
595             };
596              
597              
598 8           pdl_error pdl_run_qsortveci(pdl *a,pdl *indx) {
599 8           pdl_error PDL_err = {0, NULL, 0};
600 8 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
601 8           pdl_trans *__privtrans = PDL->create_trans(&pdl_qsortveci_vtable);
602 8 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
603 8           __privtrans->pdls[0] = a;
604 8           __privtrans->pdls[1] = indx;
605 8 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
606 8 100         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
607 7           return PDL_err;
608             }