File Coverage

lib/PDL/Ufunc-pp-pctover.c
Criterion Covered Total %
statement 49 619 7.9
branch 66 1932 3.4
condition n/a
subroutine n/a
pod n/a
total 115 2551 4.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-pctover.c"
23 532 0         PDL_TYPELIST_REAL(PDL_QSORT)
  0 0          
  532 0          
  0 0          
  0 0          
  0 0          
  0 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          
    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          
    0          
    0          
    0          
    0          
    0          
    0          
24              
25              
26             #line 1857 "lib/PDL/PP.pm"
27             pdl_error pdl_pctover_readdata(pdl_trans *__privtrans) {
28             pdl_error PDL_err = {0, NULL, 0};
29             #line 30 "lib/PDL/Ufunc-pp-pctover.c"
30 10           register PDL_Indx __n_size = __privtrans->ind_sizes[0];
31 10 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "broadcast.incs NULL");
32             /* broadcastloop declarations */
33             int __brcloopval;
34             register PDL_Indx __tind0,__tind1; /* counters along dim */
35 10           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
36             /* dims here are how many steps along those dims */
37 10           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
38 10           register PDL_Indx __tinc0_p = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
39 10           register PDL_Indx __tinc0_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
40 10           register PDL_Indx __tinc0_tmp = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,0);
41 10           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
42 10           register PDL_Indx __tinc1_p = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
43 10           register PDL_Indx __tinc1_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
44 10           register PDL_Indx __tinc1_tmp = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,1);
45             #define PDL_BROADCASTLOOP_START_pctover_readdata PDL_BROADCASTLOOP_START( \
46             readdata, \
47             __privtrans->broadcast, \
48             __privtrans->vtable, \
49             a_datap += __offsp[0]; \
50             p_datap += __offsp[1]; \
51             b_datap += __offsp[2]; \
52             tmp_datap += __offsp[3]; \
53             , \
54             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
55             ,p_datap += __tinc1_p - __tinc0_p * __tdims0 \
56             ,b_datap += __tinc1_b - __tinc0_b * __tdims0 \
57             ,tmp_datap += __tinc1_tmp - __tinc0_tmp * __tdims0 \
58             ), \
59             ( ,a_datap += __tinc0_a \
60             ,p_datap += __tinc0_p \
61             ,b_datap += __tinc0_b \
62             ,tmp_datap += __tinc0_tmp \
63             ) \
64             )
65             #define PDL_BROADCASTLOOP_END_pctover_readdata PDL_BROADCASTLOOP_END( \
66             __privtrans->broadcast, \
67             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
68             p_datap -= __tinc1_p * __tdims1 + __offsp[1]; \
69             b_datap -= __tinc1_b * __tdims1 + __offsp[2]; \
70             tmp_datap -= __tinc1_tmp * __tdims1 + __offsp[3]; \
71             )
72 10           register PDL_Indx __inc_a_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a_n;
73 10           register PDL_Indx __inc_tmp_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,3,0)]; (void)__inc_tmp_n;
74             #ifndef PDL_DECLARE_PARAMS_pctover_1
75             #define PDL_DECLARE_PARAMS_pctover_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
76             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
77             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, p, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
78             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, b, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP) \
79             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, tmp, (__privtrans->pdls[3]), 1, PDL_PPSYM_OP)
80             #endif
81 10 50         if ( __privtrans->bvalflag ) { /* ** do 'bad' Code ** */
82             #define PDL_BAD_CODE
83             #define PDL_IF_BAD(t,f) t
84 0           switch (__privtrans->__datatype) { /* Start generic switch */
85 0           case PDL_SB: {
86 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
87 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
88             #line 866 "lib/PDL/Ufunc.pd"
89              
90             if (__privtrans->pdls[0]->nvals == 0)
91             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
92             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
93             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
94             #line 871 "lib/PDL/Ufunc.pd"
95             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,A,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
96             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
97             }} /* Close n */
98             #line 874 "lib/PDL/Ufunc.pd"
99             PDL_IF_BAD(if ( nn == 0 ) {
100             (b_datap)[0]=b_badval;
101             } else {
102             nn -= 1;,{)
103             qsort_A (tmp_datap, 0, nn);
104             #line 105 "lib/PDL/Ufunc-pp-pctover.c"
105              
106             double np, pp1, pp2;
107 0           np = nn * (p_datap)[0];
108 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
109 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
110 0 0         if (nn == 0) {
111 0           pp1 = 0;
112 0           pp2 = 0;
113             } else {
114 0           pp1 = (double)nn1/(double)(nn);
115 0           pp2 = (double)nn2/(double)(nn);
116             }
117 0 0         if ( np <= 0.0 ) {
118 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
119 0 0         } else if ( np >= nn ) {
120 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
121 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
122 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
123 0 0         } else if ((p_datap)[0] == pp1) {
124 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
125 0 0         } else if ((p_datap)[0] == pp2) {
126 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
127             } else {
128 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
129             }
130 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
131 0           } break;
132 0           case PDL_B: {
133 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
134 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
135             #line 866 "lib/PDL/Ufunc.pd"
136              
137             if (__privtrans->pdls[0]->nvals == 0)
138             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
139             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
140             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
141             #line 871 "lib/PDL/Ufunc.pd"
142             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,B,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
143             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
144             }} /* Close n */
145             #line 874 "lib/PDL/Ufunc.pd"
146             PDL_IF_BAD(if ( nn == 0 ) {
147             (b_datap)[0]=b_badval;
148             } else {
149             nn -= 1;,{)
150             qsort_B (tmp_datap, 0, nn);
151             #line 152 "lib/PDL/Ufunc-pp-pctover.c"
152              
153             double np, pp1, pp2;
154 0           np = nn * (p_datap)[0];
155 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
156 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
157 0 0         if (nn == 0) {
158 0           pp1 = 0;
159 0           pp2 = 0;
160             } else {
161 0           pp1 = (double)nn1/(double)(nn);
162 0           pp2 = (double)nn2/(double)(nn);
163             }
164 0 0         if ( np <= 0.0 ) {
165 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
166 0 0         } else if ( np >= nn ) {
167 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
168 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
169 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
170 0 0         } else if ((p_datap)[0] == pp1) {
171 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
172 0 0         } else if ((p_datap)[0] == pp2) {
173 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
174             } else {
175 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
176             }
177 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
178 0           } break;
179 0           case PDL_S: {
180 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
181 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
182             #line 866 "lib/PDL/Ufunc.pd"
183              
184             if (__privtrans->pdls[0]->nvals == 0)
185             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
186             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
187             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
188             #line 871 "lib/PDL/Ufunc.pd"
189             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,S,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
190             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
191             }} /* Close n */
192             #line 874 "lib/PDL/Ufunc.pd"
193             PDL_IF_BAD(if ( nn == 0 ) {
194             (b_datap)[0]=b_badval;
195             } else {
196             nn -= 1;,{)
197             qsort_S (tmp_datap, 0, nn);
198             #line 199 "lib/PDL/Ufunc-pp-pctover.c"
199              
200             double np, pp1, pp2;
201 0           np = nn * (p_datap)[0];
202 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
203 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
204 0 0         if (nn == 0) {
205 0           pp1 = 0;
206 0           pp2 = 0;
207             } else {
208 0           pp1 = (double)nn1/(double)(nn);
209 0           pp2 = (double)nn2/(double)(nn);
210             }
211 0 0         if ( np <= 0.0 ) {
212 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
213 0 0         } else if ( np >= nn ) {
214 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
215 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
216 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
217 0 0         } else if ((p_datap)[0] == pp1) {
218 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
219 0 0         } else if ((p_datap)[0] == pp2) {
220 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
221             } else {
222 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
223             }
224 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
225 0           } break;
226 0           case PDL_US: {
227 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
228 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
229             #line 866 "lib/PDL/Ufunc.pd"
230              
231             if (__privtrans->pdls[0]->nvals == 0)
232             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
233             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
234             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
235             #line 871 "lib/PDL/Ufunc.pd"
236             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,U,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
237             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
238             }} /* Close n */
239             #line 874 "lib/PDL/Ufunc.pd"
240             PDL_IF_BAD(if ( nn == 0 ) {
241             (b_datap)[0]=b_badval;
242             } else {
243             nn -= 1;,{)
244             qsort_U (tmp_datap, 0, nn);
245             #line 246 "lib/PDL/Ufunc-pp-pctover.c"
246              
247             double np, pp1, pp2;
248 0           np = nn * (p_datap)[0];
249 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
250 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
251 0 0         if (nn == 0) {
252 0           pp1 = 0;
253 0           pp2 = 0;
254             } else {
255 0           pp1 = (double)nn1/(double)(nn);
256 0           pp2 = (double)nn2/(double)(nn);
257             }
258 0 0         if ( np <= 0.0 ) {
259 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
260 0 0         } else if ( np >= nn ) {
261 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
262 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
263 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
264 0 0         } else if ((p_datap)[0] == pp1) {
265 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
266 0 0         } else if ((p_datap)[0] == pp2) {
267 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
268             } else {
269 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
270             }
271 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
272 0           } break;
273 0           case PDL_L: {
274 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
275 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
276             #line 866 "lib/PDL/Ufunc.pd"
277              
278             if (__privtrans->pdls[0]->nvals == 0)
279             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
280             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
281             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
282             #line 871 "lib/PDL/Ufunc.pd"
283             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,L,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
284             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
285             }} /* Close n */
286             #line 874 "lib/PDL/Ufunc.pd"
287             PDL_IF_BAD(if ( nn == 0 ) {
288             (b_datap)[0]=b_badval;
289             } else {
290             nn -= 1;,{)
291             qsort_L (tmp_datap, 0, nn);
292             #line 293 "lib/PDL/Ufunc-pp-pctover.c"
293              
294             double np, pp1, pp2;
295 0           np = nn * (p_datap)[0];
296 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
297 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
298 0 0         if (nn == 0) {
299 0           pp1 = 0;
300 0           pp2 = 0;
301             } else {
302 0           pp1 = (double)nn1/(double)(nn);
303 0           pp2 = (double)nn2/(double)(nn);
304             }
305 0 0         if ( np <= 0.0 ) {
306 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
307 0 0         } else if ( np >= nn ) {
308 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
309 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
310 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
311 0 0         } else if ((p_datap)[0] == pp1) {
312 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
313 0 0         } else if ((p_datap)[0] == pp2) {
314 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
315             } else {
316 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
317             }
318 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
319 0           } break;
320 0           case PDL_UL: {
321 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
322 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
323             #line 866 "lib/PDL/Ufunc.pd"
324              
325             if (__privtrans->pdls[0]->nvals == 0)
326             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
327             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
328             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
329             #line 871 "lib/PDL/Ufunc.pd"
330             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,K,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
331             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
332             }} /* Close n */
333             #line 874 "lib/PDL/Ufunc.pd"
334             PDL_IF_BAD(if ( nn == 0 ) {
335             (b_datap)[0]=b_badval;
336             } else {
337             nn -= 1;,{)
338             qsort_K (tmp_datap, 0, nn);
339             #line 340 "lib/PDL/Ufunc-pp-pctover.c"
340              
341             double np, pp1, pp2;
342 0           np = nn * (p_datap)[0];
343 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
344 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
345 0 0         if (nn == 0) {
346 0           pp1 = 0;
347 0           pp2 = 0;
348             } else {
349 0           pp1 = (double)nn1/(double)(nn);
350 0           pp2 = (double)nn2/(double)(nn);
351             }
352 0 0         if ( np <= 0.0 ) {
353 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
354 0 0         } else if ( np >= nn ) {
355 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
356 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
357 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
358 0 0         } else if ((p_datap)[0] == pp1) {
359 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
360 0 0         } else if ((p_datap)[0] == pp2) {
361 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
362             } else {
363 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
364             }
365 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
366 0           } break;
367 0           case PDL_IND: {
368 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
369 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
370             #line 866 "lib/PDL/Ufunc.pd"
371              
372             if (__privtrans->pdls[0]->nvals == 0)
373             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
374             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
375             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
376             #line 871 "lib/PDL/Ufunc.pd"
377             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,N,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
378             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
379             }} /* Close n */
380             #line 874 "lib/PDL/Ufunc.pd"
381             PDL_IF_BAD(if ( nn == 0 ) {
382             (b_datap)[0]=b_badval;
383             } else {
384             nn -= 1;,{)
385             qsort_N (tmp_datap, 0, nn);
386             #line 387 "lib/PDL/Ufunc-pp-pctover.c"
387              
388             double np, pp1, pp2;
389 0           np = nn * (p_datap)[0];
390 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
391 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
392 0 0         if (nn == 0) {
393 0           pp1 = 0;
394 0           pp2 = 0;
395             } else {
396 0           pp1 = (double)nn1/(double)(nn);
397 0           pp2 = (double)nn2/(double)(nn);
398             }
399 0 0         if ( np <= 0.0 ) {
400 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
401 0 0         } else if ( np >= nn ) {
402 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
403 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
404 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
405 0 0         } else if ((p_datap)[0] == pp1) {
406 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
407 0 0         } else if ((p_datap)[0] == pp2) {
408 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
409             } else {
410 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
411             }
412 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
413 0           } break;
414 0           case PDL_ULL: {
415 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
416 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
417             #line 866 "lib/PDL/Ufunc.pd"
418              
419             if (__privtrans->pdls[0]->nvals == 0)
420             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
421             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
422             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
423             #line 871 "lib/PDL/Ufunc.pd"
424             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,P,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
425             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
426             }} /* Close n */
427             #line 874 "lib/PDL/Ufunc.pd"
428             PDL_IF_BAD(if ( nn == 0 ) {
429             (b_datap)[0]=b_badval;
430             } else {
431             nn -= 1;,{)
432             qsort_P (tmp_datap, 0, nn);
433             #line 434 "lib/PDL/Ufunc-pp-pctover.c"
434              
435             double np, pp1, pp2;
436 0           np = nn * (p_datap)[0];
437 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
438 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
439 0 0         if (nn == 0) {
440 0           pp1 = 0;
441 0           pp2 = 0;
442             } else {
443 0           pp1 = (double)nn1/(double)(nn);
444 0           pp2 = (double)nn2/(double)(nn);
445             }
446 0 0         if ( np <= 0.0 ) {
447 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
448 0 0         } else if ( np >= nn ) {
449 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
450 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
451 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
452 0 0         } else if ((p_datap)[0] == pp1) {
453 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
454 0 0         } else if ((p_datap)[0] == pp2) {
455 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
456             } else {
457 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
458             }
459 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
460 0           } break;
461 0           case PDL_LL: {
462 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
463 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
464             #line 866 "lib/PDL/Ufunc.pd"
465              
466             if (__privtrans->pdls[0]->nvals == 0)
467             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
468             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
469             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
470             #line 871 "lib/PDL/Ufunc.pd"
471             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,Q,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
472             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
473             }} /* Close n */
474             #line 874 "lib/PDL/Ufunc.pd"
475             PDL_IF_BAD(if ( nn == 0 ) {
476             (b_datap)[0]=b_badval;
477             } else {
478             nn -= 1;,{)
479             qsort_Q (tmp_datap, 0, nn);
480             #line 481 "lib/PDL/Ufunc-pp-pctover.c"
481              
482             double np, pp1, pp2;
483 0           np = nn * (p_datap)[0];
484 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
485 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
486 0 0         if (nn == 0) {
487 0           pp1 = 0;
488 0           pp2 = 0;
489             } else {
490 0           pp1 = (double)nn1/(double)(nn);
491 0           pp2 = (double)nn2/(double)(nn);
492             }
493 0 0         if ( np <= 0.0 ) {
494 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
495 0 0         } else if ( np >= nn ) {
496 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
497 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
498 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
499 0 0         } else if ((p_datap)[0] == pp1) {
500 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
501 0 0         } else if ((p_datap)[0] == pp2) {
502 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
503             } else {
504 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
505             }
506 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
507 0           } break;
508 0           case PDL_F: {
509 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
510 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
511             #line 866 "lib/PDL/Ufunc.pd"
512              
513             if (__privtrans->pdls[0]->nvals == 0)
514             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
515             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
516             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
517             #line 871 "lib/PDL/Ufunc.pd"
518             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,F,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
519             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
520             }} /* Close n */
521             #line 874 "lib/PDL/Ufunc.pd"
522             PDL_IF_BAD(if ( nn == 0 ) {
523             (b_datap)[0]=b_badval;
524             } else {
525             nn -= 1;,{)
526             qsort_F (tmp_datap, 0, nn);
527             #line 528 "lib/PDL/Ufunc-pp-pctover.c"
528              
529             double np, pp1, pp2;
530 0           np = nn * (p_datap)[0];
531 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
532 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
533 0 0         if (nn == 0) {
534 0           pp1 = 0;
535 0           pp2 = 0;
536             } else {
537 0           pp1 = (double)nn1/(double)(nn);
538 0           pp2 = (double)nn2/(double)(nn);
539             }
540 0 0         if ( np <= 0.0 ) {
541 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
542 0 0         } else if ( np >= nn ) {
543 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
544 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
545 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
546 0 0         } else if ((p_datap)[0] == pp1) {
547 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
548 0 0         } else if ((p_datap)[0] == pp2) {
549 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
550             } else {
551 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
552             }
553 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
554 0           } break;
555 0           case PDL_D: {
556 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Double,D)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
557 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
558             #line 866 "lib/PDL/Ufunc.pd"
559              
560             if (__privtrans->pdls[0]->nvals == 0)
561             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
562             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
563             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
564             #line 871 "lib/PDL/Ufunc.pd"
565             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,D,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
566             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
567             }} /* Close n */
568             #line 874 "lib/PDL/Ufunc.pd"
569             PDL_IF_BAD(if ( nn == 0 ) {
570             (b_datap)[0]=b_badval;
571             } else {
572             nn -= 1;,{)
573             qsort_D (tmp_datap, 0, nn);
574             #line 575 "lib/PDL/Ufunc-pp-pctover.c"
575              
576             double np, pp1, pp2;
577 0           np = nn * (p_datap)[0];
578 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
579 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
580 0 0         if (nn == 0) {
581 0           pp1 = 0;
582 0           pp2 = 0;
583             } else {
584 0           pp1 = (double)nn1/(double)(nn);
585 0           pp2 = (double)nn2/(double)(nn);
586             }
587 0 0         if ( np <= 0.0 ) {
588 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
589 0 0         } else if ( np >= nn ) {
590 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
591 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
592 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
593 0 0         } else if ((p_datap)[0] == pp1) {
594 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
595 0 0         } else if ((p_datap)[0] == pp2) {
596 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
597             } else {
598 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
599             }
600 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
601 0           } break;
602 0           case PDL_LD: {
603 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
604 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
605             #line 866 "lib/PDL/Ufunc.pd"
606              
607             if (__privtrans->pdls[0]->nvals == 0)
608             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
609             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
610             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
611             #line 871 "lib/PDL/Ufunc.pd"
612             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,E,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
613             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
614             }} /* Close n */
615             #line 874 "lib/PDL/Ufunc.pd"
616             PDL_IF_BAD(if ( nn == 0 ) {
617             (b_datap)[0]=b_badval;
618             } else {
619             nn -= 1;,{)
620             qsort_E (tmp_datap, 0, nn);
621             #line 622 "lib/PDL/Ufunc-pp-pctover.c"
622              
623             double np, pp1, pp2;
624 0           np = nn * (p_datap)[0];
625 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
626 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
627 0 0         if (nn == 0) {
628 0           pp1 = 0;
629 0           pp2 = 0;
630             } else {
631 0           pp1 = (double)nn1/(double)(nn);
632 0           pp2 = (double)nn2/(double)(nn);
633             }
634 0 0         if ( np <= 0.0 ) {
635 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
636 0 0         } else if ( np >= nn ) {
637 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
638 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
639 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
640 0 0         } else if ((p_datap)[0] == pp1) {
641 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
642 0 0         } else if ((p_datap)[0] == pp2) {
643 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
644             } else {
645 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
646             }
647 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
648 0           } break;
649 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in pctover: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
650             }
651             #undef PDL_BAD_CODE
652             #undef PDL_IF_BAD
653             } else { /* ** else do 'good' Code ** */
654             #define PDL_IF_BAD(t,f) f
655 10           switch (__privtrans->__datatype) { /* Start generic switch */
656 0           case PDL_SB: {
657 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
658 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
659             #line 866 "lib/PDL/Ufunc.pd"
660              
661             if (__privtrans->pdls[0]->nvals == 0)
662             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
663             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
664             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
665             #line 871 "lib/PDL/Ufunc.pd"
666             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,A,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
667             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
668             }} /* Close n */
669             #line 874 "lib/PDL/Ufunc.pd"
670             PDL_IF_BAD(if ( nn == 0 ) {
671             (b_datap)[0]=b_badval;
672             } else {
673             nn -= 1;,{)
674             qsort_A (tmp_datap, 0, nn);
675             #line 676 "lib/PDL/Ufunc-pp-pctover.c"
676              
677             double np, pp1, pp2;
678 0           np = nn * (p_datap)[0];
679 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
680 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
681 0 0         if (nn == 0) {
682 0           pp1 = 0;
683 0           pp2 = 0;
684             } else {
685 0           pp1 = (double)nn1/(double)(nn);
686 0           pp2 = (double)nn2/(double)(nn);
687             }
688 0 0         if ( np <= 0.0 ) {
689 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
690 0 0         } else if ( np >= nn ) {
691 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
692 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
693 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
694 0 0         } else if ((p_datap)[0] == pp1) {
695 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
696 0 0         } else if ((p_datap)[0] == pp2) {
697 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
698             } else {
699 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
700             }
701 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
702 0           } break;
703 0           case PDL_B: {
704 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
705 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
706             #line 866 "lib/PDL/Ufunc.pd"
707              
708             if (__privtrans->pdls[0]->nvals == 0)
709             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
710             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
711             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
712             #line 871 "lib/PDL/Ufunc.pd"
713             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,B,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
714             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
715             }} /* Close n */
716             #line 874 "lib/PDL/Ufunc.pd"
717             PDL_IF_BAD(if ( nn == 0 ) {
718             (b_datap)[0]=b_badval;
719             } else {
720             nn -= 1;,{)
721             qsort_B (tmp_datap, 0, nn);
722             #line 723 "lib/PDL/Ufunc-pp-pctover.c"
723              
724             double np, pp1, pp2;
725 0           np = nn * (p_datap)[0];
726 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
727 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
728 0 0         if (nn == 0) {
729 0           pp1 = 0;
730 0           pp2 = 0;
731             } else {
732 0           pp1 = (double)nn1/(double)(nn);
733 0           pp2 = (double)nn2/(double)(nn);
734             }
735 0 0         if ( np <= 0.0 ) {
736 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
737 0 0         } else if ( np >= nn ) {
738 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
739 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
740 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
741 0 0         } else if ((p_datap)[0] == pp1) {
742 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
743 0 0         } else if ((p_datap)[0] == pp2) {
744 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
745             } else {
746 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
747             }
748 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
749 0           } break;
750 0           case PDL_S: {
751 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
752 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
753             #line 866 "lib/PDL/Ufunc.pd"
754              
755             if (__privtrans->pdls[0]->nvals == 0)
756             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
757             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
758             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
759             #line 871 "lib/PDL/Ufunc.pd"
760             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,S,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
761             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
762             }} /* Close n */
763             #line 874 "lib/PDL/Ufunc.pd"
764             PDL_IF_BAD(if ( nn == 0 ) {
765             (b_datap)[0]=b_badval;
766             } else {
767             nn -= 1;,{)
768             qsort_S (tmp_datap, 0, nn);
769             #line 770 "lib/PDL/Ufunc-pp-pctover.c"
770              
771             double np, pp1, pp2;
772 0           np = nn * (p_datap)[0];
773 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
774 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
775 0 0         if (nn == 0) {
776 0           pp1 = 0;
777 0           pp2 = 0;
778             } else {
779 0           pp1 = (double)nn1/(double)(nn);
780 0           pp2 = (double)nn2/(double)(nn);
781             }
782 0 0         if ( np <= 0.0 ) {
783 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
784 0 0         } else if ( np >= nn ) {
785 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
786 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
787 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
788 0 0         } else if ((p_datap)[0] == pp1) {
789 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
790 0 0         } else if ((p_datap)[0] == pp2) {
791 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
792             } else {
793 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
794             }
795 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
796 0           } break;
797 0           case PDL_US: {
798 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
799 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
800             #line 866 "lib/PDL/Ufunc.pd"
801              
802             if (__privtrans->pdls[0]->nvals == 0)
803             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
804             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
805             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
806             #line 871 "lib/PDL/Ufunc.pd"
807             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,U,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
808             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
809             }} /* Close n */
810             #line 874 "lib/PDL/Ufunc.pd"
811             PDL_IF_BAD(if ( nn == 0 ) {
812             (b_datap)[0]=b_badval;
813             } else {
814             nn -= 1;,{)
815             qsort_U (tmp_datap, 0, nn);
816             #line 817 "lib/PDL/Ufunc-pp-pctover.c"
817              
818             double np, pp1, pp2;
819 0           np = nn * (p_datap)[0];
820 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
821 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
822 0 0         if (nn == 0) {
823 0           pp1 = 0;
824 0           pp2 = 0;
825             } else {
826 0           pp1 = (double)nn1/(double)(nn);
827 0           pp2 = (double)nn2/(double)(nn);
828             }
829 0 0         if ( np <= 0.0 ) {
830 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
831 0 0         } else if ( np >= nn ) {
832 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
833 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
834 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
835 0 0         } else if ((p_datap)[0] == pp1) {
836 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
837 0 0         } else if ((p_datap)[0] == pp2) {
838 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
839             } else {
840 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
841             }
842 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
843 0           } break;
844 0           case PDL_L: {
845 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
846 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
847             #line 866 "lib/PDL/Ufunc.pd"
848              
849             if (__privtrans->pdls[0]->nvals == 0)
850             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
851             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
852             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
853             #line 871 "lib/PDL/Ufunc.pd"
854             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,L,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
855             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
856             }} /* Close n */
857             #line 874 "lib/PDL/Ufunc.pd"
858             PDL_IF_BAD(if ( nn == 0 ) {
859             (b_datap)[0]=b_badval;
860             } else {
861             nn -= 1;,{)
862             qsort_L (tmp_datap, 0, nn);
863             #line 864 "lib/PDL/Ufunc-pp-pctover.c"
864              
865             double np, pp1, pp2;
866 0           np = nn * (p_datap)[0];
867 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
868 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
869 0 0         if (nn == 0) {
870 0           pp1 = 0;
871 0           pp2 = 0;
872             } else {
873 0           pp1 = (double)nn1/(double)(nn);
874 0           pp2 = (double)nn2/(double)(nn);
875             }
876 0 0         if ( np <= 0.0 ) {
877 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
878 0 0         } else if ( np >= nn ) {
879 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
880 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
881 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
882 0 0         } else if ((p_datap)[0] == pp1) {
883 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
884 0 0         } else if ((p_datap)[0] == pp2) {
885 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
886             } else {
887 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
888             }
889 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
890 0           } break;
891 0           case PDL_UL: {
892 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
893 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
894             #line 866 "lib/PDL/Ufunc.pd"
895              
896             if (__privtrans->pdls[0]->nvals == 0)
897             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
898             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
899             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
900             #line 871 "lib/PDL/Ufunc.pd"
901             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,K,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
902             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
903             }} /* Close n */
904             #line 874 "lib/PDL/Ufunc.pd"
905             PDL_IF_BAD(if ( nn == 0 ) {
906             (b_datap)[0]=b_badval;
907             } else {
908             nn -= 1;,{)
909             qsort_K (tmp_datap, 0, nn);
910             #line 911 "lib/PDL/Ufunc-pp-pctover.c"
911              
912             double np, pp1, pp2;
913 0           np = nn * (p_datap)[0];
914 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
915 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
916 0 0         if (nn == 0) {
917 0           pp1 = 0;
918 0           pp2 = 0;
919             } else {
920 0           pp1 = (double)nn1/(double)(nn);
921 0           pp2 = (double)nn2/(double)(nn);
922             }
923 0 0         if ( np <= 0.0 ) {
924 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
925 0 0         } else if ( np >= nn ) {
926 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
927 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
928 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
929 0 0         } else if ((p_datap)[0] == pp1) {
930 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
931 0 0         } else if ((p_datap)[0] == pp2) {
932 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
933             } else {
934 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
935             }
936 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
937 0           } break;
938 0           case PDL_IND: {
939 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
940 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
941             #line 866 "lib/PDL/Ufunc.pd"
942              
943             if (__privtrans->pdls[0]->nvals == 0)
944             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
945             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
946             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
947             #line 871 "lib/PDL/Ufunc.pd"
948             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,N,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
949             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
950             }} /* Close n */
951             #line 874 "lib/PDL/Ufunc.pd"
952             PDL_IF_BAD(if ( nn == 0 ) {
953             (b_datap)[0]=b_badval;
954             } else {
955             nn -= 1;,{)
956             qsort_N (tmp_datap, 0, nn);
957             #line 958 "lib/PDL/Ufunc-pp-pctover.c"
958              
959             double np, pp1, pp2;
960 0           np = nn * (p_datap)[0];
961 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
962 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
963 0 0         if (nn == 0) {
964 0           pp1 = 0;
965 0           pp2 = 0;
966             } else {
967 0           pp1 = (double)nn1/(double)(nn);
968 0           pp2 = (double)nn2/(double)(nn);
969             }
970 0 0         if ( np <= 0.0 ) {
971 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
972 0 0         } else if ( np >= nn ) {
973 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
974 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
975 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
976 0 0         } else if ((p_datap)[0] == pp1) {
977 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
978 0 0         } else if ((p_datap)[0] == pp2) {
979 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
980             } else {
981 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
982             }
983 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
984 0           } break;
985 0           case PDL_ULL: {
986 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
987 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
988             #line 866 "lib/PDL/Ufunc.pd"
989              
990             if (__privtrans->pdls[0]->nvals == 0)
991             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
992             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
993             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
994             #line 871 "lib/PDL/Ufunc.pd"
995             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,P,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
996             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
997             }} /* Close n */
998             #line 874 "lib/PDL/Ufunc.pd"
999             PDL_IF_BAD(if ( nn == 0 ) {
1000             (b_datap)[0]=b_badval;
1001             } else {
1002             nn -= 1;,{)
1003             qsort_P (tmp_datap, 0, nn);
1004             #line 1005 "lib/PDL/Ufunc-pp-pctover.c"
1005              
1006             double np, pp1, pp2;
1007 0           np = nn * (p_datap)[0];
1008 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
1009 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
1010 0 0         if (nn == 0) {
1011 0           pp1 = 0;
1012 0           pp2 = 0;
1013             } else {
1014 0           pp1 = (double)nn1/(double)(nn);
1015 0           pp2 = (double)nn2/(double)(nn);
1016             }
1017 0 0         if ( np <= 0.0 ) {
1018 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
1019 0 0         } else if ( np >= nn ) {
1020 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
1021 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
1022 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1023 0 0         } else if ((p_datap)[0] == pp1) {
1024 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1025 0 0         } else if ((p_datap)[0] == pp2) {
1026 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
1027             } else {
1028 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1029             }
1030 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
1031 0           } break;
1032 0           case PDL_LL: {
1033 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1034 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1035             #line 866 "lib/PDL/Ufunc.pd"
1036              
1037             if (__privtrans->pdls[0]->nvals == 0)
1038             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
1039             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
1040             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1041             #line 871 "lib/PDL/Ufunc.pd"
1042             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,Q,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
1043             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
1044             }} /* Close n */
1045             #line 874 "lib/PDL/Ufunc.pd"
1046             PDL_IF_BAD(if ( nn == 0 ) {
1047             (b_datap)[0]=b_badval;
1048             } else {
1049             nn -= 1;,{)
1050             qsort_Q (tmp_datap, 0, nn);
1051             #line 1052 "lib/PDL/Ufunc-pp-pctover.c"
1052              
1053             double np, pp1, pp2;
1054 0           np = nn * (p_datap)[0];
1055 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
1056 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
1057 0 0         if (nn == 0) {
1058 0           pp1 = 0;
1059 0           pp2 = 0;
1060             } else {
1061 0           pp1 = (double)nn1/(double)(nn);
1062 0           pp2 = (double)nn2/(double)(nn);
1063             }
1064 0 0         if ( np <= 0.0 ) {
1065 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
1066 0 0         } else if ( np >= nn ) {
1067 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
1068 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
1069 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1070 0 0         } else if ((p_datap)[0] == pp1) {
1071 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1072 0 0         } else if ((p_datap)[0] == pp2) {
1073 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
1074             } else {
1075 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1076             }
1077 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
1078 0           } break;
1079 0           case PDL_F: {
1080 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1081 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1082             #line 866 "lib/PDL/Ufunc.pd"
1083              
1084             if (__privtrans->pdls[0]->nvals == 0)
1085             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
1086             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
1087             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1088             #line 871 "lib/PDL/Ufunc.pd"
1089             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,F,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
1090             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
1091             }} /* Close n */
1092             #line 874 "lib/PDL/Ufunc.pd"
1093             PDL_IF_BAD(if ( nn == 0 ) {
1094             (b_datap)[0]=b_badval;
1095             } else {
1096             nn -= 1;,{)
1097             qsort_F (tmp_datap, 0, nn);
1098             #line 1099 "lib/PDL/Ufunc-pp-pctover.c"
1099              
1100             double np, pp1, pp2;
1101 0           np = nn * (p_datap)[0];
1102 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
1103 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
1104 0 0         if (nn == 0) {
1105 0           pp1 = 0;
1106 0           pp2 = 0;
1107             } else {
1108 0           pp1 = (double)nn1/(double)(nn);
1109 0           pp2 = (double)nn2/(double)(nn);
1110             }
1111 0 0         if ( np <= 0.0 ) {
1112 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
1113 0 0         } else if ( np >= nn ) {
1114 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
1115 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
1116 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1117 0 0         } else if ((p_datap)[0] == pp1) {
1118 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1119 0 0         } else if ((p_datap)[0] == pp2) {
1120 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
1121             } else {
1122 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1123             }
1124 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
1125 0           } break;
1126 10           case PDL_D: {
1127 10 50         PDL_DECLARE_PARAMS_pctover_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
1128 40 50         PDL_BROADCASTLOOP_START_pctover_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
1129             #line 866 "lib/PDL/Ufunc.pd"
1130              
1131             if (__privtrans->pdls[0]->nvals == 0)
1132             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
1133             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
1134             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1135             #line 871 "lib/PDL/Ufunc.pd"
1136             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,D,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
1137             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
1138             }} /* Close n */
1139             #line 874 "lib/PDL/Ufunc.pd"
1140             PDL_IF_BAD(if ( nn == 0 ) {
1141             (b_datap)[0]=b_badval;
1142             } else {
1143             nn -= 1;,{)
1144             qsort_D (tmp_datap, 0, nn);
1145             #line 1146 "lib/PDL/Ufunc-pp-pctover.c"
1146              
1147             double np, pp1, pp2;
1148 10           np = nn * (p_datap)[0];
1149 10 100         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    100          
    100          
1150 10 100         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    100          
    100          
1151 10 50         if (nn == 0) {
1152 0           pp1 = 0;
1153 0           pp2 = 0;
1154             } else {
1155 10           pp1 = (double)nn1/(double)(nn);
1156 10           pp2 = (double)nn2/(double)(nn);
1157             }
1158 10 100         if ( np <= 0.0 ) {
1159 2           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
1160 8 100         } else if ( np >= nn ) {
1161 2           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
1162 6 50         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
1163 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1164 6 100         } else if ((p_datap)[0] == pp1) {
1165 1           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1166 5 50         } else if ((p_datap)[0] == pp2) {
1167 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
1168             } else {
1169 5           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1170             }
1171 10 50         }}PDL_BROADCASTLOOP_END_pctover_readdata
    50          
1172 10           } break;
1173 0           case PDL_LD: {
1174 0 0         PDL_DECLARE_PARAMS_pctover_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1175 0 0         PDL_BROADCASTLOOP_START_pctover_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
1176             #line 866 "lib/PDL/Ufunc.pd"
1177              
1178             if (__privtrans->pdls[0]->nvals == 0)
1179             return PDL->make_error(PDL_EUSERERROR, "Error in pctover:" "cannot process empty ndarray");
1180             PDL_Indx nn = PDL_IF_BAD(0,__privtrans->ind_sizes[0]-1);
1181             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
1182             #line 871 "lib/PDL/Ufunc.pd"
1183             PDL_IF_BAD(if ( !PDL_ISBAD2((a_datap)[0+(__inc_a_n*(n))],a_badval,E,a_badval_isnan) ) { (tmp_datap)[0+(__inc_tmp_n*(nn))] = (a_datap)[0+(__inc_a_n*(n))]; nn++; },
1184             (tmp_datap)[0+(__inc_tmp_n*(n))] = (a_datap)[0+(__inc_a_n*(n))];)
1185             }} /* Close n */
1186             #line 874 "lib/PDL/Ufunc.pd"
1187             PDL_IF_BAD(if ( nn == 0 ) {
1188             (b_datap)[0]=b_badval;
1189             } else {
1190             nn -= 1;,{)
1191             qsort_E (tmp_datap, 0, nn);
1192             #line 1193 "lib/PDL/Ufunc-pp-pctover.c"
1193              
1194             double np, pp1, pp2;
1195 0           np = nn * (p_datap)[0];
1196 0 0         PDL_Indx nn1 = PDLMIN(nn,PDLMAX(0,np));
    0          
    0          
1197 0 0         PDL_Indx nn2 = PDLMIN(nn,PDLMAX(0,np+1));
    0          
    0          
1198 0 0         if (nn == 0) {
1199 0           pp1 = 0;
1200 0           pp2 = 0;
1201             } else {
1202 0           pp1 = (double)nn1/(double)(nn);
1203 0           pp2 = (double)nn2/(double)(nn);
1204             }
1205 0 0         if ( np <= 0.0 ) {
1206 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(0))];
1207 0 0         } else if ( np >= nn ) {
1208 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn))];
1209 0 0         } else if ((tmp_datap)[0+(__inc_tmp_n*(nn2))] == (tmp_datap)[0+(__inc_tmp_n*(nn1))]) {
1210 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1211 0 0         } else if ((p_datap)[0] == pp1) {
1212 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1213 0 0         } else if ((p_datap)[0] == pp2) {
1214 0           (b_datap)[0] = (tmp_datap)[0+(__inc_tmp_n*(nn2))];
1215             } else {
1216 0           (b_datap)[0] = (np - nn1)*((tmp_datap)[0+(__inc_tmp_n*(nn2))] - (tmp_datap)[0+(__inc_tmp_n*(nn1))]) + (tmp_datap)[0+(__inc_tmp_n*(nn1))];
1217             }
1218 0 0         }}PDL_BROADCASTLOOP_END_pctover_readdata
    0          
1219 0           } break;
1220 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in pctover: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
1221             }
1222             #undef PDL_IF_BAD
1223             }
1224 10           return PDL_err;
1225             }
1226              
1227             static pdl_datatypes pdl_pctover_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 };
1228             static PDL_Indx pdl_pctover_vtable_realdims[] = { 1, 0, 0, 1 };
1229             static char *pdl_pctover_vtable_parnames[] = { "a","p","b","tmp" };
1230             static short pdl_pctover_vtable_parflags[] = {
1231             0,
1232             0,
1233             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE,
1234             PDL_PARAM_ISCREAT|PDL_PARAM_ISPHYS|PDL_PARAM_ISTEMP|PDL_PARAM_ISWRITE
1235             };
1236             static pdl_datatypes pdl_pctover_vtable_partypes[] = { -1, -1, -1, -1 };
1237             static PDL_Indx pdl_pctover_vtable_realdims_starts[] = { 0, 1, 1, 1 };
1238             static PDL_Indx pdl_pctover_vtable_realdims_ind_ids[] = { 0, 0 };
1239             static char *pdl_pctover_vtable_indnames[] = { "n" };
1240             pdl_transvtable pdl_pctover_vtable = {
1241             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_pctover_vtable_gentypes, 2, 4, NULL /*CORE21*/,
1242             pdl_pctover_vtable_realdims, pdl_pctover_vtable_parnames,
1243             pdl_pctover_vtable_parflags, pdl_pctover_vtable_partypes,
1244             pdl_pctover_vtable_realdims_starts, pdl_pctover_vtable_realdims_ind_ids, 2,
1245             1, pdl_pctover_vtable_indnames,
1246             NULL, pdl_pctover_readdata, NULL,
1247             NULL,
1248             0,"PDL::Ufunc::pctover"
1249             };
1250              
1251              
1252 10           pdl_error pdl_run_pctover(pdl *a,pdl *p,pdl *b) {
1253 10           pdl_error PDL_err = {0, NULL, 0};
1254 10 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
1255 10           pdl_trans *__privtrans = PDL->create_trans(&pdl_pctover_vtable);
1256 10 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
1257 10           __privtrans->pdls[0] = a;
1258 10           __privtrans->pdls[1] = p;
1259 10           __privtrans->pdls[2] = b;
1260 10 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
1261 10 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
1262 10           return PDL_err;
1263             }