File Coverage

lib/PDL/Primitive-pp-setdiff_sorted.c
Criterion Covered Total %
statement 51 283 18.0
branch 51 732 6.9
condition n/a
subroutine n/a
pod n/a
total 102 1015 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_setdiff_sorted_redodims(pdl_trans *__privtrans) {
25             pdl_error PDL_err = {0, NULL, 0};
26             #line 27 "lib/PDL/Primitive-pp-setdiff_sorted.c"
27 11           __privtrans->ind_sizes[2] = __privtrans->ind_sizes[0];
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_setdiff_sorted_readdata(pdl_trans *__privtrans) {
35             pdl_error PDL_err = {0, NULL, 0};
36             #line 37 "lib/PDL/Primitive-pp-setdiff_sorted.c"
37 11 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in setdiff_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_setdiff_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_setdiff_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_setdiff_sorted_1
82             #define PDL_DECLARE_PARAMS_setdiff_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_setdiff_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_setdiff_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           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
99 0           nai++;
100 0           nci++;
101             }
102 0 0         else if (cmpval > 0) {
103 0           nbi++;
104             }
105             else {
106 0           nai++;
107 0           nbi++;
108             }
109             }
110 0 0         for ( ; nci < sizeNC && nai < sizeNA ; nai++,nci++ ) {
    0          
111 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
112             }
113 0           (nc_datap)[0] = nci;
114 0 0         for ( ; nci < sizeNC; nci++) {
115 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
116             }
117 0 0         }PDL_BROADCASTLOOP_END_setdiff_sorted_readdata
    0          
118 0           } break;
119 0           case PDL_B: {
120 0 0         PDL_DECLARE_PARAMS_setdiff_sorted_1(PDL_Byte,B,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
121 0 0         PDL_BROADCASTLOOP_START_setdiff_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
122 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
123             int cmpval;
124 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB ; ) {
    0          
    0          
125 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);
126 0 0         if (cmpval < 0) {
127 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
128 0           nai++;
129 0           nci++;
130             }
131 0 0         else if (cmpval > 0) {
132 0           nbi++;
133             }
134             else {
135 0           nai++;
136 0           nbi++;
137             }
138             }
139 0 0         for ( ; nci < sizeNC && nai < sizeNA ; nai++,nci++ ) {
    0          
140 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
141             }
142 0           (nc_datap)[0] = nci;
143 0 0         for ( ; nci < sizeNC; nci++) {
144 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
145             }
146 0 0         }PDL_BROADCASTLOOP_END_setdiff_sorted_readdata
    0          
147 0           } break;
148 0           case PDL_S: {
149 0 0         PDL_DECLARE_PARAMS_setdiff_sorted_1(PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
150 0 0         PDL_BROADCASTLOOP_START_setdiff_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
151 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
152             int cmpval;
153 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB ; ) {
    0          
    0          
154 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);
155 0 0         if (cmpval < 0) {
156 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
157 0           nai++;
158 0           nci++;
159             }
160 0 0         else if (cmpval > 0) {
161 0           nbi++;
162             }
163             else {
164 0           nai++;
165 0           nbi++;
166             }
167             }
168 0 0         for ( ; nci < sizeNC && nai < sizeNA ; nai++,nci++ ) {
    0          
169 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
170             }
171 0           (nc_datap)[0] = nci;
172 0 0         for ( ; nci < sizeNC; nci++) {
173 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
174             }
175 0 0         }PDL_BROADCASTLOOP_END_setdiff_sorted_readdata
    0          
176 0           } break;
177 0           case PDL_US: {
178 0 0         PDL_DECLARE_PARAMS_setdiff_sorted_1(PDL_Ushort,U,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
179 0 0         PDL_BROADCASTLOOP_START_setdiff_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
180 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
181             int cmpval;
182 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB ; ) {
    0          
    0          
183 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);
184 0 0         if (cmpval < 0) {
185 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
186 0           nai++;
187 0           nci++;
188             }
189 0 0         else if (cmpval > 0) {
190 0           nbi++;
191             }
192             else {
193 0           nai++;
194 0           nbi++;
195             }
196             }
197 0 0         for ( ; nci < sizeNC && nai < sizeNA ; nai++,nci++ ) {
    0          
198 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
199             }
200 0           (nc_datap)[0] = nci;
201 0 0         for ( ; nci < sizeNC; nci++) {
202 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
203             }
204 0 0         }PDL_BROADCASTLOOP_END_setdiff_sorted_readdata
    0          
205 0           } break;
206 0           case PDL_L: {
207 0 0         PDL_DECLARE_PARAMS_setdiff_sorted_1(PDL_Long,L,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
208 0 0         PDL_BROADCASTLOOP_START_setdiff_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
209 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
210             int cmpval;
211 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB ; ) {
    0          
    0          
212 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);
213 0 0         if (cmpval < 0) {
214 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
215 0           nai++;
216 0           nci++;
217             }
218 0 0         else if (cmpval > 0) {
219 0           nbi++;
220             }
221             else {
222 0           nai++;
223 0           nbi++;
224             }
225             }
226 0 0         for ( ; nci < sizeNC && nai < sizeNA ; nai++,nci++ ) {
    0          
227 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
228             }
229 0           (nc_datap)[0] = nci;
230 0 0         for ( ; nci < sizeNC; nci++) {
231 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
232             }
233 0 0         }PDL_BROADCASTLOOP_END_setdiff_sorted_readdata
    0          
234 0           } break;
235 0           case PDL_UL: {
236 0 0         PDL_DECLARE_PARAMS_setdiff_sorted_1(PDL_ULong,K,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
237 0 0         PDL_BROADCASTLOOP_START_setdiff_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
238 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
239             int cmpval;
240 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB ; ) {
    0          
    0          
241 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);
242 0 0         if (cmpval < 0) {
243 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
244 0           nai++;
245 0           nci++;
246             }
247 0 0         else if (cmpval > 0) {
248 0           nbi++;
249             }
250             else {
251 0           nai++;
252 0           nbi++;
253             }
254             }
255 0 0         for ( ; nci < sizeNC && nai < sizeNA ; nai++,nci++ ) {
    0          
256 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
257             }
258 0           (nc_datap)[0] = nci;
259 0 0         for ( ; nci < sizeNC; nci++) {
260 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
261             }
262 0 0         }PDL_BROADCASTLOOP_END_setdiff_sorted_readdata
    0          
263 0           } break;
264 0           case PDL_IND: {
265 0 0         PDL_DECLARE_PARAMS_setdiff_sorted_1(PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
266 0 0         PDL_BROADCASTLOOP_START_setdiff_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
267 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
268             int cmpval;
269 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB ; ) {
    0          
    0          
270 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);
271 0 0         if (cmpval < 0) {
272 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
273 0           nai++;
274 0           nci++;
275             }
276 0 0         else if (cmpval > 0) {
277 0           nbi++;
278             }
279             else {
280 0           nai++;
281 0           nbi++;
282             }
283             }
284 0 0         for ( ; nci < sizeNC && nai < sizeNA ; nai++,nci++ ) {
    0          
285 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
286             }
287 0           (nc_datap)[0] = nci;
288 0 0         for ( ; nci < sizeNC; nci++) {
289 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
290             }
291 0 0         }PDL_BROADCASTLOOP_END_setdiff_sorted_readdata
    0          
292 0           } break;
293 0           case PDL_ULL: {
294 0 0         PDL_DECLARE_PARAMS_setdiff_sorted_1(PDL_ULongLong,P,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
295 0 0         PDL_BROADCASTLOOP_START_setdiff_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
296 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
297             int cmpval;
298 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB ; ) {
    0          
    0          
299 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);
300 0 0         if (cmpval < 0) {
301 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
302 0           nai++;
303 0           nci++;
304             }
305 0 0         else if (cmpval > 0) {
306 0           nbi++;
307             }
308             else {
309 0           nai++;
310 0           nbi++;
311             }
312             }
313 0 0         for ( ; nci < sizeNC && nai < sizeNA ; nai++,nci++ ) {
    0          
314 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
315             }
316 0           (nc_datap)[0] = nci;
317 0 0         for ( ; nci < sizeNC; nci++) {
318 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
319             }
320 0 0         }PDL_BROADCASTLOOP_END_setdiff_sorted_readdata
    0          
321 0           } break;
322 0           case PDL_LL: {
323 0 0         PDL_DECLARE_PARAMS_setdiff_sorted_1(PDL_LongLong,Q,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
324 0 0         PDL_BROADCASTLOOP_START_setdiff_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
325 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
326             int cmpval;
327 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB ; ) {
    0          
    0          
328 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);
329 0 0         if (cmpval < 0) {
330 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
331 0           nai++;
332 0           nci++;
333             }
334 0 0         else if (cmpval > 0) {
335 0           nbi++;
336             }
337             else {
338 0           nai++;
339 0           nbi++;
340             }
341             }
342 0 0         for ( ; nci < sizeNC && nai < sizeNA ; nai++,nci++ ) {
    0          
343 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
344             }
345 0           (nc_datap)[0] = nci;
346 0 0         for ( ; nci < sizeNC; nci++) {
347 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
348             }
349 0 0         }PDL_BROADCASTLOOP_END_setdiff_sorted_readdata
    0          
350 0           } break;
351 0           case PDL_F: {
352 0 0         PDL_DECLARE_PARAMS_setdiff_sorted_1(PDL_Float,F,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
353 0 0         PDL_BROADCASTLOOP_START_setdiff_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
354 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
355             int cmpval;
356 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB ; ) {
    0          
    0          
357 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);
358 0 0         if (cmpval < 0) {
359 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
360 0           nai++;
361 0           nci++;
362             }
363 0 0         else if (cmpval > 0) {
364 0           nbi++;
365             }
366             else {
367 0           nai++;
368 0           nbi++;
369             }
370             }
371 0 0         for ( ; nci < sizeNC && nai < sizeNA ; nai++,nci++ ) {
    0          
372 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
373             }
374 0           (nc_datap)[0] = nci;
375 0 0         for ( ; nci < sizeNC; nci++) {
376 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
377             }
378 0 0         }PDL_BROADCASTLOOP_END_setdiff_sorted_readdata
    0          
379 0           } break;
380 11           case PDL_D: {
381 11 100         PDL_DECLARE_PARAMS_setdiff_sorted_1(PDL_Double,D,PDL_Indx,N)
    100          
    50          
    50          
    100          
    50          
    50          
    100          
    50          
    50          
    50          
    50          
382 49 50         PDL_BROADCASTLOOP_START_setdiff_sorted_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
383 16           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
384             int cmpval;
385 47 100         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB ; ) {
    100          
    100          
386 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);
387 31 100         if (cmpval < 0) {
388 12           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
389 12           nai++;
390 12           nci++;
391             }
392 19 100         else if (cmpval > 0) {
393 9           nbi++;
394             }
395             else {
396 10           nai++;
397 10           nbi++;
398             }
399             }
400 28 100         for ( ; nci < sizeNC && nai < sizeNA ; nai++,nci++ ) {
    100          
401 12           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
402             }
403 16           (nc_datap)[0] = nci;
404 26 100         for ( ; nci < sizeNC; nci++) {
405 10           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
406             }
407 11 50         }PDL_BROADCASTLOOP_END_setdiff_sorted_readdata
    50          
408 11           } break;
409 0           case PDL_LD: {
410 0 0         PDL_DECLARE_PARAMS_setdiff_sorted_1(PDL_LDouble,E,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
411 0 0         PDL_BROADCASTLOOP_START_setdiff_sorted_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
412 0           PDL_Indx nai=0, nbi=0, nci=0, sizeNA=__privtrans->ind_sizes[0], sizeNB=__privtrans->ind_sizes[1], sizeNC=__privtrans->ind_sizes[2];
413             int cmpval;
414 0 0         for ( ; nci < sizeNC && nai < sizeNA && nbi < sizeNB ; ) {
    0          
    0          
415 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);
416 0 0         if (cmpval < 0) {
417 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
418 0           nai++;
419 0           nci++;
420             }
421 0 0         else if (cmpval > 0) {
422 0           nbi++;
423             }
424             else {
425 0           nai++;
426 0           nbi++;
427             }
428             }
429 0 0         for ( ; nci < sizeNC && nai < sizeNA ; nai++,nci++ ) {
    0          
430 0           (c_datap)[0+(__inc_c_NC*(nci))] = (a_datap)[0+(__inc_a_NA*(nai))];
431             }
432 0           (nc_datap)[0] = nci;
433 0 0         for ( ; nci < sizeNC; nci++) {
434 0           (c_datap)[0+(__inc_c_NC*(nci))] = 0;
435             }
436 0 0         }PDL_BROADCASTLOOP_END_setdiff_sorted_readdata
    0          
437 0           } break;
438 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in setdiff_sorted: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
439             }
440             #undef PDL_IF_BAD
441 11           return PDL_err;
442             }
443              
444             static pdl_datatypes pdl_setdiff_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 };
445             static PDL_Indx pdl_setdiff_sorted_vtable_realdims[] = { 1, 1, 1, 0 };
446             static char *pdl_setdiff_sorted_vtable_parnames[] = { "a","b","c","nc" };
447             static short pdl_setdiff_sorted_vtable_parflags[] = {
448             0,
449             0,
450             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE,
451             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE
452             };
453             static pdl_datatypes pdl_setdiff_sorted_vtable_partypes[] = { -1, -1, -1, PDL_IND };
454             static PDL_Indx pdl_setdiff_sorted_vtable_realdims_starts[] = { 0, 1, 2, 3 };
455             static PDL_Indx pdl_setdiff_sorted_vtable_realdims_ind_ids[] = { 0, 1, 2 };
456             static char *pdl_setdiff_sorted_vtable_indnames[] = { "NA","NB","NC" };
457             pdl_transvtable pdl_setdiff_sorted_vtable = {
458             PDL_TRANS_DO_BROADCAST, 0, pdl_setdiff_sorted_vtable_gentypes, 2, 4, NULL /*CORE21*/,
459             pdl_setdiff_sorted_vtable_realdims, pdl_setdiff_sorted_vtable_parnames,
460             pdl_setdiff_sorted_vtable_parflags, pdl_setdiff_sorted_vtable_partypes,
461             pdl_setdiff_sorted_vtable_realdims_starts, pdl_setdiff_sorted_vtable_realdims_ind_ids, 3,
462             3, pdl_setdiff_sorted_vtable_indnames,
463             pdl_setdiff_sorted_redodims, pdl_setdiff_sorted_readdata, NULL,
464             NULL,
465             0,"PDL::Primitive::setdiff_sorted"
466             };
467              
468              
469 11           pdl_error pdl_run_setdiff_sorted(pdl *a,pdl *b,pdl *c,pdl *nc) {
470 11           pdl_error PDL_err = {0, NULL, 0};
471 11 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
472 11           pdl_trans *__privtrans = PDL->create_trans(&pdl_setdiff_sorted_vtable);
473 11 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
474 11           __privtrans->pdls[0] = a;
475 11           __privtrans->pdls[1] = b;
476 11           __privtrans->pdls[2] = c;
477 11           __privtrans->pdls[3] = nc;
478 11 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
479 11 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
480 11           return PDL_err;
481             }