File Coverage

lib/PDL/Primitive-pp-intersect_sorted.c
Criterion Covered Total %
statement 49 259 18.9
branch 46 684 6.7
condition n/a
subroutine n/a
pod n/a
total 95 943 10.0


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/Primitive.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_Primitive
21             extern Core* PDL; /* Structure hold core C functions */
22              
23             #line 1857 "lib/PDL/PP.pm"
24             pdl_error pdl_intersect_sorted_redodims(pdl_trans *__privtrans) {
25             pdl_error PDL_err = {0, NULL, 0};
26             #line 27 "lib/PDL/Primitive-pp-intersect_sorted.c"
27 11           __privtrans->ind_sizes[2] = PDLMIN(__privtrans->ind_sizes[0],__privtrans->ind_sizes[1]);
28 11 50         PDL_RETERROR(PDL_err, PDL->redodims_default(__privtrans));
29 11           return PDL_err;
30             }
31              
32              
33             #line 1857 "lib/PDL/PP.pm"
34             pdl_error pdl_intersect_sorted_readdata(pdl_trans *__privtrans) {
35             pdl_error PDL_err = {0, NULL, 0};
36             #line 37 "lib/PDL/Primitive-pp-intersect_sorted.c"
37 11 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in intersect_sorted:" "broadcast.incs NULL");
38             /* broadcastloop declarations */
39             int __brcloopval;
40             register PDL_Indx __tind0,__tind1; /* counters along dim */
41 11           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
42             /* dims here are how many steps along those dims */
43 11           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
44 11           register PDL_Indx __tinc0_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
45 11           register PDL_Indx __tinc0_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
46 11           register PDL_Indx __tinc0_nc = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,0);
47 11           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
48 11           register PDL_Indx __tinc1_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
49 11           register PDL_Indx __tinc1_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
50 11           register PDL_Indx __tinc1_nc = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,1);
51             #define PDL_BROADCASTLOOP_START_intersect_sorted_readdata PDL_BROADCASTLOOP_START( \
52             readdata, \
53             __privtrans->broadcast, \
54             __privtrans->vtable, \
55             a_datap += __offsp[0]; \
56             b_datap += __offsp[1]; \
57             c_datap += __offsp[2]; \
58             nc_datap += __offsp[3]; \
59             , \
60             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
61             ,b_datap += __tinc1_b - __tinc0_b * __tdims0 \
62             ,c_datap += __tinc1_c - __tinc0_c * __tdims0 \
63             ,nc_datap += __tinc1_nc - __tinc0_nc * __tdims0 \
64             ), \
65             ( ,a_datap += __tinc0_a \
66             ,b_datap += __tinc0_b \
67             ,c_datap += __tinc0_c \
68             ,nc_datap += __tinc0_nc \
69             ) \
70             )
71             #define PDL_BROADCASTLOOP_END_intersect_sorted_readdata PDL_BROADCASTLOOP_END( \
72             __privtrans->broadcast, \
73             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
74             b_datap -= __tinc1_b * __tdims1 + __offsp[1]; \
75             c_datap -= __tinc1_c * __tdims1 + __offsp[2]; \
76             nc_datap -= __tinc1_nc * __tdims1 + __offsp[3]; \
77             )
78 11           register PDL_Indx __inc_a_NA = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a_NA;
79 11           register PDL_Indx __inc_b_NB = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_b_NB;
80 11           register PDL_Indx __inc_c_NC = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,0)]; (void)__inc_c_NC;
81             #ifndef PDL_DECLARE_PARAMS_intersect_sorted_1
82             #define PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_nc,PDL_PPSYM_PARAM_nc) \
83             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
84             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, b, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
85             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, c, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP) \
86             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_nc, nc, (__privtrans->pdls[3]), 1, PDL_PPSYM_PARAM_nc)
87             #endif
88             #define PDL_IF_BAD(t,f) f
89 11           switch (__privtrans->__datatype) { /* Start generic switch */
90 0           case PDL_SB: {
91 0 0         PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_SByte,A,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
92 0 0         PDL_BROADCASTLOOP_START_intersect_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
93 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
94             int cmpval;
95 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB; ) {
    0          
    0          
96 0 0         cmpval = (((a_datap)[0+(__inc_a_NA*(nai))]) < ((b_datap)[0+(__inc_b_NB*(nbi))]) ? -1 : ((a_datap)[0+(__inc_a_NA*(nai))]) > ((b_datap)[0+(__inc_b_NB*(nbi))]) ? 1 : 0);
97 0 0         if (cmpval < 0) {
98 0           nai++;
99             }
100 0 0         else if (cmpval > 0) {
101 0           nbi++;
102             }
103             else {
104 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
105 0           nai++;
106 0           nbi++;
107 0           nci++;
108             }
109             }
110 0           (nc_datap)[0] = nci;
111 0 0         for ( ; nci < sizeNC; nci++) {
112 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
113             }
114 0 0         }PDL_BROADCASTLOOP_END_intersect_sorted_readdata
    0          
115 0           } break;
116 0           case PDL_B: {
117 0 0         PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_Byte,B,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
118 0 0         PDL_BROADCASTLOOP_START_intersect_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
119 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
120             int cmpval;
121 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB; ) {
    0          
    0          
122 0 0         cmpval = (((a_datap)[0+(__inc_a_NA*(nai))]) < ((b_datap)[0+(__inc_b_NB*(nbi))]) ? -1 : ((a_datap)[0+(__inc_a_NA*(nai))]) > ((b_datap)[0+(__inc_b_NB*(nbi))]) ? 1 : 0);
123 0 0         if (cmpval < 0) {
124 0           nai++;
125             }
126 0 0         else if (cmpval > 0) {
127 0           nbi++;
128             }
129             else {
130 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
131 0           nai++;
132 0           nbi++;
133 0           nci++;
134             }
135             }
136 0           (nc_datap)[0] = nci;
137 0 0         for ( ; nci < sizeNC; nci++) {
138 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
139             }
140 0 0         }PDL_BROADCASTLOOP_END_intersect_sorted_readdata
    0          
141 0           } break;
142 0           case PDL_S: {
143 0 0         PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
144 0 0         PDL_BROADCASTLOOP_START_intersect_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
145 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
146             int cmpval;
147 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB; ) {
    0          
    0          
148 0 0         cmpval = (((a_datap)[0+(__inc_a_NA*(nai))]) < ((b_datap)[0+(__inc_b_NB*(nbi))]) ? -1 : ((a_datap)[0+(__inc_a_NA*(nai))]) > ((b_datap)[0+(__inc_b_NB*(nbi))]) ? 1 : 0);
149 0 0         if (cmpval < 0) {
150 0           nai++;
151             }
152 0 0         else if (cmpval > 0) {
153 0           nbi++;
154             }
155             else {
156 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
157 0           nai++;
158 0           nbi++;
159 0           nci++;
160             }
161             }
162 0           (nc_datap)[0] = nci;
163 0 0         for ( ; nci < sizeNC; nci++) {
164 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
165             }
166 0 0         }PDL_BROADCASTLOOP_END_intersect_sorted_readdata
    0          
167 0           } break;
168 0           case PDL_US: {
169 0 0         PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_Ushort,U,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
170 0 0         PDL_BROADCASTLOOP_START_intersect_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
171 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
172             int cmpval;
173 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB; ) {
    0          
    0          
174 0 0         cmpval = (((a_datap)[0+(__inc_a_NA*(nai))]) < ((b_datap)[0+(__inc_b_NB*(nbi))]) ? -1 : ((a_datap)[0+(__inc_a_NA*(nai))]) > ((b_datap)[0+(__inc_b_NB*(nbi))]) ? 1 : 0);
175 0 0         if (cmpval < 0) {
176 0           nai++;
177             }
178 0 0         else if (cmpval > 0) {
179 0           nbi++;
180             }
181             else {
182 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
183 0           nai++;
184 0           nbi++;
185 0           nci++;
186             }
187             }
188 0           (nc_datap)[0] = nci;
189 0 0         for ( ; nci < sizeNC; nci++) {
190 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
191             }
192 0 0         }PDL_BROADCASTLOOP_END_intersect_sorted_readdata
    0          
193 0           } break;
194 0           case PDL_L: {
195 0 0         PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_Long,L,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
196 0 0         PDL_BROADCASTLOOP_START_intersect_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
197 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
198             int cmpval;
199 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB; ) {
    0          
    0          
200 0 0         cmpval = (((a_datap)[0+(__inc_a_NA*(nai))]) < ((b_datap)[0+(__inc_b_NB*(nbi))]) ? -1 : ((a_datap)[0+(__inc_a_NA*(nai))]) > ((b_datap)[0+(__inc_b_NB*(nbi))]) ? 1 : 0);
201 0 0         if (cmpval < 0) {
202 0           nai++;
203             }
204 0 0         else if (cmpval > 0) {
205 0           nbi++;
206             }
207             else {
208 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
209 0           nai++;
210 0           nbi++;
211 0           nci++;
212             }
213             }
214 0           (nc_datap)[0] = nci;
215 0 0         for ( ; nci < sizeNC; nci++) {
216 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
217             }
218 0 0         }PDL_BROADCASTLOOP_END_intersect_sorted_readdata
    0          
219 0           } break;
220 0           case PDL_UL: {
221 0 0         PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_ULong,K,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
222 0 0         PDL_BROADCASTLOOP_START_intersect_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
223 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
224             int cmpval;
225 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB; ) {
    0          
    0          
226 0 0         cmpval = (((a_datap)[0+(__inc_a_NA*(nai))]) < ((b_datap)[0+(__inc_b_NB*(nbi))]) ? -1 : ((a_datap)[0+(__inc_a_NA*(nai))]) > ((b_datap)[0+(__inc_b_NB*(nbi))]) ? 1 : 0);
227 0 0         if (cmpval < 0) {
228 0           nai++;
229             }
230 0 0         else if (cmpval > 0) {
231 0           nbi++;
232             }
233             else {
234 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
235 0           nai++;
236 0           nbi++;
237 0           nci++;
238             }
239             }
240 0           (nc_datap)[0] = nci;
241 0 0         for ( ; nci < sizeNC; nci++) {
242 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
243             }
244 0 0         }PDL_BROADCASTLOOP_END_intersect_sorted_readdata
    0          
245 0           } break;
246 0           case PDL_IND: {
247 0 0         PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
248 0 0         PDL_BROADCASTLOOP_START_intersect_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
249 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
250             int cmpval;
251 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB; ) {
    0          
    0          
252 0 0         cmpval = (((a_datap)[0+(__inc_a_NA*(nai))]) < ((b_datap)[0+(__inc_b_NB*(nbi))]) ? -1 : ((a_datap)[0+(__inc_a_NA*(nai))]) > ((b_datap)[0+(__inc_b_NB*(nbi))]) ? 1 : 0);
253 0 0         if (cmpval < 0) {
254 0           nai++;
255             }
256 0 0         else if (cmpval > 0) {
257 0           nbi++;
258             }
259             else {
260 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
261 0           nai++;
262 0           nbi++;
263 0           nci++;
264             }
265             }
266 0           (nc_datap)[0] = nci;
267 0 0         for ( ; nci < sizeNC; nci++) {
268 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
269             }
270 0 0         }PDL_BROADCASTLOOP_END_intersect_sorted_readdata
    0          
271 0           } break;
272 0           case PDL_ULL: {
273 0 0         PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_ULongLong,P,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
274 0 0         PDL_BROADCASTLOOP_START_intersect_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
275 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
276             int cmpval;
277 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB; ) {
    0          
    0          
278 0 0         cmpval = (((a_datap)[0+(__inc_a_NA*(nai))]) < ((b_datap)[0+(__inc_b_NB*(nbi))]) ? -1 : ((a_datap)[0+(__inc_a_NA*(nai))]) > ((b_datap)[0+(__inc_b_NB*(nbi))]) ? 1 : 0);
279 0 0         if (cmpval < 0) {
280 0           nai++;
281             }
282 0 0         else if (cmpval > 0) {
283 0           nbi++;
284             }
285             else {
286 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
287 0           nai++;
288 0           nbi++;
289 0           nci++;
290             }
291             }
292 0           (nc_datap)[0] = nci;
293 0 0         for ( ; nci < sizeNC; nci++) {
294 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
295             }
296 0 0         }PDL_BROADCASTLOOP_END_intersect_sorted_readdata
    0          
297 0           } break;
298 0           case PDL_LL: {
299 0 0         PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_LongLong,Q,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
300 0 0         PDL_BROADCASTLOOP_START_intersect_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
301 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
302             int cmpval;
303 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB; ) {
    0          
    0          
304 0 0         cmpval = (((a_datap)[0+(__inc_a_NA*(nai))]) < ((b_datap)[0+(__inc_b_NB*(nbi))]) ? -1 : ((a_datap)[0+(__inc_a_NA*(nai))]) > ((b_datap)[0+(__inc_b_NB*(nbi))]) ? 1 : 0);
305 0 0         if (cmpval < 0) {
306 0           nai++;
307             }
308 0 0         else if (cmpval > 0) {
309 0           nbi++;
310             }
311             else {
312 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
313 0           nai++;
314 0           nbi++;
315 0           nci++;
316             }
317             }
318 0           (nc_datap)[0] = nci;
319 0 0         for ( ; nci < sizeNC; nci++) {
320 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
321             }
322 0 0         }PDL_BROADCASTLOOP_END_intersect_sorted_readdata
    0          
323 0           } break;
324 0           case PDL_F: {
325 0 0         PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_Float,F,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
326 0 0         PDL_BROADCASTLOOP_START_intersect_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
327 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
328             int cmpval;
329 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB; ) {
    0          
    0          
330 0 0         cmpval = (((a_datap)[0+(__inc_a_NA*(nai))]) < ((b_datap)[0+(__inc_b_NB*(nbi))]) ? -1 : ((a_datap)[0+(__inc_a_NA*(nai))]) > ((b_datap)[0+(__inc_b_NB*(nbi))]) ? 1 : 0);
331 0 0         if (cmpval < 0) {
332 0           nai++;
333             }
334 0 0         else if (cmpval > 0) {
335 0           nbi++;
336             }
337             else {
338 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
339 0           nai++;
340 0           nbi++;
341 0           nci++;
342             }
343             }
344 0           (nc_datap)[0] = nci;
345 0 0         for ( ; nci < sizeNC; nci++) {
346 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
347             }
348 0 0         }PDL_BROADCASTLOOP_END_intersect_sorted_readdata
    0          
349 0           } break;
350 11           case PDL_D: {
351 11 100         PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_Double,D,PDL_Indx,N)
    100          
    50          
    50          
    100          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
352 49 50         PDL_BROADCASTLOOP_START_intersect_sorted_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
353 16           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
354             int cmpval;
355 47 100         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB; ) {
    100          
    50          
356 31 100         cmpval = (((a_datap)[0+(__inc_a_NA*(nai))]) < ((b_datap)[0+(__inc_b_NB*(nbi))]) ? -1 : ((a_datap)[0+(__inc_a_NA*(nai))]) > ((b_datap)[0+(__inc_b_NB*(nbi))]) ? 1 : 0);
357 31 100         if (cmpval < 0) {
358 12           nai++;
359             }
360 19 100         else if (cmpval > 0) {
361 9           nbi++;
362             }
363             else {
364 10           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
365 10           nai++;
366 10           nbi++;
367 10           nci++;
368             }
369             }
370 16           (nc_datap)[0] = nci;
371 25 100         for ( ; nci < sizeNC; nci++) {
372 9           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
373             }
374 11 50         }PDL_BROADCASTLOOP_END_intersect_sorted_readdata
    50          
375 11           } break;
376 0           case PDL_LD: {
377 0 0         PDL_DECLARE_PARAMS_intersect_sorted_1(PDL_LDouble,E,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
378 0 0         PDL_BROADCASTLOOP_START_intersect_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
379 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
380             int cmpval;
381 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB; ) {
    0          
    0          
382 0 0         cmpval = (((a_datap)[0+(__inc_a_NA*(nai))]) < ((b_datap)[0+(__inc_b_NB*(nbi))]) ? -1 : ((a_datap)[0+(__inc_a_NA*(nai))]) > ((b_datap)[0+(__inc_b_NB*(nbi))]) ? 1 : 0);
383 0 0         if (cmpval < 0) {
384 0           nai++;
385             }
386 0 0         else if (cmpval > 0) {
387 0           nbi++;
388             }
389             else {
390 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
391 0           nai++;
392 0           nbi++;
393 0           nci++;
394             }
395             }
396 0           (nc_datap)[0] = nci;
397 0 0         for ( ; nci < sizeNC; nci++) {
398 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
399             }
400 0 0         }PDL_BROADCASTLOOP_END_intersect_sorted_readdata
    0          
401 0           } break;
402 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in intersect_sorted: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
403             }
404             #undef PDL_IF_BAD
405 11           return PDL_err;
406             }
407              
408             static pdl_datatypes pdl_intersect_sorted_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 };
409             static PDL_Indx pdl_intersect_sorted_vtable_realdims[] = { 1, 1, 1, 0 };
410             static char *pdl_intersect_sorted_vtable_parnames[] = { "a","b","c","nc" };
411             static short pdl_intersect_sorted_vtable_parflags[] = {
412             0,
413             0,
414             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE,
415             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
416             };
417             static pdl_datatypes pdl_intersect_sorted_vtable_partypes[] = { -1, -1, -1, PDL_IND };
418             static PDL_Indx pdl_intersect_sorted_vtable_realdims_starts[] = { 0, 1, 2, 3 };
419             static PDL_Indx pdl_intersect_sorted_vtable_realdims_ind_ids[] = { 0, 1, 2 };
420             static char *pdl_intersect_sorted_vtable_indnames[] = { "NA","NB","NC" };
421             pdl_transvtable pdl_intersect_sorted_vtable = {
422             PDL_TRANS_DO_BROADCAST, 0, pdl_intersect_sorted_vtable_gentypes, 2, 4, NULL /*CORE21*/,
423             pdl_intersect_sorted_vtable_realdims, pdl_intersect_sorted_vtable_parnames,
424             pdl_intersect_sorted_vtable_parflags, pdl_intersect_sorted_vtable_partypes,
425             pdl_intersect_sorted_vtable_realdims_starts, pdl_intersect_sorted_vtable_realdims_ind_ids, 3,
426             3, pdl_intersect_sorted_vtable_indnames,
427             pdl_intersect_sorted_redodims, pdl_intersect_sorted_readdata, NULL,
428             NULL,
429             0,"PDL::Primitive::intersect_sorted"
430             };
431              
432              
433 11           pdl_error pdl_run_intersect_sorted(pdl *a,pdl *b,pdl *c,pdl *nc) {
434 11           pdl_error PDL_err = {0, NULL, 0};
435 11 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
436 11           pdl_trans *__privtrans = PDL->create_trans(&pdl_intersect_sorted_vtable);
437 11 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
438 11           __privtrans->pdls[0] = a;
439 11           __privtrans->pdls[1] = b;
440 11           __privtrans->pdls[2] = c;
441 11           __privtrans->pdls[3] = nc;
442 11 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
443 11 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
444 11           return PDL_err;
445             }