File Coverage

lib/PDL/Primitive-pp-intersectvec.c
Criterion Covered Total %
statement 69 261 26.4
branch 96 780 12.3
condition n/a
subroutine n/a
pod n/a
total 165 1041 15.8


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