File Coverage

lib/PDL/Slices-pp-rldvec.c
Criterion Covered Total %
statement 44 95 46.3
branch 47 444 10.5
condition n/a
subroutine n/a
pod n/a
total 91 539 16.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/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 1846 "lib/PDL/PP.pm"
24             typedef struct pdl_params_rldvec {
25             #line 26 "lib/PDL/Slices-pp-rldvec.c"
26             IV sumover_max;
27             } pdl_params_rldvec;
28              
29              
30             #line 1857 "lib/PDL/PP.pm"
31             pdl_error pdl_rldvec_redodims(pdl_trans *__privtrans) {
32             pdl_error PDL_err = {0, NULL, 0};
33             #line 34 "lib/PDL/Slices-pp-rldvec.c"
34 9           pdl_params_rldvec *__params = __privtrans->params; (void)__params;
35 9           __privtrans->ind_sizes[1] = __params->sumover_max;
36 9 50         PDL_RETERROR(PDL_err, PDL->redodims_default(__privtrans));
37 9           return PDL_err;
38             }
39              
40              
41             #line 1857 "lib/PDL/PP.pm"
42             pdl_error pdl_rldvec_readdata(pdl_trans *__privtrans) {
43             pdl_error PDL_err = {0, NULL, 0};
44             #line 45 "lib/PDL/Slices-pp-rldvec.c"
45 9           pdl_params_rldvec *__params = __privtrans->params; (void)__params;
46 9           register PDL_Indx __M_size = __privtrans->ind_sizes[0];
47 9           register PDL_Indx __decodedvals_size = __privtrans->ind_sizes[1];
48 9           register PDL_Indx __uniqvals_size = __privtrans->ind_sizes[2];
49 9 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in rldvec:" "broadcast.incs NULL");
50             /* broadcastloop declarations */
51             int __brcloopval;
52             register PDL_Indx __tind0,__tind1; /* counters along dim */
53 9           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
54             /* dims here are how many steps along those dims */
55 9           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
56 9           register PDL_Indx __tinc0_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
57 9           register PDL_Indx __tinc0_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
58 9           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
59 9           register PDL_Indx __tinc1_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
60 9           register PDL_Indx __tinc1_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
61             #define PDL_BROADCASTLOOP_START_rldvec_readdata PDL_BROADCASTLOOP_START( \
62             readdata, \
63             __privtrans->broadcast, \
64             __privtrans->vtable, \
65             a_datap += __offsp[0]; \
66             b_datap += __offsp[1]; \
67             c_datap += __offsp[2]; \
68             , \
69             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
70             ,b_datap += __tinc1_b - __tinc0_b * __tdims0 \
71             ,c_datap += __tinc1_c - __tinc0_c * __tdims0 \
72             ), \
73             ( ,a_datap += __tinc0_a \
74             ,b_datap += __tinc0_b \
75             ,c_datap += __tinc0_c \
76             ) \
77             )
78             #define PDL_BROADCASTLOOP_END_rldvec_readdata PDL_BROADCASTLOOP_END( \
79             __privtrans->broadcast, \
80             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
81             b_datap -= __tinc1_b * __tdims1 + __offsp[1]; \
82             c_datap -= __tinc1_c * __tdims1 + __offsp[2]; \
83             )
84 9           register PDL_Indx __inc_a_uniqvals = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a_uniqvals;
85 9           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_uniqvals = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,1)]; (void)__inc_b_uniqvals;
86 9           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_decodedvals = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,1)]; (void)__inc_c_decodedvals;
87             #ifndef PDL_DECLARE_PARAMS_rldvec_1
88             #define PDL_DECLARE_PARAMS_rldvec_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_a,PDL_PPSYM_PARAM_a) \
89             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_a, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_PARAM_a) \
90             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, b, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
91             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, c, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP)
92             #endif
93             #define PDL_IF_BAD(t,f) f
94 9           switch (__privtrans->__datatype) { /* Start generic switch */
95 0           case PDL_SB: {
96 0 0         PDL_DECLARE_PARAMS_rldvec_1(PDL_SByte,A,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
97 0 0         PDL_BROADCASTLOOP_START_rldvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
98             #line 1196 "lib/PDL/Slices.pd"
99             PDL_Indx cn=0;
100             {/* Open uniqvals */ PDL_EXPAND2(register PDL_Indx uniqvals=0, __uniqvals_stop=(__uniqvals_size)); for(; uniqvals<__uniqvals_stop; uniqvals+=1) {
101             #line 1198 "lib/PDL/Slices.pd"
102             PDL_Indx cnlim = cn + (a_datap)[0+(__inc_a_uniqvals*(uniqvals))];
103             {/* Open decodedvals=cn:cnlim */ PDL_EXPAND2(register PDL_Indx decodedvals=PDLMAX((cn),0), __decodedvals_stop=PDLMIN(cnlim, (__decodedvals_size))); for(; decodedvals<__decodedvals_stop; decodedvals+=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_decodedvals*(decodedvals))] = (b_datap)[0+(__inc_b_M*(M))+(__inc_b_uniqvals*(uniqvals))]; }} /* Close decodedvals=cn:cnlim */}} /* Close M */
104             #line 1200 "lib/PDL/Slices.pd"
105             cn = cnlim;
106             }} /* Close uniqvals */
107             #line 108 "lib/PDL/Slices-pp-rldvec.c"
108 0 0         }PDL_BROADCASTLOOP_END_rldvec_readdata
    0          
109 0           } break;
110 0           case PDL_B: {
111 0 0         PDL_DECLARE_PARAMS_rldvec_1(PDL_Byte,B,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
112 0 0         PDL_BROADCASTLOOP_START_rldvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
113             #line 1196 "lib/PDL/Slices.pd"
114             PDL_Indx cn=0;
115             {/* Open uniqvals */ PDL_EXPAND2(register PDL_Indx uniqvals=0, __uniqvals_stop=(__uniqvals_size)); for(; uniqvals<__uniqvals_stop; uniqvals+=1) {
116             #line 1198 "lib/PDL/Slices.pd"
117             PDL_Indx cnlim = cn + (a_datap)[0+(__inc_a_uniqvals*(uniqvals))];
118             {/* Open decodedvals=cn:cnlim */ PDL_EXPAND2(register PDL_Indx decodedvals=PDLMAX((cn),0), __decodedvals_stop=PDLMIN(cnlim, (__decodedvals_size))); for(; decodedvals<__decodedvals_stop; decodedvals+=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_decodedvals*(decodedvals))] = (b_datap)[0+(__inc_b_M*(M))+(__inc_b_uniqvals*(uniqvals))]; }} /* Close decodedvals=cn:cnlim */}} /* Close M */
119             #line 1200 "lib/PDL/Slices.pd"
120             cn = cnlim;
121             }} /* Close uniqvals */
122             #line 123 "lib/PDL/Slices-pp-rldvec.c"
123 0 0         }PDL_BROADCASTLOOP_END_rldvec_readdata
    0          
124 0           } break;
125 0           case PDL_S: {
126 0 0         PDL_DECLARE_PARAMS_rldvec_1(PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
127 0 0         PDL_BROADCASTLOOP_START_rldvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
128             #line 1196 "lib/PDL/Slices.pd"
129             PDL_Indx cn=0;
130             {/* Open uniqvals */ PDL_EXPAND2(register PDL_Indx uniqvals=0, __uniqvals_stop=(__uniqvals_size)); for(; uniqvals<__uniqvals_stop; uniqvals+=1) {
131             #line 1198 "lib/PDL/Slices.pd"
132             PDL_Indx cnlim = cn + (a_datap)[0+(__inc_a_uniqvals*(uniqvals))];
133             {/* Open decodedvals=cn:cnlim */ PDL_EXPAND2(register PDL_Indx decodedvals=PDLMAX((cn),0), __decodedvals_stop=PDLMIN(cnlim, (__decodedvals_size))); for(; decodedvals<__decodedvals_stop; decodedvals+=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_decodedvals*(decodedvals))] = (b_datap)[0+(__inc_b_M*(M))+(__inc_b_uniqvals*(uniqvals))]; }} /* Close decodedvals=cn:cnlim */}} /* Close M */
134             #line 1200 "lib/PDL/Slices.pd"
135             cn = cnlim;
136             }} /* Close uniqvals */
137             #line 138 "lib/PDL/Slices-pp-rldvec.c"
138 0 0         }PDL_BROADCASTLOOP_END_rldvec_readdata
    0          
139 0           } break;
140 0           case PDL_US: {
141 0 0         PDL_DECLARE_PARAMS_rldvec_1(PDL_Ushort,U,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
142 0 0         PDL_BROADCASTLOOP_START_rldvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
143             #line 1196 "lib/PDL/Slices.pd"
144             PDL_Indx cn=0;
145             {/* Open uniqvals */ PDL_EXPAND2(register PDL_Indx uniqvals=0, __uniqvals_stop=(__uniqvals_size)); for(; uniqvals<__uniqvals_stop; uniqvals+=1) {
146             #line 1198 "lib/PDL/Slices.pd"
147             PDL_Indx cnlim = cn + (a_datap)[0+(__inc_a_uniqvals*(uniqvals))];
148             {/* Open decodedvals=cn:cnlim */ PDL_EXPAND2(register PDL_Indx decodedvals=PDLMAX((cn),0), __decodedvals_stop=PDLMIN(cnlim, (__decodedvals_size))); for(; decodedvals<__decodedvals_stop; decodedvals+=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_decodedvals*(decodedvals))] = (b_datap)[0+(__inc_b_M*(M))+(__inc_b_uniqvals*(uniqvals))]; }} /* Close decodedvals=cn:cnlim */}} /* Close M */
149             #line 1200 "lib/PDL/Slices.pd"
150             cn = cnlim;
151             }} /* Close uniqvals */
152             #line 153 "lib/PDL/Slices-pp-rldvec.c"
153 0 0         }PDL_BROADCASTLOOP_END_rldvec_readdata
    0          
154 0           } break;
155 2           case PDL_L: {
156 2 50         PDL_DECLARE_PARAMS_rldvec_1(PDL_Long,L,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
157 8 50         PDL_BROADCASTLOOP_START_rldvec_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
158             #line 1196 "lib/PDL/Slices.pd"
159             PDL_Indx cn=0;
160             {/* Open uniqvals */ PDL_EXPAND2(register PDL_Indx uniqvals=0, __uniqvals_stop=(__uniqvals_size)); for(; uniqvals<__uniqvals_stop; uniqvals+=1) {
161             #line 1198 "lib/PDL/Slices.pd"
162             PDL_Indx cnlim = cn + (a_datap)[0+(__inc_a_uniqvals*(uniqvals))];
163             {/* Open decodedvals=cn:cnlim */ PDL_EXPAND2(register PDL_Indx decodedvals=PDLMAX((cn),0), __decodedvals_stop=PDLMIN(cnlim, (__decodedvals_size))); for(; decodedvals<__decodedvals_stop; decodedvals+=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_decodedvals*(decodedvals))] = (b_datap)[0+(__inc_b_M*(M))+(__inc_b_uniqvals*(uniqvals))]; }} /* Close decodedvals=cn:cnlim */}} /* Close M */
164             #line 1200 "lib/PDL/Slices.pd"
165             cn = cnlim;
166             }} /* Close uniqvals */
167             #line 168 "lib/PDL/Slices-pp-rldvec.c"
168 2 50         }PDL_BROADCASTLOOP_END_rldvec_readdata
    50          
169 2           } break;
170 0           case PDL_UL: {
171 0 0         PDL_DECLARE_PARAMS_rldvec_1(PDL_ULong,K,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
172 0 0         PDL_BROADCASTLOOP_START_rldvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
173             #line 1196 "lib/PDL/Slices.pd"
174             PDL_Indx cn=0;
175             {/* Open uniqvals */ PDL_EXPAND2(register PDL_Indx uniqvals=0, __uniqvals_stop=(__uniqvals_size)); for(; uniqvals<__uniqvals_stop; uniqvals+=1) {
176             #line 1198 "lib/PDL/Slices.pd"
177             PDL_Indx cnlim = cn + (a_datap)[0+(__inc_a_uniqvals*(uniqvals))];
178             {/* Open decodedvals=cn:cnlim */ PDL_EXPAND2(register PDL_Indx decodedvals=PDLMAX((cn),0), __decodedvals_stop=PDLMIN(cnlim, (__decodedvals_size))); for(; decodedvals<__decodedvals_stop; decodedvals+=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_decodedvals*(decodedvals))] = (b_datap)[0+(__inc_b_M*(M))+(__inc_b_uniqvals*(uniqvals))]; }} /* Close decodedvals=cn:cnlim */}} /* Close M */
179             #line 1200 "lib/PDL/Slices.pd"
180             cn = cnlim;
181             }} /* Close uniqvals */
182             #line 183 "lib/PDL/Slices-pp-rldvec.c"
183 0 0         }PDL_BROADCASTLOOP_END_rldvec_readdata
    0          
184 0           } break;
185 0           case PDL_IND: {
186 0 0         PDL_DECLARE_PARAMS_rldvec_1(PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
187 0 0         PDL_BROADCASTLOOP_START_rldvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
188             #line 1196 "lib/PDL/Slices.pd"
189             PDL_Indx cn=0;
190             {/* Open uniqvals */ PDL_EXPAND2(register PDL_Indx uniqvals=0, __uniqvals_stop=(__uniqvals_size)); for(; uniqvals<__uniqvals_stop; uniqvals+=1) {
191             #line 1198 "lib/PDL/Slices.pd"
192             PDL_Indx cnlim = cn + (a_datap)[0+(__inc_a_uniqvals*(uniqvals))];
193             {/* Open decodedvals=cn:cnlim */ PDL_EXPAND2(register PDL_Indx decodedvals=PDLMAX((cn),0), __decodedvals_stop=PDLMIN(cnlim, (__decodedvals_size))); for(; decodedvals<__decodedvals_stop; decodedvals+=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_decodedvals*(decodedvals))] = (b_datap)[0+(__inc_b_M*(M))+(__inc_b_uniqvals*(uniqvals))]; }} /* Close decodedvals=cn:cnlim */}} /* Close M */
194             #line 1200 "lib/PDL/Slices.pd"
195             cn = cnlim;
196             }} /* Close uniqvals */
197             #line 198 "lib/PDL/Slices-pp-rldvec.c"
198 0 0         }PDL_BROADCASTLOOP_END_rldvec_readdata
    0          
199 0           } break;
200 0           case PDL_ULL: {
201 0 0         PDL_DECLARE_PARAMS_rldvec_1(PDL_ULongLong,P,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
202 0 0         PDL_BROADCASTLOOP_START_rldvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
203             #line 1196 "lib/PDL/Slices.pd"
204             PDL_Indx cn=0;
205             {/* Open uniqvals */ PDL_EXPAND2(register PDL_Indx uniqvals=0, __uniqvals_stop=(__uniqvals_size)); for(; uniqvals<__uniqvals_stop; uniqvals+=1) {
206             #line 1198 "lib/PDL/Slices.pd"
207             PDL_Indx cnlim = cn + (a_datap)[0+(__inc_a_uniqvals*(uniqvals))];
208             {/* Open decodedvals=cn:cnlim */ PDL_EXPAND2(register PDL_Indx decodedvals=PDLMAX((cn),0), __decodedvals_stop=PDLMIN(cnlim, (__decodedvals_size))); for(; decodedvals<__decodedvals_stop; decodedvals+=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_decodedvals*(decodedvals))] = (b_datap)[0+(__inc_b_M*(M))+(__inc_b_uniqvals*(uniqvals))]; }} /* Close decodedvals=cn:cnlim */}} /* Close M */
209             #line 1200 "lib/PDL/Slices.pd"
210             cn = cnlim;
211             }} /* Close uniqvals */
212             #line 213 "lib/PDL/Slices-pp-rldvec.c"
213 0 0         }PDL_BROADCASTLOOP_END_rldvec_readdata
    0          
214 0           } break;
215 0           case PDL_LL: {
216 0 0         PDL_DECLARE_PARAMS_rldvec_1(PDL_LongLong,Q,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
217 0 0         PDL_BROADCASTLOOP_START_rldvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
218             #line 1196 "lib/PDL/Slices.pd"
219             PDL_Indx cn=0;
220             {/* Open uniqvals */ PDL_EXPAND2(register PDL_Indx uniqvals=0, __uniqvals_stop=(__uniqvals_size)); for(; uniqvals<__uniqvals_stop; uniqvals+=1) {
221             #line 1198 "lib/PDL/Slices.pd"
222             PDL_Indx cnlim = cn + (a_datap)[0+(__inc_a_uniqvals*(uniqvals))];
223             {/* Open decodedvals=cn:cnlim */ PDL_EXPAND2(register PDL_Indx decodedvals=PDLMAX((cn),0), __decodedvals_stop=PDLMIN(cnlim, (__decodedvals_size))); for(; decodedvals<__decodedvals_stop; decodedvals+=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_decodedvals*(decodedvals))] = (b_datap)[0+(__inc_b_M*(M))+(__inc_b_uniqvals*(uniqvals))]; }} /* Close decodedvals=cn:cnlim */}} /* Close M */
224             #line 1200 "lib/PDL/Slices.pd"
225             cn = cnlim;
226             }} /* Close uniqvals */
227             #line 228 "lib/PDL/Slices-pp-rldvec.c"
228 0 0         }PDL_BROADCASTLOOP_END_rldvec_readdata
    0          
229 0           } break;
230 0           case PDL_F: {
231 0 0         PDL_DECLARE_PARAMS_rldvec_1(PDL_Float,F,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
232 0 0         PDL_BROADCASTLOOP_START_rldvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
233             #line 1196 "lib/PDL/Slices.pd"
234             PDL_Indx cn=0;
235             {/* Open uniqvals */ PDL_EXPAND2(register PDL_Indx uniqvals=0, __uniqvals_stop=(__uniqvals_size)); for(; uniqvals<__uniqvals_stop; uniqvals+=1) {
236             #line 1198 "lib/PDL/Slices.pd"
237             PDL_Indx cnlim = cn + (a_datap)[0+(__inc_a_uniqvals*(uniqvals))];
238             {/* Open decodedvals=cn:cnlim */ PDL_EXPAND2(register PDL_Indx decodedvals=PDLMAX((cn),0), __decodedvals_stop=PDLMIN(cnlim, (__decodedvals_size))); for(; decodedvals<__decodedvals_stop; decodedvals+=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_decodedvals*(decodedvals))] = (b_datap)[0+(__inc_b_M*(M))+(__inc_b_uniqvals*(uniqvals))]; }} /* Close decodedvals=cn:cnlim */}} /* Close M */
239             #line 1200 "lib/PDL/Slices.pd"
240             cn = cnlim;
241             }} /* Close uniqvals */
242             #line 243 "lib/PDL/Slices-pp-rldvec.c"
243 0 0         }PDL_BROADCASTLOOP_END_rldvec_readdata
    0          
244 0           } break;
245 7           case PDL_D: {
246 7 100         PDL_DECLARE_PARAMS_rldvec_1(PDL_Double,D,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
247 28 50         PDL_BROADCASTLOOP_START_rldvec_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
248             #line 1196 "lib/PDL/Slices.pd"
249             PDL_Indx cn=0;
250             {/* Open uniqvals */ PDL_EXPAND2(register PDL_Indx uniqvals=0, __uniqvals_stop=(__uniqvals_size)); for(; uniqvals<__uniqvals_stop; uniqvals+=1) {
251             #line 1198 "lib/PDL/Slices.pd"
252             PDL_Indx cnlim = cn + (a_datap)[0+(__inc_a_uniqvals*(uniqvals))];
253             {/* Open decodedvals=cn:cnlim */ PDL_EXPAND2(register PDL_Indx decodedvals=PDLMAX((cn),0), __decodedvals_stop=PDLMIN(cnlim, (__decodedvals_size))); for(; decodedvals<__decodedvals_stop; decodedvals+=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_decodedvals*(decodedvals))] = (b_datap)[0+(__inc_b_M*(M))+(__inc_b_uniqvals*(uniqvals))]; }} /* Close decodedvals=cn:cnlim */}} /* Close M */
254             #line 1200 "lib/PDL/Slices.pd"
255             cn = cnlim;
256             }} /* Close uniqvals */
257             #line 258 "lib/PDL/Slices-pp-rldvec.c"
258 7 50         }PDL_BROADCASTLOOP_END_rldvec_readdata
    50          
259 7           } break;
260 0           case PDL_LD: {
261 0 0         PDL_DECLARE_PARAMS_rldvec_1(PDL_LDouble,E,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
262 0 0         PDL_BROADCASTLOOP_START_rldvec_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
263             #line 1196 "lib/PDL/Slices.pd"
264             PDL_Indx cn=0;
265             {/* Open uniqvals */ PDL_EXPAND2(register PDL_Indx uniqvals=0, __uniqvals_stop=(__uniqvals_size)); for(; uniqvals<__uniqvals_stop; uniqvals+=1) {
266             #line 1198 "lib/PDL/Slices.pd"
267             PDL_Indx cnlim = cn + (a_datap)[0+(__inc_a_uniqvals*(uniqvals))];
268             {/* Open decodedvals=cn:cnlim */ PDL_EXPAND2(register PDL_Indx decodedvals=PDLMAX((cn),0), __decodedvals_stop=PDLMIN(cnlim, (__decodedvals_size))); for(; decodedvals<__decodedvals_stop; decodedvals+=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_decodedvals*(decodedvals))] = (b_datap)[0+(__inc_b_M*(M))+(__inc_b_uniqvals*(uniqvals))]; }} /* Close decodedvals=cn:cnlim */}} /* Close M */
269             #line 1200 "lib/PDL/Slices.pd"
270             cn = cnlim;
271             }} /* Close uniqvals */
272             #line 273 "lib/PDL/Slices-pp-rldvec.c"
273 0 0         }PDL_BROADCASTLOOP_END_rldvec_readdata
    0          
274 0           } break;
275 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in rldvec: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
276             }
277             #undef PDL_IF_BAD
278 9           return PDL_err;
279             }
280              
281             static pdl_datatypes pdl_rldvec_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 };
282             static PDL_Indx pdl_rldvec_vtable_realdims[] = { 1, 2, 2 };
283             static char *pdl_rldvec_vtable_parnames[] = { "a","b","c" };
284             static short pdl_rldvec_vtable_parflags[] = {
285             PDL_PARAM_ISTYPED,
286             0,
287             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
288             };
289             static pdl_datatypes pdl_rldvec_vtable_partypes[] = { PDL_IND, -1, -1 };
290             static PDL_Indx pdl_rldvec_vtable_realdims_starts[] = { 0, 1, 3 };
291             static PDL_Indx pdl_rldvec_vtable_realdims_ind_ids[] = { 2, 0, 2, 0, 1 };
292             static char *pdl_rldvec_vtable_indnames[] = { "M","decodedvals","uniqvals" };
293             pdl_transvtable pdl_rldvec_vtable = {
294             PDL_TRANS_DO_BROADCAST, 0, pdl_rldvec_vtable_gentypes, 2, 3, NULL /*CORE21*/,
295             pdl_rldvec_vtable_realdims, pdl_rldvec_vtable_parnames,
296             pdl_rldvec_vtable_parflags, pdl_rldvec_vtable_partypes,
297             pdl_rldvec_vtable_realdims_starts, pdl_rldvec_vtable_realdims_ind_ids, 5,
298             3, pdl_rldvec_vtable_indnames,
299             pdl_rldvec_redodims, pdl_rldvec_readdata, NULL,
300             NULL,
301             sizeof(pdl_params_rldvec),"PDL::Slices::rldvec"
302             };
303              
304              
305 9           pdl_error pdl_run_rldvec(pdl *a,pdl *b,pdl *c,IV sumover_max) {
306 9           pdl_error PDL_err = {0, NULL, 0};
307 9 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
308 9           pdl_trans *__privtrans = PDL->create_trans(&pdl_rldvec_vtable);
309 9 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
310 9           pdl_params_rldvec *__params = __privtrans->params;
311 9           __privtrans->pdls[0] = a;
312 9           __privtrans->pdls[1] = b;
313 9           __privtrans->pdls[2] = c;
314 9 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
315 9           (__params->sumover_max) = (sumover_max); /* CType.get_copy */
316 9 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
317 9           return PDL_err;
318             }