File Coverage

lib/PDL/Slices-pp-rlevec.c
Criterion Covered Total %
statement 36 87 41.3
branch 45 442 10.1
condition n/a
subroutine n/a
pod n/a
total 81 529 15.3


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/Slices.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_Slices
21             extern Core* PDL; /* Structure hold core C functions */
22              
23             #line 1857 "lib/PDL/PP.pm"
24             pdl_error pdl_rlevec_readdata(pdl_trans *__privtrans) {
25             pdl_error PDL_err = {0, NULL, 0};
26             #line 27 "lib/PDL/Slices-pp-rlevec.c"
27 3           register PDL_Indx __M_size = __privtrans->ind_sizes[0];
28 3           register PDL_Indx __N_size = __privtrans->ind_sizes[1];
29 3 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in rlevec:" "broadcast.incs NULL");
30             /* broadcastloop declarations */
31             int __brcloopval;
32             register PDL_Indx __tind0,__tind1; /* counters along dim */
33 3           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
34             /* dims here are how many steps along those dims */
35 3           register PDL_Indx __tinc0_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
36 3           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
37 3           register PDL_Indx __tinc0_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
38 3           register PDL_Indx __tinc1_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
39 3           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
40 3           register PDL_Indx __tinc1_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
41             #define PDL_BROADCASTLOOP_START_rlevec_readdata PDL_BROADCASTLOOP_START( \
42             readdata, \
43             __privtrans->broadcast, \
44             __privtrans->vtable, \
45             c_datap += __offsp[0]; \
46             a_datap += __offsp[1]; \
47             b_datap += __offsp[2]; \
48             , \
49             ( ,c_datap += __tinc1_c - __tinc0_c * __tdims0 \
50             ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
51             ,b_datap += __tinc1_b - __tinc0_b * __tdims0 \
52             ), \
53             ( ,c_datap += __tinc0_c \
54             ,a_datap += __tinc0_a \
55             ,b_datap += __tinc0_b \
56             ) \
57             )
58             #define PDL_BROADCASTLOOP_END_rlevec_readdata PDL_BROADCASTLOOP_END( \
59             __privtrans->broadcast, \
60             c_datap -= __tinc1_c * __tdims1 + __offsp[0]; \
61             a_datap -= __tinc1_a * __tdims1 + __offsp[1]; \
62             b_datap -= __tinc1_b * __tdims1 + __offsp[2]; \
63             )
64 3           register PDL_Indx __inc_a_N = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_a_N;
65 3           register PDL_Indx __inc_b_M = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,0)]; (void)__inc_b_M;register PDL_Indx __inc_b_N = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,1)]; (void)__inc_b_N;
66 3           register PDL_Indx __inc_c_M = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_c_M;register PDL_Indx __inc_c_N = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,1)]; (void)__inc_c_N;
67             #ifndef PDL_DECLARE_PARAMS_rlevec_1
68             #define PDL_DECLARE_PARAMS_rlevec_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_a,PDL_PPSYM_PARAM_a) \
69             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, c, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
70             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_a, a, (__privtrans->pdls[1]), 1, PDL_PPSYM_PARAM_a) \
71             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, b, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP)
72             #endif
73             #define PDL_IF_BAD(t,f) f
74 3           switch (__privtrans->__datatype) { /* Start generic switch */
75 0           case PDL_SB: {
76 0 0         PDL_DECLARE_PARAMS_rlevec_1(PDL_SByte,A,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
77 0 0         PDL_BROADCASTLOOP_START_rlevec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
78             #line 1137 "lib/PDL/Slices.pd"
79             PDL_Indx bn=0;
80             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(0))]=(c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(0))]; }} /* Close M */
81             #line 1139 "lib/PDL/Slices.pd"
82             (a_datap)[0+(__inc_a_N*(0))] = 1;
83             {/* Open N=1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
84             #line 1141 "lib/PDL/Slices.pd"
85             char matches=1;
86             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
87             #line 1143 "lib/PDL/Slices.pd"
88             if ((c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))] != (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))]) {
89             matches=0;
90             break;
91             }
92             }} /* Close M */
93             #line 1148 "lib/PDL/Slices.pd"
94             if (matches) {
95             (a_datap)[0+(__inc_a_N*(bn))]++;
96             } else {
97             bn++;
98             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))] = (c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))]; }} /* Close M */
99             #line 1153 "lib/PDL/Slices.pd"
100             (a_datap)[0+(__inc_a_N*(bn))] = 1;
101             }
102             }} /* Close N=1 */
103             #line 1156 "lib/PDL/Slices.pd"
104             {/* Open N=bn+1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((bn+1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
105             #line 1157 "lib/PDL/Slices.pd"
106             (a_datap)[0+(__inc_a_N*(N))] = 0;
107             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(N))] = 0; }} /* Close M */
108             #line 1159 "lib/PDL/Slices.pd"
109             }} /* Close N=bn+1 */
110             #line 111 "lib/PDL/Slices-pp-rlevec.c"
111 0 0         }PDL_BROADCASTLOOP_END_rlevec_readdata
    0          
112 0           } break;
113 0           case PDL_B: {
114 0 0         PDL_DECLARE_PARAMS_rlevec_1(PDL_Byte,B,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
115 0 0         PDL_BROADCASTLOOP_START_rlevec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
116             #line 1137 "lib/PDL/Slices.pd"
117             PDL_Indx bn=0;
118             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(0))]=(c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(0))]; }} /* Close M */
119             #line 1139 "lib/PDL/Slices.pd"
120             (a_datap)[0+(__inc_a_N*(0))] = 1;
121             {/* Open N=1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
122             #line 1141 "lib/PDL/Slices.pd"
123             char matches=1;
124             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
125             #line 1143 "lib/PDL/Slices.pd"
126             if ((c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))] != (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))]) {
127             matches=0;
128             break;
129             }
130             }} /* Close M */
131             #line 1148 "lib/PDL/Slices.pd"
132             if (matches) {
133             (a_datap)[0+(__inc_a_N*(bn))]++;
134             } else {
135             bn++;
136             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))] = (c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))]; }} /* Close M */
137             #line 1153 "lib/PDL/Slices.pd"
138             (a_datap)[0+(__inc_a_N*(bn))] = 1;
139             }
140             }} /* Close N=1 */
141             #line 1156 "lib/PDL/Slices.pd"
142             {/* Open N=bn+1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((bn+1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
143             #line 1157 "lib/PDL/Slices.pd"
144             (a_datap)[0+(__inc_a_N*(N))] = 0;
145             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(N))] = 0; }} /* Close M */
146             #line 1159 "lib/PDL/Slices.pd"
147             }} /* Close N=bn+1 */
148             #line 149 "lib/PDL/Slices-pp-rlevec.c"
149 0 0         }PDL_BROADCASTLOOP_END_rlevec_readdata
    0          
150 0           } break;
151 0           case PDL_S: {
152 0 0         PDL_DECLARE_PARAMS_rlevec_1(PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
153 0 0         PDL_BROADCASTLOOP_START_rlevec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
154             #line 1137 "lib/PDL/Slices.pd"
155             PDL_Indx bn=0;
156             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(0))]=(c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(0))]; }} /* Close M */
157             #line 1139 "lib/PDL/Slices.pd"
158             (a_datap)[0+(__inc_a_N*(0))] = 1;
159             {/* Open N=1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
160             #line 1141 "lib/PDL/Slices.pd"
161             char matches=1;
162             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
163             #line 1143 "lib/PDL/Slices.pd"
164             if ((c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))] != (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))]) {
165             matches=0;
166             break;
167             }
168             }} /* Close M */
169             #line 1148 "lib/PDL/Slices.pd"
170             if (matches) {
171             (a_datap)[0+(__inc_a_N*(bn))]++;
172             } else {
173             bn++;
174             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))] = (c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))]; }} /* Close M */
175             #line 1153 "lib/PDL/Slices.pd"
176             (a_datap)[0+(__inc_a_N*(bn))] = 1;
177             }
178             }} /* Close N=1 */
179             #line 1156 "lib/PDL/Slices.pd"
180             {/* Open N=bn+1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((bn+1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
181             #line 1157 "lib/PDL/Slices.pd"
182             (a_datap)[0+(__inc_a_N*(N))] = 0;
183             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(N))] = 0; }} /* Close M */
184             #line 1159 "lib/PDL/Slices.pd"
185             }} /* Close N=bn+1 */
186             #line 187 "lib/PDL/Slices-pp-rlevec.c"
187 0 0         }PDL_BROADCASTLOOP_END_rlevec_readdata
    0          
188 0           } break;
189 0           case PDL_US: {
190 0 0         PDL_DECLARE_PARAMS_rlevec_1(PDL_Ushort,U,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
191 0 0         PDL_BROADCASTLOOP_START_rlevec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
192             #line 1137 "lib/PDL/Slices.pd"
193             PDL_Indx bn=0;
194             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(0))]=(c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(0))]; }} /* Close M */
195             #line 1139 "lib/PDL/Slices.pd"
196             (a_datap)[0+(__inc_a_N*(0))] = 1;
197             {/* Open N=1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
198             #line 1141 "lib/PDL/Slices.pd"
199             char matches=1;
200             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
201             #line 1143 "lib/PDL/Slices.pd"
202             if ((c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))] != (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))]) {
203             matches=0;
204             break;
205             }
206             }} /* Close M */
207             #line 1148 "lib/PDL/Slices.pd"
208             if (matches) {
209             (a_datap)[0+(__inc_a_N*(bn))]++;
210             } else {
211             bn++;
212             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))] = (c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))]; }} /* Close M */
213             #line 1153 "lib/PDL/Slices.pd"
214             (a_datap)[0+(__inc_a_N*(bn))] = 1;
215             }
216             }} /* Close N=1 */
217             #line 1156 "lib/PDL/Slices.pd"
218             {/* Open N=bn+1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((bn+1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
219             #line 1157 "lib/PDL/Slices.pd"
220             (a_datap)[0+(__inc_a_N*(N))] = 0;
221             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(N))] = 0; }} /* Close M */
222             #line 1159 "lib/PDL/Slices.pd"
223             }} /* Close N=bn+1 */
224             #line 225 "lib/PDL/Slices-pp-rlevec.c"
225 0 0         }PDL_BROADCASTLOOP_END_rlevec_readdata
    0          
226 0           } break;
227 1           case PDL_L: {
228 1 50         PDL_DECLARE_PARAMS_rlevec_1(PDL_Long,L,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
229 4 50         PDL_BROADCASTLOOP_START_rlevec_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
230             #line 1137 "lib/PDL/Slices.pd"
231             PDL_Indx bn=0;
232             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(0))]=(c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(0))]; }} /* Close M */
233             #line 1139 "lib/PDL/Slices.pd"
234             (a_datap)[0+(__inc_a_N*(0))] = 1;
235             {/* Open N=1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
236             #line 1141 "lib/PDL/Slices.pd"
237             char matches=1;
238             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
239             #line 1143 "lib/PDL/Slices.pd"
240             if ((c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))] != (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))]) {
241             matches=0;
242             break;
243             }
244             }} /* Close M */
245             #line 1148 "lib/PDL/Slices.pd"
246             if (matches) {
247             (a_datap)[0+(__inc_a_N*(bn))]++;
248             } else {
249             bn++;
250             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))] = (c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))]; }} /* Close M */
251             #line 1153 "lib/PDL/Slices.pd"
252             (a_datap)[0+(__inc_a_N*(bn))] = 1;
253             }
254             }} /* Close N=1 */
255             #line 1156 "lib/PDL/Slices.pd"
256             {/* Open N=bn+1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((bn+1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
257             #line 1157 "lib/PDL/Slices.pd"
258             (a_datap)[0+(__inc_a_N*(N))] = 0;
259             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(N))] = 0; }} /* Close M */
260             #line 1159 "lib/PDL/Slices.pd"
261             }} /* Close N=bn+1 */
262             #line 263 "lib/PDL/Slices-pp-rlevec.c"
263 1 50         }PDL_BROADCASTLOOP_END_rlevec_readdata
    50          
264 1           } break;
265 0           case PDL_UL: {
266 0 0         PDL_DECLARE_PARAMS_rlevec_1(PDL_ULong,K,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
267 0 0         PDL_BROADCASTLOOP_START_rlevec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
268             #line 1137 "lib/PDL/Slices.pd"
269             PDL_Indx bn=0;
270             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(0))]=(c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(0))]; }} /* Close M */
271             #line 1139 "lib/PDL/Slices.pd"
272             (a_datap)[0+(__inc_a_N*(0))] = 1;
273             {/* Open N=1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
274             #line 1141 "lib/PDL/Slices.pd"
275             char matches=1;
276             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
277             #line 1143 "lib/PDL/Slices.pd"
278             if ((c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))] != (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))]) {
279             matches=0;
280             break;
281             }
282             }} /* Close M */
283             #line 1148 "lib/PDL/Slices.pd"
284             if (matches) {
285             (a_datap)[0+(__inc_a_N*(bn))]++;
286             } else {
287             bn++;
288             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))] = (c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))]; }} /* Close M */
289             #line 1153 "lib/PDL/Slices.pd"
290             (a_datap)[0+(__inc_a_N*(bn))] = 1;
291             }
292             }} /* Close N=1 */
293             #line 1156 "lib/PDL/Slices.pd"
294             {/* Open N=bn+1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((bn+1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
295             #line 1157 "lib/PDL/Slices.pd"
296             (a_datap)[0+(__inc_a_N*(N))] = 0;
297             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(N))] = 0; }} /* Close M */
298             #line 1159 "lib/PDL/Slices.pd"
299             }} /* Close N=bn+1 */
300             #line 301 "lib/PDL/Slices-pp-rlevec.c"
301 0 0         }PDL_BROADCASTLOOP_END_rlevec_readdata
    0          
302 0           } break;
303 0           case PDL_IND: {
304 0 0         PDL_DECLARE_PARAMS_rlevec_1(PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
305 0 0         PDL_BROADCASTLOOP_START_rlevec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
306             #line 1137 "lib/PDL/Slices.pd"
307             PDL_Indx bn=0;
308             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(0))]=(c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(0))]; }} /* Close M */
309             #line 1139 "lib/PDL/Slices.pd"
310             (a_datap)[0+(__inc_a_N*(0))] = 1;
311             {/* Open N=1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
312             #line 1141 "lib/PDL/Slices.pd"
313             char matches=1;
314             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
315             #line 1143 "lib/PDL/Slices.pd"
316             if ((c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))] != (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))]) {
317             matches=0;
318             break;
319             }
320             }} /* Close M */
321             #line 1148 "lib/PDL/Slices.pd"
322             if (matches) {
323             (a_datap)[0+(__inc_a_N*(bn))]++;
324             } else {
325             bn++;
326             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))] = (c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))]; }} /* Close M */
327             #line 1153 "lib/PDL/Slices.pd"
328             (a_datap)[0+(__inc_a_N*(bn))] = 1;
329             }
330             }} /* Close N=1 */
331             #line 1156 "lib/PDL/Slices.pd"
332             {/* Open N=bn+1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((bn+1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
333             #line 1157 "lib/PDL/Slices.pd"
334             (a_datap)[0+(__inc_a_N*(N))] = 0;
335             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(N))] = 0; }} /* Close M */
336             #line 1159 "lib/PDL/Slices.pd"
337             }} /* Close N=bn+1 */
338             #line 339 "lib/PDL/Slices-pp-rlevec.c"
339 0 0         }PDL_BROADCASTLOOP_END_rlevec_readdata
    0          
340 0           } break;
341 0           case PDL_ULL: {
342 0 0         PDL_DECLARE_PARAMS_rlevec_1(PDL_ULongLong,P,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
343 0 0         PDL_BROADCASTLOOP_START_rlevec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
344             #line 1137 "lib/PDL/Slices.pd"
345             PDL_Indx bn=0;
346             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(0))]=(c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(0))]; }} /* Close M */
347             #line 1139 "lib/PDL/Slices.pd"
348             (a_datap)[0+(__inc_a_N*(0))] = 1;
349             {/* Open N=1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
350             #line 1141 "lib/PDL/Slices.pd"
351             char matches=1;
352             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
353             #line 1143 "lib/PDL/Slices.pd"
354             if ((c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))] != (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))]) {
355             matches=0;
356             break;
357             }
358             }} /* Close M */
359             #line 1148 "lib/PDL/Slices.pd"
360             if (matches) {
361             (a_datap)[0+(__inc_a_N*(bn))]++;
362             } else {
363             bn++;
364             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))] = (c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))]; }} /* Close M */
365             #line 1153 "lib/PDL/Slices.pd"
366             (a_datap)[0+(__inc_a_N*(bn))] = 1;
367             }
368             }} /* Close N=1 */
369             #line 1156 "lib/PDL/Slices.pd"
370             {/* Open N=bn+1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((bn+1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
371             #line 1157 "lib/PDL/Slices.pd"
372             (a_datap)[0+(__inc_a_N*(N))] = 0;
373             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(N))] = 0; }} /* Close M */
374             #line 1159 "lib/PDL/Slices.pd"
375             }} /* Close N=bn+1 */
376             #line 377 "lib/PDL/Slices-pp-rlevec.c"
377 0 0         }PDL_BROADCASTLOOP_END_rlevec_readdata
    0          
378 0           } break;
379 0           case PDL_LL: {
380 0 0         PDL_DECLARE_PARAMS_rlevec_1(PDL_LongLong,Q,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
381 0 0         PDL_BROADCASTLOOP_START_rlevec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
382             #line 1137 "lib/PDL/Slices.pd"
383             PDL_Indx bn=0;
384             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(0))]=(c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(0))]; }} /* Close M */
385             #line 1139 "lib/PDL/Slices.pd"
386             (a_datap)[0+(__inc_a_N*(0))] = 1;
387             {/* Open N=1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
388             #line 1141 "lib/PDL/Slices.pd"
389             char matches=1;
390             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
391             #line 1143 "lib/PDL/Slices.pd"
392             if ((c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))] != (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))]) {
393             matches=0;
394             break;
395             }
396             }} /* Close M */
397             #line 1148 "lib/PDL/Slices.pd"
398             if (matches) {
399             (a_datap)[0+(__inc_a_N*(bn))]++;
400             } else {
401             bn++;
402             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))] = (c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))]; }} /* Close M */
403             #line 1153 "lib/PDL/Slices.pd"
404             (a_datap)[0+(__inc_a_N*(bn))] = 1;
405             }
406             }} /* Close N=1 */
407             #line 1156 "lib/PDL/Slices.pd"
408             {/* Open N=bn+1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((bn+1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
409             #line 1157 "lib/PDL/Slices.pd"
410             (a_datap)[0+(__inc_a_N*(N))] = 0;
411             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(N))] = 0; }} /* Close M */
412             #line 1159 "lib/PDL/Slices.pd"
413             }} /* Close N=bn+1 */
414             #line 415 "lib/PDL/Slices-pp-rlevec.c"
415 0 0         }PDL_BROADCASTLOOP_END_rlevec_readdata
    0          
416 0           } break;
417 0           case PDL_F: {
418 0 0         PDL_DECLARE_PARAMS_rlevec_1(PDL_Float,F,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
419 0 0         PDL_BROADCASTLOOP_START_rlevec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
420             #line 1137 "lib/PDL/Slices.pd"
421             PDL_Indx bn=0;
422             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(0))]=(c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(0))]; }} /* Close M */
423             #line 1139 "lib/PDL/Slices.pd"
424             (a_datap)[0+(__inc_a_N*(0))] = 1;
425             {/* Open N=1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
426             #line 1141 "lib/PDL/Slices.pd"
427             char matches=1;
428             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
429             #line 1143 "lib/PDL/Slices.pd"
430             if ((c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))] != (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))]) {
431             matches=0;
432             break;
433             }
434             }} /* Close M */
435             #line 1148 "lib/PDL/Slices.pd"
436             if (matches) {
437             (a_datap)[0+(__inc_a_N*(bn))]++;
438             } else {
439             bn++;
440             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))] = (c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))]; }} /* Close M */
441             #line 1153 "lib/PDL/Slices.pd"
442             (a_datap)[0+(__inc_a_N*(bn))] = 1;
443             }
444             }} /* Close N=1 */
445             #line 1156 "lib/PDL/Slices.pd"
446             {/* Open N=bn+1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((bn+1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
447             #line 1157 "lib/PDL/Slices.pd"
448             (a_datap)[0+(__inc_a_N*(N))] = 0;
449             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(N))] = 0; }} /* Close M */
450             #line 1159 "lib/PDL/Slices.pd"
451             }} /* Close N=bn+1 */
452             #line 453 "lib/PDL/Slices-pp-rlevec.c"
453 0 0         }PDL_BROADCASTLOOP_END_rlevec_readdata
    0          
454 0           } break;
455 2           case PDL_D: {
456 2 50         PDL_DECLARE_PARAMS_rlevec_1(PDL_Double,D,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
457 8 50         PDL_BROADCASTLOOP_START_rlevec_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
458             #line 1137 "lib/PDL/Slices.pd"
459             PDL_Indx bn=0;
460             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(0))]=(c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(0))]; }} /* Close M */
461             #line 1139 "lib/PDL/Slices.pd"
462             (a_datap)[0+(__inc_a_N*(0))] = 1;
463             {/* Open N=1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
464             #line 1141 "lib/PDL/Slices.pd"
465             char matches=1;
466             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
467             #line 1143 "lib/PDL/Slices.pd"
468             if ((c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))] != (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))]) {
469             matches=0;
470             break;
471             }
472             }} /* Close M */
473             #line 1148 "lib/PDL/Slices.pd"
474             if (matches) {
475             (a_datap)[0+(__inc_a_N*(bn))]++;
476             } else {
477             bn++;
478             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))] = (c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))]; }} /* Close M */
479             #line 1153 "lib/PDL/Slices.pd"
480             (a_datap)[0+(__inc_a_N*(bn))] = 1;
481             }
482             }} /* Close N=1 */
483             #line 1156 "lib/PDL/Slices.pd"
484             {/* Open N=bn+1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((bn+1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
485             #line 1157 "lib/PDL/Slices.pd"
486             (a_datap)[0+(__inc_a_N*(N))] = 0;
487             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(N))] = 0; }} /* Close M */
488             #line 1159 "lib/PDL/Slices.pd"
489             }} /* Close N=bn+1 */
490             #line 491 "lib/PDL/Slices-pp-rlevec.c"
491 2 50         }PDL_BROADCASTLOOP_END_rlevec_readdata
    50          
492 2           } break;
493 0           case PDL_LD: {
494 0 0         PDL_DECLARE_PARAMS_rlevec_1(PDL_LDouble,E,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
495 0 0         PDL_BROADCASTLOOP_START_rlevec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
496             #line 1137 "lib/PDL/Slices.pd"
497             PDL_Indx bn=0;
498             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(0))]=(c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(0))]; }} /* Close M */
499             #line 1139 "lib/PDL/Slices.pd"
500             (a_datap)[0+(__inc_a_N*(0))] = 1;
501             {/* Open N=1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
502             #line 1141 "lib/PDL/Slices.pd"
503             char matches=1;
504             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) {
505             #line 1143 "lib/PDL/Slices.pd"
506             if ((c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))] != (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))]) {
507             matches=0;
508             break;
509             }
510             }} /* Close M */
511             #line 1148 "lib/PDL/Slices.pd"
512             if (matches) {
513             (a_datap)[0+(__inc_a_N*(bn))]++;
514             } else {
515             bn++;
516             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(bn))] = (c_datap)[0+(__inc_c_M*(M))+(__inc_c_N*(N))]; }} /* Close M */
517             #line 1153 "lib/PDL/Slices.pd"
518             (a_datap)[0+(__inc_a_N*(bn))] = 1;
519             }
520             }} /* Close N=1 */
521             #line 1156 "lib/PDL/Slices.pd"
522             {/* Open N=bn+1 */ PDL_EXPAND2(register PDL_Indx N=PDLMAX((bn+1),0), __N_stop=(__N_size)); for(; N<__N_stop; N+=1) {
523             #line 1157 "lib/PDL/Slices.pd"
524             (a_datap)[0+(__inc_a_N*(N))] = 0;
525             {/* Open M */ PDL_EXPAND2(register PDL_Indx M=0, __M_stop=(__M_size)); for(; M<__M_stop; M+=1) { (b_datap)[0+(__inc_b_M*(M))+(__inc_b_N*(N))] = 0; }} /* Close M */
526             #line 1159 "lib/PDL/Slices.pd"
527             }} /* Close N=bn+1 */
528             #line 529 "lib/PDL/Slices-pp-rlevec.c"
529 0 0         }PDL_BROADCASTLOOP_END_rlevec_readdata
    0          
530 0           } break;
531 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in rlevec: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
532             }
533             #undef PDL_IF_BAD
534 3           return PDL_err;
535             }
536              
537             static pdl_datatypes pdl_rlevec_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 };
538             static PDL_Indx pdl_rlevec_vtable_realdims[] = { 2, 1, 2 };
539             static char *pdl_rlevec_vtable_parnames[] = { "c","a","b" };
540             static short pdl_rlevec_vtable_parflags[] = {
541             0,
542             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISTYPED|PDL_PARAM_ISWRITE,
543             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
544             };
545             static pdl_datatypes pdl_rlevec_vtable_partypes[] = { -1, PDL_IND, -1 };
546             static PDL_Indx pdl_rlevec_vtable_realdims_starts[] = { 0, 2, 3 };
547             static PDL_Indx pdl_rlevec_vtable_realdims_ind_ids[] = { 0, 1, 1, 0, 1 };
548             static char *pdl_rlevec_vtable_indnames[] = { "M","N" };
549             pdl_transvtable pdl_rlevec_vtable = {
550             PDL_TRANS_DO_BROADCAST, 0, pdl_rlevec_vtable_gentypes, 1, 3, NULL /*CORE21*/,
551             pdl_rlevec_vtable_realdims, pdl_rlevec_vtable_parnames,
552             pdl_rlevec_vtable_parflags, pdl_rlevec_vtable_partypes,
553             pdl_rlevec_vtable_realdims_starts, pdl_rlevec_vtable_realdims_ind_ids, 5,
554             2, pdl_rlevec_vtable_indnames,
555             NULL, pdl_rlevec_readdata, NULL,
556             NULL,
557             0,"PDL::Slices::rlevec"
558             };
559              
560              
561 3           pdl_error pdl_run_rlevec(pdl *c,pdl *a,pdl *b) {
562 3           pdl_error PDL_err = {0, NULL, 0};
563 3 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
564 3           pdl_trans *__privtrans = PDL->create_trans(&pdl_rlevec_vtable);
565 3 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
566 3           __privtrans->pdls[0] = c;
567 3           __privtrans->pdls[1] = a;
568 3           __privtrans->pdls[2] = b;
569 3 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
570 3 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
571 3           return PDL_err;
572             }