File Coverage

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