File Coverage

lib/PDL/Ufunc-pp-qsort.c
Criterion Covered Total %
statement 50 230 21.7
branch 126 1434 8.7
condition n/a
subroutine n/a
pod n/a
total 176 1664 10.5


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