File Coverage

lib/PDL/Slices-pp-rotate.c
Criterion Covered Total %
statement 67 283 23.6
branch 104 1214 8.5
condition n/a
subroutine n/a
pod n/a
total 171 1497 11.4


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_rotate_redodims(pdl_trans *__privtrans) {
25             pdl_error PDL_err = {0, NULL, 0};
26             #line 27 "lib/PDL/Slices-pp-rotate.c"
27             #ifndef PDL_DECLARE_PARAMS_rotate_0
28             #define PDL_DECLARE_PARAMS_rotate_0(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_shift,PDL_PPSYM_PARAM_shift) \
29             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, x, (__privtrans->pdls[0]), 0, PDL_PPSYM_OP) \
30             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_shift, shift, (__privtrans->pdls[1]), 0, PDL_PPSYM_PARAM_shift) \
31             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, y, (__privtrans->pdls[2]), 0, PDL_PPSYM_OP)
32             #endif
33             #define PDL_IF_BAD(t,f) f
34 89           switch (__privtrans->__datatype) { /* Start generic switch */
35 0           case PDL_SB: {
36 0 0         PDL_DECLARE_PARAMS_rotate_0(PDL_SByte,A,PDL_Indx,N)
    0          
    0          
37 0 0         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
38 0           } break;
39 1           case PDL_B: {
40 1 50         PDL_DECLARE_PARAMS_rotate_0(PDL_Byte,B,PDL_Indx,N)
    50          
    50          
41 1 50         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
42 1           } break;
43 0           case PDL_S: {
44 0 0         PDL_DECLARE_PARAMS_rotate_0(PDL_Short,S,PDL_Indx,N)
    0          
    0          
45 0 0         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
46 0           } break;
47 0           case PDL_US: {
48 0 0         PDL_DECLARE_PARAMS_rotate_0(PDL_Ushort,U,PDL_Indx,N)
    0          
    0          
49 0 0         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
50 0           } break;
51 0           case PDL_L: {
52 0 0         PDL_DECLARE_PARAMS_rotate_0(PDL_Long,L,PDL_Indx,N)
    0          
    0          
53 0 0         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
54 0           } break;
55 0           case PDL_UL: {
56 0 0         PDL_DECLARE_PARAMS_rotate_0(PDL_ULong,K,PDL_Indx,N)
    0          
    0          
57 0 0         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
58 0           } break;
59 21           case PDL_IND: {
60 21 50         PDL_DECLARE_PARAMS_rotate_0(PDL_Indx,N,PDL_Indx,N)
    50          
    50          
61 21 50         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
62 21           } break;
63 0           case PDL_ULL: {
64 0 0         PDL_DECLARE_PARAMS_rotate_0(PDL_ULongLong,P,PDL_Indx,N)
    0          
    0          
65 0 0         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
66 0           } break;
67 0           case PDL_LL: {
68 0 0         PDL_DECLARE_PARAMS_rotate_0(PDL_LongLong,Q,PDL_Indx,N)
    0          
    0          
69 0 0         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
70 0           } break;
71 12           case PDL_F: {
72 12 50         PDL_DECLARE_PARAMS_rotate_0(PDL_Float,F,PDL_Indx,N)
    50          
    50          
73 12 50         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
74 12           } break;
75 55           case PDL_D: {
76 55 100         PDL_DECLARE_PARAMS_rotate_0(PDL_Double,D,PDL_Indx,N)
    50          
    50          
77 55 50         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
78 55           } break;
79 0           case PDL_LD: {
80 0 0         PDL_DECLARE_PARAMS_rotate_0(PDL_LDouble,E,PDL_Indx,N)
    0          
    0          
81 0 0         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
82 0           } break;
83 0           case PDL_CF: {
84 0 0         PDL_DECLARE_PARAMS_rotate_0(PDL_CFloat,G,PDL_Indx,N)
    0          
    0          
85 0 0         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
86 0           } break;
87 0           case PDL_CD: {
88 0 0         PDL_DECLARE_PARAMS_rotate_0(PDL_CDouble,C,PDL_Indx,N)
    0          
    0          
89 0 0         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
90 0           } break;
91 0           case PDL_CLD: {
92 0 0         PDL_DECLARE_PARAMS_rotate_0(PDL_CLDouble,H,PDL_Indx,N)
    0          
    0          
93 0 0         {if (__privtrans->ind_sizes[0] == 0) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "can not shift zero size ndarray");}
94 0           } break;
95 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in rotate: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
96             }
97             #undef PDL_IF_BAD
98              
99 89 50         PDL_RETERROR(PDL_err, PDL->redodims_default(__privtrans));
100 89           return PDL_err;
101             }
102              
103              
104             #line 1857 "lib/PDL/PP.pm"
105             pdl_error pdl_rotate_readdata(pdl_trans *__privtrans) {
106             pdl_error PDL_err = {0, NULL, 0};
107             #line 108 "lib/PDL/Slices-pp-rotate.c"
108 71           register PDL_Indx __n_size = __privtrans->ind_sizes[0];
109 71 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "broadcast.incs NULL");
110             /* broadcastloop declarations */
111             int __brcloopval;
112             register PDL_Indx __tind0,__tind1; /* counters along dim */
113 71           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
114             /* dims here are how many steps along those dims */
115 71           register PDL_Indx __tinc0_x = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
116 71           register PDL_Indx __tinc0_shift = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
117 71           register PDL_Indx __tinc0_y = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
118 71           register PDL_Indx __tinc1_x = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
119 71           register PDL_Indx __tinc1_shift = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
120 71           register PDL_Indx __tinc1_y = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
121             #define PDL_BROADCASTLOOP_START_rotate_readdata PDL_BROADCASTLOOP_START( \
122             readdata, \
123             __privtrans->broadcast, \
124             __privtrans->vtable, \
125             x_datap += __offsp[0]; \
126             shift_datap += __offsp[1]; \
127             y_datap += __offsp[2]; \
128             , \
129             ( ,x_datap += __tinc1_x - __tinc0_x * __tdims0 \
130             ,shift_datap += __tinc1_shift - __tinc0_shift * __tdims0 \
131             ,y_datap += __tinc1_y - __tinc0_y * __tdims0 \
132             ), \
133             ( ,x_datap += __tinc0_x \
134             ,shift_datap += __tinc0_shift \
135             ,y_datap += __tinc0_y \
136             ) \
137             )
138             #define PDL_BROADCASTLOOP_END_rotate_readdata PDL_BROADCASTLOOP_END( \
139             __privtrans->broadcast, \
140             x_datap -= __tinc1_x * __tdims1 + __offsp[0]; \
141             shift_datap -= __tinc1_shift * __tdims1 + __offsp[1]; \
142             y_datap -= __tinc1_y * __tdims1 + __offsp[2]; \
143             )
144 71           register PDL_Indx __inc_x_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_x_n;
145 71           register PDL_Indx __inc_y_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,0)]; (void)__inc_y_n;
146             #ifndef PDL_DECLARE_PARAMS_rotate_1
147             #define PDL_DECLARE_PARAMS_rotate_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_shift,PDL_PPSYM_PARAM_shift) \
148             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, x, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
149             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_shift, shift, (__privtrans->pdls[1]), 1, PDL_PPSYM_PARAM_shift) \
150             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, y, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP)
151             #endif
152             #define PDL_IF_BAD(t,f) f
153 71           switch (__privtrans->__datatype) { /* Start generic switch */
154 0           case PDL_SB: {
155 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_SByte,A,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
156 0 0         PDL_BROADCASTLOOP_START_rotate_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
157             #line 1824 "lib/PDL/Slices.pd"
158             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
159             if (j < 0) j += n_size;
160             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
161             #line 1827 "lib/PDL/Slices.pd"
162             if (j == n_size) j = 0;
163             #line 164 "lib/PDL/Slices-pp-rotate.c"
164              
165 0           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
166 0 0         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    0          
167 0           } break;
168 1           case PDL_B: {
169 1 50         PDL_DECLARE_PARAMS_rotate_1(PDL_Byte,B,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
170 4 50         PDL_BROADCASTLOOP_START_rotate_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
171             #line 1824 "lib/PDL/Slices.pd"
172             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
173             if (j < 0) j += n_size;
174             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
175             #line 1827 "lib/PDL/Slices.pd"
176             if (j == n_size) j = 0;
177             #line 178 "lib/PDL/Slices-pp-rotate.c"
178              
179 5           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
180 1 50         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    50          
181 1           } break;
182 0           case PDL_S: {
183 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
184 0 0         PDL_BROADCASTLOOP_START_rotate_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
185             #line 1824 "lib/PDL/Slices.pd"
186             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
187             if (j < 0) j += n_size;
188             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
189             #line 1827 "lib/PDL/Slices.pd"
190             if (j == n_size) j = 0;
191             #line 192 "lib/PDL/Slices-pp-rotate.c"
192              
193 0           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
194 0 0         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    0          
195 0           } break;
196 0           case PDL_US: {
197 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_Ushort,U,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
198 0 0         PDL_BROADCASTLOOP_START_rotate_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
199             #line 1824 "lib/PDL/Slices.pd"
200             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
201             if (j < 0) j += n_size;
202             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
203             #line 1827 "lib/PDL/Slices.pd"
204             if (j == n_size) j = 0;
205             #line 206 "lib/PDL/Slices-pp-rotate.c"
206              
207 0           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
208 0 0         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    0          
209 0           } break;
210 0           case PDL_L: {
211 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_Long,L,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
212 0 0         PDL_BROADCASTLOOP_START_rotate_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
213             #line 1824 "lib/PDL/Slices.pd"
214             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
215             if (j < 0) j += n_size;
216             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
217             #line 1827 "lib/PDL/Slices.pd"
218             if (j == n_size) j = 0;
219             #line 220 "lib/PDL/Slices-pp-rotate.c"
220              
221 0           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
222 0 0         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    0          
223 0           } break;
224 0           case PDL_UL: {
225 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_ULong,K,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
226 0 0         PDL_BROADCASTLOOP_START_rotate_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
227             #line 1824 "lib/PDL/Slices.pd"
228             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
229             if (j < 0) j += n_size;
230             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
231             #line 1827 "lib/PDL/Slices.pd"
232             if (j == n_size) j = 0;
233             #line 234 "lib/PDL/Slices-pp-rotate.c"
234              
235 0           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
236 0 0         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    0          
237 0           } break;
238 21           case PDL_IND: {
239 21 50         PDL_DECLARE_PARAMS_rotate_1(PDL_Indx,N,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
240 84 50         PDL_BROADCASTLOOP_START_rotate_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
241             #line 1824 "lib/PDL/Slices.pd"
242             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
243             if (j < 0) j += n_size;
244             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
245             #line 1827 "lib/PDL/Slices.pd"
246             if (j == n_size) j = 0;
247             #line 248 "lib/PDL/Slices-pp-rotate.c"
248              
249 4423           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
250 21 50         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    50          
251 21           } break;
252 0           case PDL_ULL: {
253 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_ULongLong,P,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
254 0 0         PDL_BROADCASTLOOP_START_rotate_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
255             #line 1824 "lib/PDL/Slices.pd"
256             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
257             if (j < 0) j += n_size;
258             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
259             #line 1827 "lib/PDL/Slices.pd"
260             if (j == n_size) j = 0;
261             #line 262 "lib/PDL/Slices-pp-rotate.c"
262              
263 0           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
264 0 0         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    0          
265 0           } break;
266 0           case PDL_LL: {
267 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_LongLong,Q,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
268 0 0         PDL_BROADCASTLOOP_START_rotate_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
269             #line 1824 "lib/PDL/Slices.pd"
270             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
271             if (j < 0) j += n_size;
272             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
273             #line 1827 "lib/PDL/Slices.pd"
274             if (j == n_size) j = 0;
275             #line 276 "lib/PDL/Slices-pp-rotate.c"
276              
277 0           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
278 0 0         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    0          
279 0           } break;
280 6           case PDL_F: {
281 6 50         PDL_DECLARE_PARAMS_rotate_1(PDL_Float,F,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
282 34 50         PDL_BROADCASTLOOP_START_rotate_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
283             #line 1824 "lib/PDL/Slices.pd"
284             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
285             if (j < 0) j += n_size;
286             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
287             #line 1827 "lib/PDL/Slices.pd"
288             if (j == n_size) j = 0;
289             #line 290 "lib/PDL/Slices-pp-rotate.c"
290              
291 370           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
292 6 50         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    50          
293 6           } break;
294 43           case PDL_D: {
295 43 100         PDL_DECLARE_PARAMS_rotate_1(PDL_Double,D,PDL_Indx,N)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
296 380 50         PDL_BROADCASTLOOP_START_rotate_readdata {
    50          
    50          
    50          
    50          
    100          
    100          
297             #line 1824 "lib/PDL/Slices.pd"
298             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
299             if (j < 0) j += n_size;
300             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
301             #line 1827 "lib/PDL/Slices.pd"
302             if (j == n_size) j = 0;
303             #line 304 "lib/PDL/Slices-pp-rotate.c"
304              
305 403545           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
306 43 50         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    50          
307 43           } break;
308 0           case PDL_LD: {
309 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_LDouble,E,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
310 0 0         PDL_BROADCASTLOOP_START_rotate_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
311             #line 1824 "lib/PDL/Slices.pd"
312             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
313             if (j < 0) j += n_size;
314             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
315             #line 1827 "lib/PDL/Slices.pd"
316             if (j == n_size) j = 0;
317             #line 318 "lib/PDL/Slices-pp-rotate.c"
318              
319 0           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
320 0 0         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    0          
321 0           } break;
322 0           case PDL_CF: {
323 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_CFloat,G,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
324 0 0         PDL_BROADCASTLOOP_START_rotate_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
325             #line 1824 "lib/PDL/Slices.pd"
326             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
327             if (j < 0) j += n_size;
328             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
329             #line 1827 "lib/PDL/Slices.pd"
330             if (j == n_size) j = 0;
331             #line 332 "lib/PDL/Slices-pp-rotate.c"
332              
333 0           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
334 0 0         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    0          
335 0           } break;
336 0           case PDL_CD: {
337 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_CDouble,C,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
338 0 0         PDL_BROADCASTLOOP_START_rotate_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
339             #line 1824 "lib/PDL/Slices.pd"
340             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
341             if (j < 0) j += n_size;
342             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
343             #line 1827 "lib/PDL/Slices.pd"
344             if (j == n_size) j = 0;
345             #line 346 "lib/PDL/Slices-pp-rotate.c"
346              
347 0           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
348 0 0         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    0          
349 0           } break;
350 0           case PDL_CLD: {
351 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_CLDouble,H,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
352 0 0         PDL_BROADCASTLOOP_START_rotate_readdata {
    0          
    0          
    0          
    0          
    0          
    0          
353             #line 1824 "lib/PDL/Slices.pd"
354             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
355             if (j < 0) j += n_size;
356             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
357             #line 1827 "lib/PDL/Slices.pd"
358             if (j == n_size) j = 0;
359             #line 360 "lib/PDL/Slices-pp-rotate.c"
360              
361 0           (y_datap)[0+(__inc_y_n*(j++))] = (x_datap)[0+(__inc_x_n*(n))];
362 0 0         }} /* Close n */}PDL_BROADCASTLOOP_END_rotate_readdata
    0          
363 0           } break;
364 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in rotate: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
365             }
366             #undef PDL_IF_BAD
367 71           return PDL_err;
368             }
369              
370              
371             #line 1857 "lib/PDL/PP.pm"
372             pdl_error pdl_rotate_writebackdata(pdl_trans *__privtrans) {
373             pdl_error PDL_err = {0, NULL, 0};
374             #line 375 "lib/PDL/Slices-pp-rotate.c"
375 0           register PDL_Indx __n_size = __privtrans->ind_sizes[0];
376 0 0         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in rotate:" "broadcast.incs NULL");
377             /* broadcastloop declarations */
378             int __brcloopval;
379             register PDL_Indx __tind0,__tind1; /* counters along dim */
380 0           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
381             /* dims here are how many steps along those dims */
382 0           register PDL_Indx __tinc0_x = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
383 0           register PDL_Indx __tinc0_shift = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
384 0           register PDL_Indx __tinc0_y = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
385 0           register PDL_Indx __tinc1_x = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
386 0           register PDL_Indx __tinc1_shift = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
387 0           register PDL_Indx __tinc1_y = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
388             #define PDL_BROADCASTLOOP_START_rotate_writebackdata PDL_BROADCASTLOOP_START( \
389             writebackdata, \
390             __privtrans->broadcast, \
391             __privtrans->vtable, \
392             x_datap += __offsp[0]; \
393             shift_datap += __offsp[1]; \
394             y_datap += __offsp[2]; \
395             , \
396             ( ,x_datap += __tinc1_x - __tinc0_x * __tdims0 \
397             ,shift_datap += __tinc1_shift - __tinc0_shift * __tdims0 \
398             ,y_datap += __tinc1_y - __tinc0_y * __tdims0 \
399             ), \
400             ( ,x_datap += __tinc0_x \
401             ,shift_datap += __tinc0_shift \
402             ,y_datap += __tinc0_y \
403             ) \
404             )
405             #define PDL_BROADCASTLOOP_END_rotate_writebackdata PDL_BROADCASTLOOP_END( \
406             __privtrans->broadcast, \
407             x_datap -= __tinc1_x * __tdims1 + __offsp[0]; \
408             shift_datap -= __tinc1_shift * __tdims1 + __offsp[1]; \
409             y_datap -= __tinc1_y * __tdims1 + __offsp[2]; \
410             )
411 0           register PDL_Indx __inc_x_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_x_n;
412 0           register PDL_Indx __inc_y_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,2,0)]; (void)__inc_y_n;
413             #ifndef PDL_DECLARE_PARAMS_rotate_1
414             #define PDL_DECLARE_PARAMS_rotate_1(PDL_TYPE_OP,PDL_PPSYM_OP,PDL_TYPE_PARAM_shift,PDL_PPSYM_PARAM_shift) \
415             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, x, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
416             PDL_DECLARE_PARAMETER(PDL_TYPE_PARAM_shift, shift, (__privtrans->pdls[1]), 1, PDL_PPSYM_PARAM_shift) \
417             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, y, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP)
418             #endif
419             #define PDL_IF_BAD(t,f) f
420 0           switch (__privtrans->__datatype) { /* Start generic switch */
421 0           case PDL_SB: {
422 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_SByte,A,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
423 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
424             #line 1824 "lib/PDL/Slices.pd"
425             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
426             if (j < 0) j += n_size;
427             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
428             #line 1827 "lib/PDL/Slices.pd"
429             if (j == n_size) j = 0;
430             #line 431 "lib/PDL/Slices-pp-rotate.c"
431              
432 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
433             }} /* Close n */
434 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
435 0           } break;
436 0           case PDL_B: {
437 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_Byte,B,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
438 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
439             #line 1824 "lib/PDL/Slices.pd"
440             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
441             if (j < 0) j += n_size;
442             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
443             #line 1827 "lib/PDL/Slices.pd"
444             if (j == n_size) j = 0;
445             #line 446 "lib/PDL/Slices-pp-rotate.c"
446              
447 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
448             }} /* Close n */
449 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
450 0           } break;
451 0           case PDL_S: {
452 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_Short,S,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
453 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
454             #line 1824 "lib/PDL/Slices.pd"
455             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
456             if (j < 0) j += n_size;
457             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
458             #line 1827 "lib/PDL/Slices.pd"
459             if (j == n_size) j = 0;
460             #line 461 "lib/PDL/Slices-pp-rotate.c"
461              
462 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
463             }} /* Close n */
464 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
465 0           } break;
466 0           case PDL_US: {
467 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_Ushort,U,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
468 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
469             #line 1824 "lib/PDL/Slices.pd"
470             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
471             if (j < 0) j += n_size;
472             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
473             #line 1827 "lib/PDL/Slices.pd"
474             if (j == n_size) j = 0;
475             #line 476 "lib/PDL/Slices-pp-rotate.c"
476              
477 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
478             }} /* Close n */
479 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
480 0           } break;
481 0           case PDL_L: {
482 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_Long,L,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
483 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
484             #line 1824 "lib/PDL/Slices.pd"
485             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
486             if (j < 0) j += n_size;
487             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
488             #line 1827 "lib/PDL/Slices.pd"
489             if (j == n_size) j = 0;
490             #line 491 "lib/PDL/Slices-pp-rotate.c"
491              
492 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
493             }} /* Close n */
494 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
495 0           } break;
496 0           case PDL_UL: {
497 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_ULong,K,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
498 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
499             #line 1824 "lib/PDL/Slices.pd"
500             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
501             if (j < 0) j += n_size;
502             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
503             #line 1827 "lib/PDL/Slices.pd"
504             if (j == n_size) j = 0;
505             #line 506 "lib/PDL/Slices-pp-rotate.c"
506              
507 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
508             }} /* Close n */
509 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
510 0           } break;
511 0           case PDL_IND: {
512 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_Indx,N,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
513 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
514             #line 1824 "lib/PDL/Slices.pd"
515             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
516             if (j < 0) j += n_size;
517             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
518             #line 1827 "lib/PDL/Slices.pd"
519             if (j == n_size) j = 0;
520             #line 521 "lib/PDL/Slices-pp-rotate.c"
521              
522 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
523             }} /* Close n */
524 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
525 0           } break;
526 0           case PDL_ULL: {
527 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_ULongLong,P,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
528 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
529             #line 1824 "lib/PDL/Slices.pd"
530             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
531             if (j < 0) j += n_size;
532             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
533             #line 1827 "lib/PDL/Slices.pd"
534             if (j == n_size) j = 0;
535             #line 536 "lib/PDL/Slices-pp-rotate.c"
536              
537 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
538             }} /* Close n */
539 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
540 0           } break;
541 0           case PDL_LL: {
542 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_LongLong,Q,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
543 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
544             #line 1824 "lib/PDL/Slices.pd"
545             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
546             if (j < 0) j += n_size;
547             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
548             #line 1827 "lib/PDL/Slices.pd"
549             if (j == n_size) j = 0;
550             #line 551 "lib/PDL/Slices-pp-rotate.c"
551              
552 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
553             }} /* Close n */
554 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
555 0           } break;
556 0           case PDL_F: {
557 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_Float,F,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
558 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
559             #line 1824 "lib/PDL/Slices.pd"
560             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
561             if (j < 0) j += n_size;
562             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
563             #line 1827 "lib/PDL/Slices.pd"
564             if (j == n_size) j = 0;
565             #line 566 "lib/PDL/Slices-pp-rotate.c"
566              
567 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
568             }} /* Close n */
569 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
570 0           } break;
571 0           case PDL_D: {
572 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_Double,D,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
573 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
574             #line 1824 "lib/PDL/Slices.pd"
575             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
576             if (j < 0) j += n_size;
577             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
578             #line 1827 "lib/PDL/Slices.pd"
579             if (j == n_size) j = 0;
580             #line 581 "lib/PDL/Slices-pp-rotate.c"
581              
582 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
583             }} /* Close n */
584 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
585 0           } break;
586 0           case PDL_LD: {
587 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_LDouble,E,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
588 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
589             #line 1824 "lib/PDL/Slices.pd"
590             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
591             if (j < 0) j += n_size;
592             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
593             #line 1827 "lib/PDL/Slices.pd"
594             if (j == n_size) j = 0;
595             #line 596 "lib/PDL/Slices-pp-rotate.c"
596              
597 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
598             }} /* Close n */
599 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
600 0           } break;
601 0           case PDL_CF: {
602 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_CFloat,G,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
603 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
604             #line 1824 "lib/PDL/Slices.pd"
605             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
606             if (j < 0) j += n_size;
607             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
608             #line 1827 "lib/PDL/Slices.pd"
609             if (j == n_size) j = 0;
610             #line 611 "lib/PDL/Slices-pp-rotate.c"
611              
612 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
613             }} /* Close n */
614 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
615 0           } break;
616 0           case PDL_CD: {
617 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_CDouble,C,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
618 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
619             #line 1824 "lib/PDL/Slices.pd"
620             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
621             if (j < 0) j += n_size;
622             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
623             #line 1827 "lib/PDL/Slices.pd"
624             if (j == n_size) j = 0;
625             #line 626 "lib/PDL/Slices-pp-rotate.c"
626              
627 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
628             }} /* Close n */
629 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
630 0           } break;
631 0           case PDL_CLD: {
632 0 0         PDL_DECLARE_PARAMS_rotate_1(PDL_CLDouble,H,PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
633 0 0         PDL_BROADCASTLOOP_START_rotate_writebackdata {
    0          
    0          
    0          
    0          
    0          
    0          
634             #line 1824 "lib/PDL/Slices.pd"
635             PDL_Indx n_size = __privtrans->ind_sizes[0], j = (shift_datap)[0] % n_size;
636             if (j < 0) j += n_size;
637             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {
638             #line 1827 "lib/PDL/Slices.pd"
639             if (j == n_size) j = 0;
640             #line 641 "lib/PDL/Slices-pp-rotate.c"
641              
642 0           (x_datap)[0+(__inc_x_n*(n))] = (y_datap)[0+(__inc_y_n*(j++))];
643             }} /* Close n */
644 0 0         }PDL_BROADCASTLOOP_END_rotate_writebackdata
    0          
645 0           } break;
646 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in rotate: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
647             }
648             #undef PDL_IF_BAD
649 0           return PDL_err;
650             }
651              
652             static pdl_datatypes pdl_rotate_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, PDL_CF, PDL_CD, PDL_CLD, -1 };
653             static PDL_Indx pdl_rotate_vtable_realdims[] = { 1, 0, 1 };
654             static char *pdl_rotate_vtable_parnames[] = { "x","shift","y" };
655             static short pdl_rotate_vtable_parflags[] = {
656             0,
657             PDL_PARAM_ISTYPED,
658             PDL_PARAM_ISCREAT|PDL_PARAM_ISCREATEALWAYS|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
659             };
660             static pdl_datatypes pdl_rotate_vtable_partypes[] = { -1, PDL_IND, -1 };
661             static PDL_Indx pdl_rotate_vtable_realdims_starts[] = { 0, 1, 1 };
662             static PDL_Indx pdl_rotate_vtable_realdims_ind_ids[] = { 0, 0 };
663             static char *pdl_rotate_vtable_indnames[] = { "n" };
664             pdl_transvtable pdl_rotate_vtable = {
665             PDL_TRANS_DO_BROADCAST, PDL_ITRANS_TWOWAY|PDL_ITRANS_DO_DATAFLOW_ANY, pdl_rotate_vtable_gentypes, 2, 3, NULL /*CORE21*/,
666             pdl_rotate_vtable_realdims, pdl_rotate_vtable_parnames,
667             pdl_rotate_vtable_parflags, pdl_rotate_vtable_partypes,
668             pdl_rotate_vtable_realdims_starts, pdl_rotate_vtable_realdims_ind_ids, 2,
669             1, pdl_rotate_vtable_indnames,
670             pdl_rotate_redodims, pdl_rotate_readdata, pdl_rotate_writebackdata,
671             NULL,
672             0,"PDL::Slices::rotate"
673             };
674              
675              
676 71           pdl_error pdl_run_rotate(pdl *x,pdl *shift,pdl *y) {
677 71           pdl_error PDL_err = {0, NULL, 0};
678 71 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
679 71           pdl_trans *__privtrans = PDL->create_trans(&pdl_rotate_vtable);
680 71 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
681 71           __privtrans->pdls[0] = x;
682 71           __privtrans->pdls[1] = shift;
683 71           __privtrans->pdls[2] = y;
684 71 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
685 71 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
686 71           return PDL_err;
687             }