File Coverage

lib/PDL/Ufunc-pp-qsorti.c
Criterion Covered Total %
statement 40 229 17.4
branch 60 996 6.0
condition n/a
subroutine n/a
pod n/a
total 100 1225 8.1


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 755 "lib/PDL/Ufunc.pd"
24             #define X(symbol, ctype, ppsym, ...) \
25             static inline void qsort_ind_ ## ppsym(ctype* xx, PDL_Indx* ix, PDL_Indx a, PDL_Indx b) { \
26             PDL_Indx i,j; \
27             PDL_Indx t; \
28             ctype median; \
29             i = a; j = b; \
30             median = xx[ix[(i+j) / 2]]; \
31             do { \
32             while (xx[ix[i]] < median) \
33             i++; \
34             while (median < xx[ix[j]]) \
35             j--; \
36             if (i <= j) { \
37             t = ix[i]; ix[i] = ix[j]; ix[j] = t; \
38             i++; j--; \
39             } \
40             } while (i <= j); \
41             if (a < j) \
42             qsort_ind_ ## ppsym(xx,ix,a,j); \
43             if (i < b) \
44             qsort_ind_ ## ppsym(xx,ix,i,b); \
45             }
46             PDL_TYPELIST_REAL(X)
47             #undef X
48              
49             #line 1857 "lib/PDL/PP.pm"
50             pdl_error pdl_qsorti_readdata(pdl_trans *__privtrans) {
51             pdl_error PDL_err = {0, NULL, 0};
52             #line 53 "lib/PDL/Ufunc-pp-qsorti.c"
53 14           register PDL_Indx __n_size = __privtrans->ind_sizes[0];
54 14 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in qsorti:" "broadcast.incs NULL");
55             /* broadcastloop declarations */
56             int __brcloopval;
57             register PDL_Indx __tind0,__tind1; /* counters along dim */
58 14           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
59             /* dims here are how many steps along those dims */
60 14           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
61 14           register PDL_Indx __tinc0_indx = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
62 14           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
63 14           register PDL_Indx __tinc1_indx = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
64             #define PDL_BROADCASTLOOP_START_qsorti_readdata PDL_BROADCASTLOOP_START( \
65             readdata, \
66             __privtrans->broadcast, \
67             __privtrans->vtable, \
68             a_datap += __offsp[0]; \
69             indx_datap += __offsp[1]; \
70             , \
71             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
72             ,indx_datap += __tinc1_indx - __tinc0_indx * __tdims0 \
73             ), \
74             ( ,a_datap += __tinc0_a \
75             ,indx_datap += __tinc0_indx \
76             ) \
77             )
78             #define PDL_BROADCASTLOOP_END_qsorti_readdata PDL_BROADCASTLOOP_END( \
79             __privtrans->broadcast, \
80             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
81             indx_datap -= __tinc1_indx * __tdims1 + __offsp[1]; \
82             )
83 14           register PDL_Indx __inc_a_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a_n;
84 14           register PDL_Indx __inc_indx_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_indx_n;
85             #ifndef PDL_DECLARE_PARAMS_qsorti_1
86             #define PDL_DECLARE_PARAMS_qsorti_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_a,PDL_PPSYM_PARAM_a,PDL_TYPE_PARAM_indx,PDL_PPSYM_PARAM_indx) \
87             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_a, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_PARAM_a) \
88             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_PARAM_indx, indx, (__privtrans->pdls[1]), 1, PDL_PPSYM_PARAM_indx)
89             #endif
90 14 100         if ( __privtrans->bvalflag ) { /* ** do 'bad' Code ** */
91             #define PDL_BAD_CODE
92             #define PDL_IF_BAD(t,f) t
93 6           switch (__privtrans->__datatype) { /* Start generic switch */
94 0           case PDL_SB: {
95 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_SByte,A,PDL_SByte,A,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
96 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
97             #line 1093 "lib/PDL/Ufunc.pd"
98              
99             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
100             #line 101 "lib/PDL/Ufunc-pp-qsorti.c"
101 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
102 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
103 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,A,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
    0          
104             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
105             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
106             }} /* Close n */
107 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
108 0 0         qsort_ind_A (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
109 0           } break;
110 0           case PDL_B: {
111 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_Byte,B,PDL_Byte,B,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
112 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
113             #line 1093 "lib/PDL/Ufunc.pd"
114              
115             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
116             #line 117 "lib/PDL/Ufunc-pp-qsorti.c"
117 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
118 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
119 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,B,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
    0          
120             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
121             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
122             }} /* Close n */
123 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
124 0 0         qsort_ind_B (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
125 0           } break;
126 0           case PDL_S: {
127 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_Short,S,PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
128 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
129             #line 1093 "lib/PDL/Ufunc.pd"
130              
131             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
132             #line 133 "lib/PDL/Ufunc-pp-qsorti.c"
133 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
134 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
135 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,S,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
    0          
136             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
137             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
138             }} /* Close n */
139 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
140 0 0         qsort_ind_S (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
141 0           } break;
142 0           case PDL_US: {
143 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_Ushort,U,PDL_Ushort,U,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
144 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
145             #line 1093 "lib/PDL/Ufunc.pd"
146              
147             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
148             #line 149 "lib/PDL/Ufunc-pp-qsorti.c"
149 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
150 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
151 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,U,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
    0          
152             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
153             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
154             }} /* Close n */
155 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
156 0 0         qsort_ind_U (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
157 0           } break;
158 0           case PDL_L: {
159 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_Long,L,PDL_Long,L,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
160 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
161             #line 1093 "lib/PDL/Ufunc.pd"
162              
163             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
164             #line 165 "lib/PDL/Ufunc-pp-qsorti.c"
165 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
166 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
167 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,L,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
    0          
168             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
169             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
170             }} /* Close n */
171 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
172 0 0         qsort_ind_L (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
173 0           } break;
174 0           case PDL_UL: {
175 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_ULong,K,PDL_ULong,K,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
176 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
177             #line 1093 "lib/PDL/Ufunc.pd"
178              
179             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
180             #line 181 "lib/PDL/Ufunc-pp-qsorti.c"
181 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
182 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
183 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,K,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
    0          
184             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
185             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
186             }} /* Close n */
187 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
188 0 0         qsort_ind_K (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
189 0           } break;
190 0           case PDL_IND: {
191 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_Indx,N,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
192 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
193             #line 1093 "lib/PDL/Ufunc.pd"
194              
195             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
196             #line 197 "lib/PDL/Ufunc-pp-qsorti.c"
197 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
198 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
199 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,N,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
    0          
200             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
201             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
202             }} /* Close n */
203 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
204 0 0         qsort_ind_N (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
205 0           } break;
206 0           case PDL_ULL: {
207 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_ULongLong,P,PDL_ULongLong,P,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
208 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
209             #line 1093 "lib/PDL/Ufunc.pd"
210              
211             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
212             #line 213 "lib/PDL/Ufunc-pp-qsorti.c"
213 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
214 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
215 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,P,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
    0          
216             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
217             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
218             }} /* Close n */
219 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
220 0 0         qsort_ind_P (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
221 0           } break;
222 0           case PDL_LL: {
223 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_LongLong,Q,PDL_LongLong,Q,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
224 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
225             #line 1093 "lib/PDL/Ufunc.pd"
226              
227             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
228             #line 229 "lib/PDL/Ufunc-pp-qsorti.c"
229 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
230 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
231 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,Q,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
    0          
232             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
233             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
234             }} /* Close n */
235 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
236 0 0         qsort_ind_Q (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
237 0           } break;
238 0           case PDL_F: {
239 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_Float,F,PDL_Float,F,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
240 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
241             #line 1093 "lib/PDL/Ufunc.pd"
242              
243             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
244             #line 245 "lib/PDL/Ufunc-pp-qsorti.c"
245 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
246 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
247 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,F,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
    0          
248             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
249             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
250             }} /* Close n */
251 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
252 0 0         qsort_ind_F (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
253 0           } break;
254 6           case PDL_D: {
255 6 50         PDL_DECLARE_PARAMS_qsorti_1(PDL_Double,D,PDL_Double,D,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
256 24 50         PDL_BROADCASTLOOP_START_qsorti_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
257             #line 1093 "lib/PDL/Ufunc.pd"
258              
259             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
260             #line 261 "lib/PDL/Ufunc-pp-qsorti.c"
261 6 50         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
262 46 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
263 40 50         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,D,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
    100          
264             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
265             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
266             }} /* Close n */
267 6 100         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
268 11 50         qsort_ind_D (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    50          
269 6           } break;
270 0           case PDL_LD: {
271 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_LDouble,E,PDL_LDouble,E,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
272 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
273             #line 1093 "lib/PDL/Ufunc.pd"
274              
275             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
276             #line 277 "lib/PDL/Ufunc-pp-qsorti.c"
277 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
278 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
279 0 0         PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,E,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
    0          
280             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
281             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
282             }} /* Close n */
283 0 0         PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
284 0 0         qsort_ind_E (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
285 0           } break;
286 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in qsorti: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
287             }
288             #undef PDL_BAD_CODE
289             #undef PDL_IF_BAD
290             } else { /* ** else do 'good' Code ** */
291             #define PDL_IF_BAD(t,f) f
292 8           switch (__privtrans->__datatype) { /* Start generic switch */
293 0           case PDL_SB: {
294 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_SByte,A,PDL_SByte,A,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
295 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
296             #line 1093 "lib/PDL/Ufunc.pd"
297              
298             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
299             #line 300 "lib/PDL/Ufunc-pp-qsorti.c"
300 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
301 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
302 0           PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,A,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
303             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
304             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
305             }} /* Close n */
306             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
307 0 0         qsort_ind_A (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
308 0           } break;
309 0           case PDL_B: {
310 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_Byte,B,PDL_Byte,B,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
311 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
312             #line 1093 "lib/PDL/Ufunc.pd"
313              
314             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
315             #line 316 "lib/PDL/Ufunc-pp-qsorti.c"
316 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
317 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
318 0           PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,B,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
319             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
320             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
321             }} /* Close n */
322             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
323 0 0         qsort_ind_B (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
324 0           } break;
325 0           case PDL_S: {
326 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_Short,S,PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
327 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
328             #line 1093 "lib/PDL/Ufunc.pd"
329              
330             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
331             #line 332 "lib/PDL/Ufunc-pp-qsorti.c"
332 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
333 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
334 0           PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,S,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
335             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
336             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
337             }} /* Close n */
338             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
339 0 0         qsort_ind_S (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
340 0           } break;
341 0           case PDL_US: {
342 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_Ushort,U,PDL_Ushort,U,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
343 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
344             #line 1093 "lib/PDL/Ufunc.pd"
345              
346             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
347             #line 348 "lib/PDL/Ufunc-pp-qsorti.c"
348 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
349 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
350 0           PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,U,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
351             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
352             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
353             }} /* Close n */
354             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
355 0 0         qsort_ind_U (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
356 0           } break;
357 0           case PDL_L: {
358 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_Long,L,PDL_Long,L,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
359 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
360             #line 1093 "lib/PDL/Ufunc.pd"
361              
362             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
363             #line 364 "lib/PDL/Ufunc-pp-qsorti.c"
364 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
365 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
366 0           PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,L,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
367             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
368             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
369             }} /* Close n */
370             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
371 0 0         qsort_ind_L (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
372 0           } break;
373 0           case PDL_UL: {
374 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_ULong,K,PDL_ULong,K,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
375 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
376             #line 1093 "lib/PDL/Ufunc.pd"
377              
378             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
379             #line 380 "lib/PDL/Ufunc-pp-qsorti.c"
380 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
381 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
382 0           PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,K,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
383             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
384             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
385             }} /* Close n */
386             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
387 0 0         qsort_ind_K (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
388 0           } break;
389 0           case PDL_IND: {
390 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_Indx,N,PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
391 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
392             #line 1093 "lib/PDL/Ufunc.pd"
393              
394             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
395             #line 396 "lib/PDL/Ufunc-pp-qsorti.c"
396 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
397 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
398 0           PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,N,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
399             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
400             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
401             }} /* Close n */
402             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
403 0 0         qsort_ind_N (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
404 0           } break;
405 0           case PDL_ULL: {
406 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_ULongLong,P,PDL_ULongLong,P,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
407 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
408             #line 1093 "lib/PDL/Ufunc.pd"
409              
410             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
411             #line 412 "lib/PDL/Ufunc-pp-qsorti.c"
412 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
413 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
414 0           PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,P,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
415             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
416             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
417             }} /* Close n */
418             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
419 0 0         qsort_ind_P (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
420 0           } break;
421 0           case PDL_LL: {
422 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_LongLong,Q,PDL_LongLong,Q,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
423 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
424             #line 1093 "lib/PDL/Ufunc.pd"
425              
426             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
427             #line 428 "lib/PDL/Ufunc-pp-qsorti.c"
428 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
429 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
430 0           PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,Q,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
431             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
432             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
433             }} /* Close n */
434             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
435 0 0         qsort_ind_Q (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
436 0           } break;
437 0           case PDL_F: {
438 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_Float,F,PDL_Float,F,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
439 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
440             #line 1093 "lib/PDL/Ufunc.pd"
441              
442             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
443             #line 444 "lib/PDL/Ufunc-pp-qsorti.c"
444 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
445 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
446 0           PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,F,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
447             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
448             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
449             }} /* Close n */
450             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
451 0 0         qsort_ind_F (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
452 0           } break;
453 8           case PDL_D: {
454 8 50         PDL_DECLARE_PARAMS_qsorti_1(PDL_Double,D,PDL_Double,D,PDL_Indx,N)
    100          
    50          
    50          
    50          
    100          
    50          
    50          
455 30 50         PDL_BROADCASTLOOP_START_qsorti_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
456             #line 1093 "lib/PDL/Ufunc.pd"
457              
458             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
459             #line 460 "lib/PDL/Ufunc-pp-qsorti.c"
460 8 100         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
461 57 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
462 50           PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,D,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
463             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
464             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
465             }} /* Close n */
466             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
467 14 50         qsort_ind_D (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    50          
468 7           } break;
469 0           case PDL_LD: {
470 0 0         PDL_DECLARE_PARAMS_qsorti_1(PDL_LDouble,E,PDL_LDouble,E,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
471 0 0         PDL_BROADCASTLOOP_START_qsorti_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
472             #line 1093 "lib/PDL/Ufunc.pd"
473              
474             register PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1), nb = __privtrans->ind_sizes[0] - 1; (void)nb;
475             #line 476 "lib/PDL/Ufunc-pp-qsorti.c"
476 0 0         if (__privtrans->pdls[0]->nvals == 0) return PDL_err;
477 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
478 0           PDL_IF_BAD(if (PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,E,a_badval_isnan)) { (indx_datap)[0+(__inc_indx_n*(nb))] = n; nb--; }
479             else { (indx_datap)[0+(__inc_indx_n*(nn))] = n; nn++; } /* play safe since nn used more than once */
480             ,(indx_datap)[0+(__inc_indx_n*(n))] = n;)
481             }} /* Close n */
482             PDL_IF_BAD(if ( nn == 0 ) continue; nn -= 1;,)
483 0 0         qsort_ind_E (a_datap, indx_datap, 0, nn);}PDL_BROADCASTLOOP_END_qsorti_readdata
    0          
484 0           } break;
485 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in qsorti: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
486             }
487             #undef PDL_IF_BAD
488             }
489 13           return PDL_err;
490             }
491              
492             static pdl_datatypes pdl_qsorti_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 };
493             static PDL_Indx pdl_qsorti_vtable_realdims[] = { 1, 1 };
494             static char *pdl_qsorti_vtable_parnames[] = { "a","indx" };
495             static short pdl_qsorti_vtable_parflags[] = {
496             PDL_PARAM_ISNOTCOMPLEX|PDL_PARAM_ISPHYS,
497             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISPHYS|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
498             };
499             static pdl_datatypes pdl_qsorti_vtable_partypes[] = { -1, PDL_IND };
500             static PDL_Indx pdl_qsorti_vtable_realdims_starts[] = { 0, 1 };
501             static PDL_Indx pdl_qsorti_vtable_realdims_ind_ids[] = { 0, 0 };
502             static char *pdl_qsorti_vtable_indnames[] = { "n" };
503             pdl_transvtable pdl_qsorti_vtable = {
504             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_qsorti_vtable_gentypes, 1, 2, NULL /*CORE21*/,
505             pdl_qsorti_vtable_realdims, pdl_qsorti_vtable_parnames,
506             pdl_qsorti_vtable_parflags, pdl_qsorti_vtable_partypes,
507             pdl_qsorti_vtable_realdims_starts, pdl_qsorti_vtable_realdims_ind_ids, 2,
508             1, pdl_qsorti_vtable_indnames,
509             NULL, pdl_qsorti_readdata, NULL,
510             NULL,
511             0,"PDL::Ufunc::qsorti"
512             };
513              
514              
515 15           pdl_error pdl_run_qsorti(pdl *a,pdl *indx) {
516 15           pdl_error PDL_err = {0, NULL, 0};
517 15 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
518 15           pdl_trans *__privtrans = PDL->create_trans(&pdl_qsorti_vtable);
519 15 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
520 15           __privtrans->pdls[0] = a;
521 15           __privtrans->pdls[1] = indx;
522 15 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
523 15 100         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
524 14           return PDL_err;
525             }