File Coverage

lib/PDL/Ufunc-pp-qsortvec.c
Criterion Covered Total %
statement 60 242 24.7
branch 136 1404 9.6
condition n/a
subroutine n/a
pod n/a
total 196 1646 11.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 825 "lib/PDL/Ufunc.pd"
68             #define PDL_QSORTVEC_INDEXTERM(indexterm) indexterm
69             #define PDL_QSORTVEC_RECURSE(ppsym, ...) pdl_qsortvec_ ## ppsym(xx, n, __VA_ARGS__)
70             #define X(symbol, ctype, ppsym, ...) \
71             static inline void pdl_qsortvec_ ## ppsym(ctype *xx, PDL_Indx n, PDL_Indx a, PDL_Indx b) { \
72             PDL_QSORTVEC(ppsym, PDL_QSORTVEC_RECURSE, PDL_QSORTVEC_INDEXTERM, \
73             ctype *aa = &xx[n*i]; \
74             ctype *bb = &xx[n*j]; \
75             for( k=0; k
76             ctype z = *aa; \
77             *aa = *bb; \
78             *bb = z; \
79             } \
80             ) \
81             }
82             PDL_TYPELIST_REAL(X)
83             #undef X
84             #undef PDL_QSORTVEC_INDEXTERM
85             #undef PDL_QSORTVEC_RECURSE
86              
87             #line 1857 "lib/PDL/PP.pm"
88             pdl_error pdl_qsortvec_readdata(pdl_trans *__privtrans) {
89             pdl_error PDL_err = {0, NULL, 0};
90             #line 91 "lib/PDL/Ufunc-pp-qsortvec.c"
91 29           register PDL_Indx __m_size = __privtrans->ind_sizes[0];
92 29           register PDL_Indx __n_size = __privtrans->ind_sizes[1];
93 29 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in qsortvec:" "broadcast.incs NULL");
94             /* broadcastloop declarations */
95             int __brcloopval;
96             register PDL_Indx __tind0,__tind1; /* counters along dim */
97 29           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
98             /* dims here are how many steps along those dims */
99 29           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
100 29           register PDL_Indx __tinc0_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
101 29           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
102 29           register PDL_Indx __tinc1_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
103             #define PDL_BROADCASTLOOP_START_qsortvec_readdata PDL_BROADCASTLOOP_START( \
104             readdata, \
105             __privtrans->broadcast, \
106             __privtrans->vtable, \
107             a_datap += __offsp[0]; \
108             b_datap += __offsp[1]; \
109             , \
110             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
111             ,b_datap += __tinc1_b - __tinc0_b * __tdims0 \
112             ), \
113             ( ,a_datap += __tinc0_a \
114             ,b_datap += __tinc0_b \
115             ) \
116             )
117             #define PDL_BROADCASTLOOP_END_qsortvec_readdata PDL_BROADCASTLOOP_END( \
118             __privtrans->broadcast, \
119             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
120             b_datap -= __tinc1_b * __tdims1 + __offsp[1]; \
121             )
122 29           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;
123 29           register PDL_Indx __inc_b_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_b_n;register PDL_Indx __inc_b_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,1)]; (void)__inc_b_m;
124             #ifndef PDL_DECLARE_PARAMS_qsortvec_1
125             #define PDL_DECLARE_PARAMS_qsortvec_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_a,PDL_PPSYM_PARAM_a,PDL_TYPE_PARAM_b,PDL_PPSYM_PARAM_b) \
126             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_a, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_PARAM_a) \
127             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_b, b, (__privtrans->pdls[1]), 1, PDL_PPSYM_PARAM_b)
128             #endif
129 29 100         if ( __privtrans->bvalflag ) { /* ** do 'bad' Code ** */
130             #define PDL_BAD_CODE
131             #define PDL_IF_BAD(t,f) t
132 4           switch (__privtrans->__datatype) { /* Start generic switch */
133 0           case PDL_SB: {
134 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_SByte,A,PDL_SByte,A,PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
135 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
136 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
137 0           char is_inplace = (a_datap == b_datap);
138 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
139 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
140             char allgood_a = 1;
141             {/* 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 */
142             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
143             if (is_inplace) {
144             if (allgood_a) continue; /* nothing to do */
145             char anybad_b = 0;
146             do {
147             anybad_b = 0;
148             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,A,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
149             if (anybad_b) copy_dest = nb--;
150             } while (anybad_b);
151             if (m != copy_dest)
152             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
153             /* as in-place we know same badval source and dest */
154             PDL_SByte tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
155             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
156             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
157             }} /* Close n */
158             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
159             } else {
160             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
161             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,A,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
162             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
163             }} /* Close n */
164             }
165             }} /* Close m */
166             if ( nn == 0 ) continue; nn -= 1;,
167             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
168             )
169 0 0         pdl_qsortvec_A (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
170 0           } break;
171 0           case PDL_B: {
172 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Byte,B,PDL_Byte,B,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
173 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
174 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
175 0           char is_inplace = (a_datap == b_datap);
176 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
177 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
178             char allgood_a = 1;
179             {/* 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 */
180             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
181             if (is_inplace) {
182             if (allgood_a) continue; /* nothing to do */
183             char anybad_b = 0;
184             do {
185             anybad_b = 0;
186             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,B,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
187             if (anybad_b) copy_dest = nb--;
188             } while (anybad_b);
189             if (m != copy_dest)
190             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
191             /* as in-place we know same badval source and dest */
192             PDL_Byte tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
193             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
194             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
195             }} /* Close n */
196             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
197             } else {
198             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
199             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,B,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
200             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
201             }} /* Close n */
202             }
203             }} /* Close m */
204             if ( nn == 0 ) continue; nn -= 1;,
205             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
206             )
207 0 0         pdl_qsortvec_B (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
208 0           } break;
209 0           case PDL_S: {
210 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Short,S,PDL_Short,S,PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
211 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
212 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
213 0           char is_inplace = (a_datap == b_datap);
214 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
215 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
216             char allgood_a = 1;
217             {/* 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 */
218             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
219             if (is_inplace) {
220             if (allgood_a) continue; /* nothing to do */
221             char anybad_b = 0;
222             do {
223             anybad_b = 0;
224             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,S,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
225             if (anybad_b) copy_dest = nb--;
226             } while (anybad_b);
227             if (m != copy_dest)
228             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
229             /* as in-place we know same badval source and dest */
230             PDL_Short tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
231             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
232             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
233             }} /* Close n */
234             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
235             } else {
236             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
237             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,S,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
238             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
239             }} /* Close n */
240             }
241             }} /* Close m */
242             if ( nn == 0 ) continue; nn -= 1;,
243             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
244             )
245 0 0         pdl_qsortvec_S (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
246 0           } break;
247 0           case PDL_US: {
248 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Ushort,U,PDL_Ushort,U,PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
249 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
250 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
251 0           char is_inplace = (a_datap == b_datap);
252 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
253 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
254             char allgood_a = 1;
255             {/* 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 */
256             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
257             if (is_inplace) {
258             if (allgood_a) continue; /* nothing to do */
259             char anybad_b = 0;
260             do {
261             anybad_b = 0;
262             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,U,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
263             if (anybad_b) copy_dest = nb--;
264             } while (anybad_b);
265             if (m != copy_dest)
266             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
267             /* as in-place we know same badval source and dest */
268             PDL_Ushort tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
269             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
270             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
271             }} /* Close n */
272             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
273             } else {
274             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
275             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,U,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
276             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
277             }} /* Close n */
278             }
279             }} /* Close m */
280             if ( nn == 0 ) continue; nn -= 1;,
281             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
282             )
283 0 0         pdl_qsortvec_U (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
284 0           } break;
285 0           case PDL_L: {
286 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
287 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
288 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
289 0           char is_inplace = (a_datap == b_datap);
290 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
291 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
292             char allgood_a = 1;
293             {/* 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 */
294             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
295             if (is_inplace) {
296             if (allgood_a) continue; /* nothing to do */
297             char anybad_b = 0;
298             do {
299             anybad_b = 0;
300             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,L,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
301             if (anybad_b) copy_dest = nb--;
302             } while (anybad_b);
303             if (m != copy_dest)
304             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
305             /* as in-place we know same badval source and dest */
306             PDL_Long tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
307             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
308             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
309             }} /* Close n */
310             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
311             } else {
312             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
313             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,L,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
314             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
315             }} /* Close n */
316             }
317             }} /* Close m */
318             if ( nn == 0 ) continue; nn -= 1;,
319             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
320             )
321 0 0         pdl_qsortvec_L (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
322 0           } break;
323 0           case PDL_UL: {
324 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_ULong,K,PDL_ULong,K,PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
325 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
326 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
327 0           char is_inplace = (a_datap == b_datap);
328 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
329 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
330             char allgood_a = 1;
331             {/* 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 */
332             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
333             if (is_inplace) {
334             if (allgood_a) continue; /* nothing to do */
335             char anybad_b = 0;
336             do {
337             anybad_b = 0;
338             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,K,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
339             if (anybad_b) copy_dest = nb--;
340             } while (anybad_b);
341             if (m != copy_dest)
342             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
343             /* as in-place we know same badval source and dest */
344             PDL_ULong tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
345             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
346             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
347             }} /* Close n */
348             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
349             } else {
350             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
351             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,K,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
352             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
353             }} /* Close n */
354             }
355             }} /* Close m */
356             if ( nn == 0 ) continue; nn -= 1;,
357             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
358             )
359 0 0         pdl_qsortvec_K (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
360 0           } break;
361 0           case PDL_IND: {
362 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Indx,N,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
363 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
364 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
365 0           char is_inplace = (a_datap == b_datap);
366 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
367 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
368             char allgood_a = 1;
369             {/* 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 */
370             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
371             if (is_inplace) {
372             if (allgood_a) continue; /* nothing to do */
373             char anybad_b = 0;
374             do {
375             anybad_b = 0;
376             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,N,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
377             if (anybad_b) copy_dest = nb--;
378             } while (anybad_b);
379             if (m != copy_dest)
380             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
381             /* as in-place we know same badval source and dest */
382             PDL_Indx tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
383             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
384             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
385             }} /* Close n */
386             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
387             } else {
388             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
389             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,N,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
390             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
391             }} /* Close n */
392             }
393             }} /* Close m */
394             if ( nn == 0 ) continue; nn -= 1;,
395             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
396             )
397 0 0         pdl_qsortvec_N (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
398 0           } break;
399 0           case PDL_ULL: {
400 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_ULongLong,P,PDL_ULongLong,P,PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
401 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
402 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
403 0           char is_inplace = (a_datap == b_datap);
404 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
405 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
406             char allgood_a = 1;
407             {/* 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 */
408             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
409             if (is_inplace) {
410             if (allgood_a) continue; /* nothing to do */
411             char anybad_b = 0;
412             do {
413             anybad_b = 0;
414             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,P,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
415             if (anybad_b) copy_dest = nb--;
416             } while (anybad_b);
417             if (m != copy_dest)
418             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
419             /* as in-place we know same badval source and dest */
420             PDL_ULongLong tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
421             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
422             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
423             }} /* Close n */
424             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
425             } else {
426             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
427             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,P,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
428             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
429             }} /* Close n */
430             }
431             }} /* Close m */
432             if ( nn == 0 ) continue; nn -= 1;,
433             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
434             )
435 0 0         pdl_qsortvec_P (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
436 0           } break;
437 0           case PDL_LL: {
438 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_LongLong,Q,PDL_LongLong,Q,PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
439 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
440 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
441 0           char is_inplace = (a_datap == b_datap);
442 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
443 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
444             char allgood_a = 1;
445             {/* 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 */
446             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
447             if (is_inplace) {
448             if (allgood_a) continue; /* nothing to do */
449             char anybad_b = 0;
450             do {
451             anybad_b = 0;
452             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,Q,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
453             if (anybad_b) copy_dest = nb--;
454             } while (anybad_b);
455             if (m != copy_dest)
456             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
457             /* as in-place we know same badval source and dest */
458             PDL_LongLong tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
459             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
460             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
461             }} /* Close n */
462             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
463             } else {
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*(m))],a_badval,Q,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
466             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
467             }} /* Close n */
468             }
469             }} /* Close m */
470             if ( nn == 0 ) continue; nn -= 1;,
471             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
472             )
473 0 0         pdl_qsortvec_Q (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
474 0           } break;
475 0           case PDL_F: {
476 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Float,F,PDL_Float,F,PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
477 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
478 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
479 0           char is_inplace = (a_datap == b_datap);
480 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
481 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
482             char allgood_a = 1;
483             {/* 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 */
484             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
485             if (is_inplace) {
486             if (allgood_a) continue; /* nothing to do */
487             char anybad_b = 0;
488             do {
489             anybad_b = 0;
490             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,F,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
491             if (anybad_b) copy_dest = nb--;
492             } while (anybad_b);
493             if (m != copy_dest)
494             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
495             /* as in-place we know same badval source and dest */
496             PDL_Float tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
497             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
498             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
499             }} /* Close n */
500             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
501             } else {
502             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
503             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,F,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
504             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
505             }} /* Close n */
506             }
507             }} /* Close m */
508             if ( nn == 0 ) continue; nn -= 1;,
509             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
510             )
511 0 0         pdl_qsortvec_F (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
512 0           } break;
513 4           case PDL_D: {
514 4 50         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Double,D,PDL_Double,D,PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
515 16 50         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
516 4           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
517 4           char is_inplace = (a_datap == b_datap);
518 4 50         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
519 75 50         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    100          
    100          
    100          
    100          
    100          
    50          
    50          
    100          
    50          
    50          
    50          
    100          
    50          
    50          
    100          
    100          
    100          
    50          
520             char allgood_a = 1;
521             {/* 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 */
522             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
523             if (is_inplace) {
524             if (allgood_a) continue; /* nothing to do */
525             char anybad_b = 0;
526             do {
527             anybad_b = 0;
528             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,D,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
529             if (anybad_b) copy_dest = nb--;
530             } while (anybad_b);
531             if (m != copy_dest)
532             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
533             /* as in-place we know same badval source and dest */
534             PDL_Double tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
535             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
536             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
537             }} /* Close n */
538             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
539             } else {
540             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
541             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,D,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
542             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
543             }} /* Close n */
544             }
545             }} /* Close m */
546             if ( nn == 0 ) continue; nn -= 1;,
547             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
548             )
549 8 50         pdl_qsortvec_D (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    50          
550 4           } break;
551 0           case PDL_LD: {
552 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
553 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
554 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
555 0           char is_inplace = (a_datap == b_datap);
556 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
557 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
558             char allgood_a = 1;
559             {/* 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 */
560             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
561             if (is_inplace) {
562             if (allgood_a) continue; /* nothing to do */
563             char anybad_b = 0;
564             do {
565             anybad_b = 0;
566             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,E,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
567             if (anybad_b) copy_dest = nb--;
568             } while (anybad_b);
569             if (m != copy_dest)
570             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
571             /* as in-place we know same badval source and dest */
572             PDL_LDouble tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
573             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
574             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
575             }} /* Close n */
576             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
577             } else {
578             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
579             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,E,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
580             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
581             }} /* Close n */
582             }
583             }} /* Close m */
584             if ( nn == 0 ) continue; nn -= 1;,
585             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
586             )
587 0 0         pdl_qsortvec_E (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
588 0           } break;
589 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in qsortvec: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
590             }
591             #undef PDL_BAD_CODE
592             #undef PDL_IF_BAD
593             } else { /* ** else do 'good' Code ** */
594             #define PDL_IF_BAD(t,f) f
595 25           switch (__privtrans->__datatype) { /* Start generic switch */
596 0           case PDL_SB: {
597 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_SByte,A,PDL_SByte,A,PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
598 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
599 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
600 0           char is_inplace = (a_datap == b_datap);
601 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
602 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
603             char allgood_a = 1;
604             {/* 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 */
605             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
606             if (is_inplace) {
607             if (allgood_a) continue; /* nothing to do */
608             char anybad_b = 0;
609             do {
610             anybad_b = 0;
611             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,A,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
612             if (anybad_b) copy_dest = nb--;
613             } while (anybad_b);
614             if (m != copy_dest)
615             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
616             /* as in-place we know same badval source and dest */
617             PDL_SByte tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
618             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
619             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
620             }} /* Close n */
621             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
622             } else {
623             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
624             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,A,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
625             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
626             }} /* Close n */
627             }
628             }} /* Close m */
629             if ( nn == 0 ) continue; nn -= 1;,
630             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
631             )
632 0 0         pdl_qsortvec_A (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
633 0           } break;
634 0           case PDL_B: {
635 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Byte,B,PDL_Byte,B,PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
636 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
637 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
638 0           char is_inplace = (a_datap == b_datap);
639 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
640 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
641             char allgood_a = 1;
642             {/* 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 */
643             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
644             if (is_inplace) {
645             if (allgood_a) continue; /* nothing to do */
646             char anybad_b = 0;
647             do {
648             anybad_b = 0;
649             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,B,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
650             if (anybad_b) copy_dest = nb--;
651             } while (anybad_b);
652             if (m != copy_dest)
653             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
654             /* as in-place we know same badval source and dest */
655             PDL_Byte tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
656             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
657             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
658             }} /* Close n */
659             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
660             } else {
661             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
662             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,B,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
663             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
664             }} /* Close n */
665             }
666             }} /* Close m */
667             if ( nn == 0 ) continue; nn -= 1;,
668             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
669             )
670 0 0         pdl_qsortvec_B (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
671 0           } break;
672 0           case PDL_S: {
673 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Short,S,PDL_Short,S,PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
674 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
675 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
676 0           char is_inplace = (a_datap == b_datap);
677 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
678 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
679             char allgood_a = 1;
680             {/* 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 */
681             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
682             if (is_inplace) {
683             if (allgood_a) continue; /* nothing to do */
684             char anybad_b = 0;
685             do {
686             anybad_b = 0;
687             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,S,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
688             if (anybad_b) copy_dest = nb--;
689             } while (anybad_b);
690             if (m != copy_dest)
691             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
692             /* as in-place we know same badval source and dest */
693             PDL_Short tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
694             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
695             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
696             }} /* Close n */
697             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
698             } else {
699             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
700             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,S,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
701             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
702             }} /* Close n */
703             }
704             }} /* Close m */
705             if ( nn == 0 ) continue; nn -= 1;,
706             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
707             )
708 0 0         pdl_qsortvec_S (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
709 0           } break;
710 0           case PDL_US: {
711 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Ushort,U,PDL_Ushort,U,PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
712 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
713 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
714 0           char is_inplace = (a_datap == b_datap);
715 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
716 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
717             char allgood_a = 1;
718             {/* 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 */
719             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
720             if (is_inplace) {
721             if (allgood_a) continue; /* nothing to do */
722             char anybad_b = 0;
723             do {
724             anybad_b = 0;
725             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,U,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
726             if (anybad_b) copy_dest = nb--;
727             } while (anybad_b);
728             if (m != copy_dest)
729             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
730             /* as in-place we know same badval source and dest */
731             PDL_Ushort tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
732             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
733             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
734             }} /* Close n */
735             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
736             } else {
737             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
738             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,U,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
739             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
740             }} /* Close n */
741             }
742             }} /* Close m */
743             if ( nn == 0 ) continue; nn -= 1;,
744             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
745             )
746 0 0         pdl_qsortvec_U (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
747 0           } break;
748 0           case PDL_L: {
749 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Long,L,PDL_Long,L,PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
750 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
751 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
752 0           char is_inplace = (a_datap == b_datap);
753 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
754 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
755             char allgood_a = 1;
756             {/* 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 */
757             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
758             if (is_inplace) {
759             if (allgood_a) continue; /* nothing to do */
760             char anybad_b = 0;
761             do {
762             anybad_b = 0;
763             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,L,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
764             if (anybad_b) copy_dest = nb--;
765             } while (anybad_b);
766             if (m != copy_dest)
767             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
768             /* as in-place we know same badval source and dest */
769             PDL_Long tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
770             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
771             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
772             }} /* Close n */
773             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
774             } else {
775             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
776             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,L,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
777             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
778             }} /* Close n */
779             }
780             }} /* Close m */
781             if ( nn == 0 ) continue; nn -= 1;,
782             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
783             )
784 0 0         pdl_qsortvec_L (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
785 0           } break;
786 0           case PDL_UL: {
787 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_ULong,K,PDL_ULong,K,PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
788 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
789 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
790 0           char is_inplace = (a_datap == b_datap);
791 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
792 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
793             char allgood_a = 1;
794             {/* 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 */
795             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
796             if (is_inplace) {
797             if (allgood_a) continue; /* nothing to do */
798             char anybad_b = 0;
799             do {
800             anybad_b = 0;
801             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,K,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
802             if (anybad_b) copy_dest = nb--;
803             } while (anybad_b);
804             if (m != copy_dest)
805             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
806             /* as in-place we know same badval source and dest */
807             PDL_ULong tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
808             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
809             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
810             }} /* Close n */
811             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
812             } else {
813             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
814             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,K,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
815             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
816             }} /* Close n */
817             }
818             }} /* Close m */
819             if ( nn == 0 ) continue; nn -= 1;,
820             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
821             )
822 0 0         pdl_qsortvec_K (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
823 0           } break;
824 1           case PDL_IND: {
825 1 50         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Indx,N,PDL_Indx,N,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
826 4 50         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
827 1           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
828 1           char is_inplace = (a_datap == b_datap);
829 1 50         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
830 13 50         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    100          
    100          
831             char allgood_a = 1;
832             {/* 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 */
833             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
834             if (is_inplace) {
835             if (allgood_a) continue; /* nothing to do */
836             char anybad_b = 0;
837             do {
838             anybad_b = 0;
839             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,N,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
840             if (anybad_b) copy_dest = nb--;
841             } while (anybad_b);
842             if (m != copy_dest)
843             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
844             /* as in-place we know same badval source and dest */
845             PDL_Indx tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
846             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
847             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
848             }} /* Close n */
849             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
850             } else {
851             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
852             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,N,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
853             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
854             }} /* Close n */
855             }
856             }} /* Close m */
857             if ( nn == 0 ) continue; nn -= 1;,
858             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
859             )
860 2 50         pdl_qsortvec_N (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    50          
861 1           } break;
862 0           case PDL_ULL: {
863 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_ULongLong,P,PDL_ULongLong,P,PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
864 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
865 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
866 0           char is_inplace = (a_datap == b_datap);
867 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
868 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
869             char allgood_a = 1;
870             {/* 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 */
871             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
872             if (is_inplace) {
873             if (allgood_a) continue; /* nothing to do */
874             char anybad_b = 0;
875             do {
876             anybad_b = 0;
877             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,P,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
878             if (anybad_b) copy_dest = nb--;
879             } while (anybad_b);
880             if (m != copy_dest)
881             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
882             /* as in-place we know same badval source and dest */
883             PDL_ULongLong tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
884             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
885             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
886             }} /* Close n */
887             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
888             } else {
889             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
890             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,P,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
891             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
892             }} /* Close n */
893             }
894             }} /* Close m */
895             if ( nn == 0 ) continue; nn -= 1;,
896             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
897             )
898 0 0         pdl_qsortvec_P (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
899 0           } break;
900 0           case PDL_LL: {
901 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_LongLong,Q,PDL_LongLong,Q,PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
902 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
903 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
904 0           char is_inplace = (a_datap == b_datap);
905 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
906 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
907             char allgood_a = 1;
908             {/* 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 */
909             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
910             if (is_inplace) {
911             if (allgood_a) continue; /* nothing to do */
912             char anybad_b = 0;
913             do {
914             anybad_b = 0;
915             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,Q,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
916             if (anybad_b) copy_dest = nb--;
917             } while (anybad_b);
918             if (m != copy_dest)
919             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
920             /* as in-place we know same badval source and dest */
921             PDL_LongLong tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
922             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
923             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
924             }} /* Close n */
925             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
926             } else {
927             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
928             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,Q,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
929             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
930             }} /* Close n */
931             }
932             }} /* Close m */
933             if ( nn == 0 ) continue; nn -= 1;,
934             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
935             )
936 0 0         pdl_qsortvec_Q (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
937 0           } break;
938 6           case PDL_F: {
939 6 50         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Float,F,PDL_Float,F,PDL_Float,F)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
940 24 50         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
941 6           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
942 6           char is_inplace = (a_datap == b_datap);
943 6 50         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
944 392 50         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    100          
    100          
945             char allgood_a = 1;
946             {/* 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 */
947             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
948             if (is_inplace) {
949             if (allgood_a) continue; /* nothing to do */
950             char anybad_b = 0;
951             do {
952             anybad_b = 0;
953             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,F,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
954             if (anybad_b) copy_dest = nb--;
955             } while (anybad_b);
956             if (m != copy_dest)
957             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
958             /* as in-place we know same badval source and dest */
959             PDL_Float tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
960             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
961             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
962             }} /* Close n */
963             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
964             } else {
965             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
966             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,F,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
967             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
968             }} /* Close n */
969             }
970             }} /* Close m */
971             if ( nn == 0 ) continue; nn -= 1;,
972             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
973             )
974 12 50         pdl_qsortvec_F (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    50          
975 6           } break;
976 18           case PDL_D: {
977 18 50         PDL_DECLARE_PARAMS_qsortvec_1(PDL_Double,D,PDL_Double,D,PDL_Double,D)
    100          
    50          
    50          
    50          
    100          
    50          
    50          
978 70 50         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
979 18           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
980 18           char is_inplace = (a_datap == b_datap);
981 18 100         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
982 403680 100         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    100          
    100          
983             char allgood_a = 1;
984             {/* 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 */
985             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
986             if (is_inplace) {
987             if (allgood_a) continue; /* nothing to do */
988             char anybad_b = 0;
989             do {
990             anybad_b = 0;
991             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,D,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
992             if (anybad_b) copy_dest = nb--;
993             } while (anybad_b);
994             if (m != copy_dest)
995             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
996             /* as in-place we know same badval source and dest */
997             PDL_Double tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
998             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
999             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
1000             }} /* Close n */
1001             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
1002             } else {
1003             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1004             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,D,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
1005             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
1006             }} /* Close n */
1007             }
1008             }} /* Close m */
1009             if ( nn == 0 ) continue; nn -= 1;,
1010             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
1011             )
1012 34 50         pdl_qsortvec_D (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    50          
1013 17           } break;
1014 0           case PDL_LD: {
1015 0 0         PDL_DECLARE_PARAMS_qsortvec_1(PDL_LDouble,E,PDL_LDouble,E,PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1016 0 0         PDL_BROADCASTLOOP_START_qsortvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1017 0           register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
1018 0           char is_inplace = (a_datap == b_datap);
1019 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
1020 0 0         PDL_IF_BAD(register PDL_Indx nb = __privtrans->ind_sizes[0] - 1; {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
    0          
    0          
1021             char allgood_a = 1;
1022             {/* 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 */
1023             PDL_Indx copy_dest = allgood_a ? nn++ : nb--;
1024             if (is_inplace) {
1025             if (allgood_a) continue; /* nothing to do */
1026             char anybad_b = 0;
1027             do {
1028             anybad_b = 0;
1029             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) { if (PDL_ISBAD2((b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))],b_badval,E,b_badval_isnan)) { anybad_b = 1; break; } }} /* Close n */
1030             if (anybad_b) copy_dest = nb--;
1031             } while (anybad_b);
1032             if (m != copy_dest)
1033             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1034             /* as in-place we know same badval source and dest */
1035             PDL_LDouble tmp = (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))];
1036             (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
1037             (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))] = tmp;
1038             }} /* Close n */
1039             if (m >= nb-1) { nn = nb+1; break; } /* run out of "good" vectors */
1040             } else {
1041             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1042             if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))],a_badval,E,a_badval_isnan)) (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))]=b_badval;
1043             else (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(copy_dest))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))];
1044             }} /* Close n */
1045             }
1046             }} /* Close m */
1047             if ( nn == 0 ) continue; nn -= 1;,
1048             if (!is_inplace) { {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) { (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; }} /* Close n */}} /* Close m */ }
1049             )
1050 0 0         pdl_qsortvec_E (b_datap, __privtrans->ind_sizes[1], 0, nn);}PDL_BROADCASTLOOP_END_qsortvec_readdata
    0          
1051 0           } break;
1052 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in qsortvec: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
1053             }
1054             #undef PDL_IF_BAD
1055             }
1056 28           return PDL_err;
1057             }
1058              
1059             static pdl_datatypes pdl_qsortvec_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 };
1060             static PDL_Indx pdl_qsortvec_vtable_realdims[] = { 2, 2 };
1061             static char *pdl_qsortvec_vtable_parnames[] = { "a","b" };
1062             static short pdl_qsortvec_vtable_parflags[] = {
1063             PDL_PARAM_ISNOTCOMPLEX|PDL_PARAM_ISPHYS,
1064             PDL_PARAM_ISCREAT|PDL_PARAM_ISNOTCOMPLEX|PDL_PARAM_ISOUT|PDL_PARAM_ISPHYS|PDL_PARAM_ISWRITE
1065             };
1066             static pdl_datatypes pdl_qsortvec_vtable_partypes[] = { -1, -1 };
1067             static PDL_Indx pdl_qsortvec_vtable_realdims_starts[] = { 0, 2 };
1068             static PDL_Indx pdl_qsortvec_vtable_realdims_ind_ids[] = { 1, 0, 1, 0 };
1069             static char *pdl_qsortvec_vtable_indnames[] = { "m","n" };
1070             pdl_transvtable pdl_qsortvec_vtable = {
1071             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_qsortvec_vtable_gentypes, 1, 2, NULL /*CORE21*/,
1072             pdl_qsortvec_vtable_realdims, pdl_qsortvec_vtable_parnames,
1073             pdl_qsortvec_vtable_parflags, pdl_qsortvec_vtable_partypes,
1074             pdl_qsortvec_vtable_realdims_starts, pdl_qsortvec_vtable_realdims_ind_ids, 4,
1075             2, pdl_qsortvec_vtable_indnames,
1076             NULL, pdl_qsortvec_readdata, NULL,
1077             NULL,
1078             0,"PDL::Ufunc::qsortvec"
1079             };
1080              
1081              
1082 30           pdl_error pdl_run_qsortvec(pdl *a,pdl *b) {
1083 30           pdl_error PDL_err = {0, NULL, 0};
1084 30 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
1085 30           pdl_trans *__privtrans = PDL->create_trans(&pdl_qsortvec_vtable);
1086 30 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
1087 30           __privtrans->pdls[0] = a;
1088 30           __privtrans->pdls[1] = b;
1089 30 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
1090 30 100         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
1091 29           return PDL_err;
1092             }