File Coverage

lib/PDL/Image2D-pp-box2d.c
Criterion Covered Total %
statement 67 628 10.6
branch 48 910 5.2
condition n/a
subroutine n/a
pod n/a
total 115 1538 7.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/Image2D.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_Image2D
21             extern Core* PDL; /* Structure hold core C functions */
22             #line 23 "lib/PDL/Image2D-pp-box2d.c"
23              
24             /* Fast Modulus with proper negative behaviour */
25              
26             #define REALMOD(a,b) {while ((a)>=(b)) (a) -= (b); while ((a)<0) (a) += (b);}
27              
28             #define X(symbol, ctype, ppsym, ...) \
29             ctype quick_select_ ## ppsym(ctype arr[], int n);
30             PDL_TYPELIST_REAL(X)
31             #undef X
32             #define EZ(x) ez ? 0 : (x)
33              
34             #line 1846 "lib/PDL/PP.pm"
35             typedef struct pdl_params_box2d {
36             #line 37 "lib/PDL/Image2D-pp-box2d.c"
37             int wx;
38             int wy;
39             int edgezero;
40             } pdl_params_box2d;
41              
42              
43             #line 1857 "lib/PDL/PP.pm"
44             pdl_error pdl_box2d_readdata(pdl_trans *__privtrans) {
45             pdl_error PDL_err = {0, NULL, 0};
46             #line 47 "lib/PDL/Image2D-pp-box2d.c"
47 2           pdl_params_box2d *__params = __privtrans->params; (void)__params;
48 2           register PDL_Indx __m_size = __privtrans->ind_sizes[0];
49 2           register PDL_Indx __n_size = __privtrans->ind_sizes[1];
50 2 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in box2d:" "broadcast.incs NULL");
51             /* broadcastloop declarations */
52             int __brcloopval;
53             register PDL_Indx __tind0,__tind1; /* counters along dim */
54 2           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
55             /* dims here are how many steps along those dims */
56 2           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
57 2           register PDL_Indx __tinc0_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
58 2           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
59 2           register PDL_Indx __tinc1_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
60             #define PDL_BROADCASTLOOP_START_box2d_readdata PDL_BROADCASTLOOP_START( \
61             readdata, \
62             __privtrans->broadcast, \
63             __privtrans->vtable, \
64             a_datap += __offsp[0]; \
65             b_datap += __offsp[1]; \
66             , \
67             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
68             ,b_datap += __tinc1_b - __tinc0_b * __tdims0 \
69             ), \
70             ( ,a_datap += __tinc0_a \
71             ,b_datap += __tinc0_b \
72             ) \
73             )
74             #define PDL_BROADCASTLOOP_END_box2d_readdata PDL_BROADCASTLOOP_END( \
75             __privtrans->broadcast, \
76             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
77             b_datap -= __tinc1_b * __tdims1 + __offsp[1]; \
78             )
79 2           register PDL_Indx __inc_a_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a_n;register PDL_Indx __inc_a_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,1)]; (void)__inc_a_m;
80 2           register PDL_Indx __inc_b_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_b_n;register PDL_Indx __inc_b_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,1)]; (void)__inc_b_m;
81             #ifndef PDL_DECLARE_PARAMS_box2d_1
82             #define PDL_DECLARE_PARAMS_box2d_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
83             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
84             PDL_DECLARE_PARAMETER(PDL_TYPE_OP, b, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP)
85             #endif
86             #define PDL_IF_BAD(t,f) f
87 2           switch (__privtrans->__datatype) { /* Start generic switch */
88 0           case PDL_SB: {
89 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
90             {
91 0           register int nx = 0.5*__params->wx;
92 0           register int ny = 0.5*__params->wy;
93 0           register int ez = __params->edgezero;
94             PDL_CLDouble div, sum, lsum;
95             int ind1,ind2,first;
96              
97 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
98              
99 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
100 0           first = 1;
101 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
102 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
103 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
104 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
105             }} /* Close m */}} /* Close n=:nx */
106 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
107 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
108 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
109 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
110             }} /* Close n */}} /* Close m=:ny */
111 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
112 0 0         if (first) {
113 0           first = 0;
114 0           lsum = 0;
115 0           PDL_Indx m_outer = m;
116 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
117 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
118             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
119             } else {
120 0           ind1 = m-ny-1;
121 0           ind2 = m+ny;
122 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
123 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
124 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
125             }} /* Close n=:2*nx+1 */
126             }
127 0           sum = lsum;
128 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
129 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
130 0           ind1 = n-nx-1;
131 0           ind2 = n+nx;
132 0           PDL_Indx m_outer = m;
133 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
134 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
135 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
136             }} /* Close m=m_outer-ny:m_outer+ny+1 */
137 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
138             }} /* Close n=nx+1:-nx */
139             }} /* Close m=ny:-ny */
140 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
141 0           } break;
142 0           case PDL_B: {
143 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
144             {
145 0           register int nx = 0.5*__params->wx;
146 0           register int ny = 0.5*__params->wy;
147 0           register int ez = __params->edgezero;
148             PDL_CLDouble div, sum, lsum;
149             int ind1,ind2,first;
150              
151 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
152              
153 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
154 0           first = 1;
155 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
156 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
157 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
158 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
159             }} /* Close m */}} /* Close n=:nx */
160 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
161 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
162 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
163 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
164             }} /* Close n */}} /* Close m=:ny */
165 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
166 0 0         if (first) {
167 0           first = 0;
168 0           lsum = 0;
169 0           PDL_Indx m_outer = m;
170 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
171 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
172             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
173             } else {
174 0           ind1 = m-ny-1;
175 0           ind2 = m+ny;
176 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
177 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
178 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
179             }} /* Close n=:2*nx+1 */
180             }
181 0           sum = lsum;
182 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
183 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
184 0           ind1 = n-nx-1;
185 0           ind2 = n+nx;
186 0           PDL_Indx m_outer = m;
187 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
188 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
189 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
190             }} /* Close m=m_outer-ny:m_outer+ny+1 */
191 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
192             }} /* Close n=nx+1:-nx */
193             }} /* Close m=ny:-ny */
194 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
195 0           } break;
196 0           case PDL_S: {
197 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
198             {
199 0           register int nx = 0.5*__params->wx;
200 0           register int ny = 0.5*__params->wy;
201 0           register int ez = __params->edgezero;
202             PDL_CLDouble div, sum, lsum;
203             int ind1,ind2,first;
204              
205 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
206              
207 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
208 0           first = 1;
209 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
210 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
211 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
212 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
213             }} /* Close m */}} /* Close n=:nx */
214 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
215 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
216 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
217 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
218             }} /* Close n */}} /* Close m=:ny */
219 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
220 0 0         if (first) {
221 0           first = 0;
222 0           lsum = 0;
223 0           PDL_Indx m_outer = m;
224 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
225 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
226             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
227             } else {
228 0           ind1 = m-ny-1;
229 0           ind2 = m+ny;
230 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
231 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
232 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
233             }} /* Close n=:2*nx+1 */
234             }
235 0           sum = lsum;
236 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
237 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
238 0           ind1 = n-nx-1;
239 0           ind2 = n+nx;
240 0           PDL_Indx m_outer = m;
241 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
242 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
243 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
244             }} /* Close m=m_outer-ny:m_outer+ny+1 */
245 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
246             }} /* Close n=nx+1:-nx */
247             }} /* Close m=ny:-ny */
248 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
249 0           } break;
250 0           case PDL_US: {
251 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
252             {
253 0           register int nx = 0.5*__params->wx;
254 0           register int ny = 0.5*__params->wy;
255 0           register int ez = __params->edgezero;
256             PDL_CLDouble div, sum, lsum;
257             int ind1,ind2,first;
258              
259 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
260              
261 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
262 0           first = 1;
263 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
264 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
265 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
266 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
267             }} /* Close m */}} /* Close n=:nx */
268 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
269 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
270 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
271 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
272             }} /* Close n */}} /* Close m=:ny */
273 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
274 0 0         if (first) {
275 0           first = 0;
276 0           lsum = 0;
277 0           PDL_Indx m_outer = m;
278 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
279 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
280             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
281             } else {
282 0           ind1 = m-ny-1;
283 0           ind2 = m+ny;
284 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
285 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
286 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
287             }} /* Close n=:2*nx+1 */
288             }
289 0           sum = lsum;
290 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
291 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
292 0           ind1 = n-nx-1;
293 0           ind2 = n+nx;
294 0           PDL_Indx m_outer = m;
295 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
296 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
297 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
298             }} /* Close m=m_outer-ny:m_outer+ny+1 */
299 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
300             }} /* Close n=nx+1:-nx */
301             }} /* Close m=ny:-ny */
302 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
303 0           } break;
304 0           case PDL_L: {
305 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
306             {
307 0           register int nx = 0.5*__params->wx;
308 0           register int ny = 0.5*__params->wy;
309 0           register int ez = __params->edgezero;
310             PDL_CLDouble div, sum, lsum;
311             int ind1,ind2,first;
312              
313 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
314              
315 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
316 0           first = 1;
317 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
318 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
319 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
320 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
321             }} /* Close m */}} /* Close n=:nx */
322 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
323 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
324 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
325 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
326             }} /* Close n */}} /* Close m=:ny */
327 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
328 0 0         if (first) {
329 0           first = 0;
330 0           lsum = 0;
331 0           PDL_Indx m_outer = m;
332 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
333 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
334             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
335             } else {
336 0           ind1 = m-ny-1;
337 0           ind2 = m+ny;
338 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
339 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
340 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
341             }} /* Close n=:2*nx+1 */
342             }
343 0           sum = lsum;
344 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
345 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
346 0           ind1 = n-nx-1;
347 0           ind2 = n+nx;
348 0           PDL_Indx m_outer = m;
349 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
350 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
351 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
352             }} /* Close m=m_outer-ny:m_outer+ny+1 */
353 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
354             }} /* Close n=nx+1:-nx */
355             }} /* Close m=ny:-ny */
356 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
357 0           } break;
358 0           case PDL_UL: {
359 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
360             {
361 0           register int nx = 0.5*__params->wx;
362 0           register int ny = 0.5*__params->wy;
363 0           register int ez = __params->edgezero;
364             PDL_CLDouble div, sum, lsum;
365             int ind1,ind2,first;
366              
367 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
368              
369 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
370 0           first = 1;
371 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
372 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
373 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
374 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
375             }} /* Close m */}} /* Close n=:nx */
376 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
377 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
378 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
379 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
380             }} /* Close n */}} /* Close m=:ny */
381 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
382 0 0         if (first) {
383 0           first = 0;
384 0           lsum = 0;
385 0           PDL_Indx m_outer = m;
386 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
387 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
388             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
389             } else {
390 0           ind1 = m-ny-1;
391 0           ind2 = m+ny;
392 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
393 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
394 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
395             }} /* Close n=:2*nx+1 */
396             }
397 0           sum = lsum;
398 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
399 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
400 0           ind1 = n-nx-1;
401 0           ind2 = n+nx;
402 0           PDL_Indx m_outer = m;
403 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
404 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
405 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
406             }} /* Close m=m_outer-ny:m_outer+ny+1 */
407 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
408             }} /* Close n=nx+1:-nx */
409             }} /* Close m=ny:-ny */
410 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
411 0           } break;
412 0           case PDL_IND: {
413 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
414             {
415 0           register int nx = 0.5*__params->wx;
416 0           register int ny = 0.5*__params->wy;
417 0           register int ez = __params->edgezero;
418             PDL_CLDouble div, sum, lsum;
419             int ind1,ind2,first;
420              
421 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
422              
423 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
424 0           first = 1;
425 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
426 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
427 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
428 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
429             }} /* Close m */}} /* Close n=:nx */
430 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
431 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
432 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
433 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
434             }} /* Close n */}} /* Close m=:ny */
435 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
436 0 0         if (first) {
437 0           first = 0;
438 0           lsum = 0;
439 0           PDL_Indx m_outer = m;
440 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
441 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
442             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
443             } else {
444 0           ind1 = m-ny-1;
445 0           ind2 = m+ny;
446 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
447 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
448 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
449             }} /* Close n=:2*nx+1 */
450             }
451 0           sum = lsum;
452 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
453 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
454 0           ind1 = n-nx-1;
455 0           ind2 = n+nx;
456 0           PDL_Indx m_outer = m;
457 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
458 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
459 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
460             }} /* Close m=m_outer-ny:m_outer+ny+1 */
461 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
462             }} /* Close n=nx+1:-nx */
463             }} /* Close m=ny:-ny */
464 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
465 0           } break;
466 0           case PDL_ULL: {
467 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
468             {
469 0           register int nx = 0.5*__params->wx;
470 0           register int ny = 0.5*__params->wy;
471 0           register int ez = __params->edgezero;
472             PDL_CLDouble div, sum, lsum;
473             int ind1,ind2,first;
474              
475 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
476              
477 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
478 0           first = 1;
479 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
480 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
481 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
482 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
483             }} /* Close m */}} /* Close n=:nx */
484 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
485 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
486 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
487 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
488             }} /* Close n */}} /* Close m=:ny */
489 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
490 0 0         if (first) {
491 0           first = 0;
492 0           lsum = 0;
493 0           PDL_Indx m_outer = m;
494 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
495 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
496             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
497             } else {
498 0           ind1 = m-ny-1;
499 0           ind2 = m+ny;
500 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
501 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
502 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
503             }} /* Close n=:2*nx+1 */
504             }
505 0           sum = lsum;
506 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
507 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
508 0           ind1 = n-nx-1;
509 0           ind2 = n+nx;
510 0           PDL_Indx m_outer = m;
511 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
512 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
513 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
514             }} /* Close m=m_outer-ny:m_outer+ny+1 */
515 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
516             }} /* Close n=nx+1:-nx */
517             }} /* Close m=ny:-ny */
518 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
519 0           } break;
520 0           case PDL_LL: {
521 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
522             {
523 0           register int nx = 0.5*__params->wx;
524 0           register int ny = 0.5*__params->wy;
525 0           register int ez = __params->edgezero;
526             PDL_CLDouble div, sum, lsum;
527             int ind1,ind2,first;
528              
529 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
530              
531 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
532 0           first = 1;
533 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
534 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
535 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
536 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
537             }} /* Close m */}} /* Close n=:nx */
538 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
539 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
540 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
541 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
542             }} /* Close n */}} /* Close m=:ny */
543 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
544 0 0         if (first) {
545 0           first = 0;
546 0           lsum = 0;
547 0           PDL_Indx m_outer = m;
548 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
549 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
550             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
551             } else {
552 0           ind1 = m-ny-1;
553 0           ind2 = m+ny;
554 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
555 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
556 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
557             }} /* Close n=:2*nx+1 */
558             }
559 0           sum = lsum;
560 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
561 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
562 0           ind1 = n-nx-1;
563 0           ind2 = n+nx;
564 0           PDL_Indx m_outer = m;
565 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
566 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
567 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
568             }} /* Close m=m_outer-ny:m_outer+ny+1 */
569 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
570             }} /* Close n=nx+1:-nx */
571             }} /* Close m=ny:-ny */
572 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
573 0           } break;
574 0           case PDL_F: {
575 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
576             {
577 0           register int nx = 0.5*__params->wx;
578 0           register int ny = 0.5*__params->wy;
579 0           register int ez = __params->edgezero;
580             PDL_CLDouble div, sum, lsum;
581             int ind1,ind2,first;
582              
583 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
584              
585 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
586 0           first = 1;
587 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
588 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
589 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
590 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
591             }} /* Close m */}} /* Close n=:nx */
592 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
593 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
594 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
595 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
596             }} /* Close n */}} /* Close m=:ny */
597 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
598 0 0         if (first) {
599 0           first = 0;
600 0           lsum = 0;
601 0           PDL_Indx m_outer = m;
602 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
603 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
604             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
605             } else {
606 0           ind1 = m-ny-1;
607 0           ind2 = m+ny;
608 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
609 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
610 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
611             }} /* Close n=:2*nx+1 */
612             }
613 0           sum = lsum;
614 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
615 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
616 0           ind1 = n-nx-1;
617 0           ind2 = n+nx;
618 0           PDL_Indx m_outer = m;
619 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
620 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
621 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
622             }} /* Close m=m_outer-ny:m_outer+ny+1 */
623 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
624             }} /* Close n=nx+1:-nx */
625             }} /* Close m=ny:-ny */
626 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
627 0           } break;
628 2           case PDL_D: {
629 2 50         PDL_DECLARE_PARAMS_box2d_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
630             {
631 2           register int nx = 0.5*__params->wx;
632 2           register int ny = 0.5*__params->wy;
633 2           register int ez = __params->edgezero;
634             PDL_CLDouble div, sum, lsum;
635             int ind1,ind2,first;
636              
637 2           div = 1/((2.0*nx+1)*(2.0*ny+1));
638              
639 10 50         PDL_BROADCASTLOOP_START_box2d_readdata
    50          
    50          
    50          
    50          
    100          
    100          
640 4           first = 1;
641 84 100         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    100          
642 40           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
643 40 50         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
644 40 50         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
645             }} /* Close m */}} /* Close n=:nx */
646 84 100         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    100          
647 40           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
648 40 50         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
649 40 50         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
650             }} /* Close n */}} /* Close m=:ny */
651 36 100         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
652 32 100         if (first) {
653 4           first = 0;
654 4           lsum = 0;
655 4           PDL_Indx m_outer = m;
656 52 100         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    100          
657 36           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
658             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
659             } else {
660 28           ind1 = m-ny-1;
661 28           ind2 = m+ny;
662 112 100         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
663 84           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
664 84           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
665             }} /* Close n=:2*nx+1 */
666             }
667 32           sum = lsum;
668 32           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
669 256 100         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
670 224           ind1 = n-nx-1;
671 224           ind2 = n+nx;
672 224           PDL_Indx m_outer = m;
673 896 100         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
674 672           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
675 672           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
676             }} /* Close m=m_outer-ny:m_outer+ny+1 */
677 224           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
678             }} /* Close n=nx+1:-nx */
679             }} /* Close m=ny:-ny */
680 2 50         PDL_BROADCASTLOOP_END_box2d_readdata}
    50          
681 2           } break;
682 0           case PDL_LD: {
683 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
684             {
685 0           register int nx = 0.5*__params->wx;
686 0           register int ny = 0.5*__params->wy;
687 0           register int ez = __params->edgezero;
688             PDL_CLDouble div, sum, lsum;
689             int ind1,ind2,first;
690              
691 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
692              
693 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
694 0           first = 1;
695 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
696 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
697 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
698 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
699             }} /* Close m */}} /* Close n=:nx */
700 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
701 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
702 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
703 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
704             }} /* Close n */}} /* Close m=:ny */
705 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
706 0 0         if (first) {
707 0           first = 0;
708 0           lsum = 0;
709 0           PDL_Indx m_outer = m;
710 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
711 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
712             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
713             } else {
714 0           ind1 = m-ny-1;
715 0           ind2 = m+ny;
716 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
717 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
718 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
719             }} /* Close n=:2*nx+1 */
720             }
721 0           sum = lsum;
722 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
723 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
724 0           ind1 = n-nx-1;
725 0           ind2 = n+nx;
726 0           PDL_Indx m_outer = m;
727 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
728 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
729 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
730             }} /* Close m=m_outer-ny:m_outer+ny+1 */
731 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
732             }} /* Close n=nx+1:-nx */
733             }} /* Close m=ny:-ny */
734 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
735 0           } break;
736 0           case PDL_CF: {
737 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
738             {
739 0           register int nx = 0.5*__params->wx;
740 0           register int ny = 0.5*__params->wy;
741 0           register int ez = __params->edgezero;
742             PDL_CLDouble div, sum, lsum;
743             int ind1,ind2,first;
744              
745 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
746              
747 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
748 0           first = 1;
749 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
750 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
751 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
752 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
753             }} /* Close m */}} /* Close n=:nx */
754 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
755 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
756 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
757 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
758             }} /* Close n */}} /* Close m=:ny */
759 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
760 0 0         if (first) {
761 0           first = 0;
762 0           lsum = 0;
763 0           PDL_Indx m_outer = m;
764 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
765 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
766             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
767             } else {
768 0           ind1 = m-ny-1;
769 0           ind2 = m+ny;
770 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
771 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
772 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
773             }} /* Close n=:2*nx+1 */
774             }
775 0           sum = lsum;
776 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
777 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
778 0           ind1 = n-nx-1;
779 0           ind2 = n+nx;
780 0           PDL_Indx m_outer = m;
781 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
782 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
783 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
784             }} /* Close m=m_outer-ny:m_outer+ny+1 */
785 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
786             }} /* Close n=nx+1:-nx */
787             }} /* Close m=ny:-ny */
788 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
789 0           } break;
790 0           case PDL_CD: {
791 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_CDouble,C)
    0          
    0          
    0          
    0          
    0          
792             {
793 0           register int nx = 0.5*__params->wx;
794 0           register int ny = 0.5*__params->wy;
795 0           register int ez = __params->edgezero;
796             PDL_CLDouble div, sum, lsum;
797             int ind1,ind2,first;
798              
799 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
800              
801 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
802 0           first = 1;
803 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
804 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
805 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
806 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
807             }} /* Close m */}} /* Close n=:nx */
808 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
809 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
810 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
811 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
812             }} /* Close n */}} /* Close m=:ny */
813 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
814 0 0         if (first) {
815 0           first = 0;
816 0           lsum = 0;
817 0           PDL_Indx m_outer = m;
818 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
819 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
820             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
821             } else {
822 0           ind1 = m-ny-1;
823 0           ind2 = m+ny;
824 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
825 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
826 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
827             }} /* Close n=:2*nx+1 */
828             }
829 0           sum = lsum;
830 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
831 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
832 0           ind1 = n-nx-1;
833 0           ind2 = n+nx;
834 0           PDL_Indx m_outer = m;
835 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
836 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
837 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
838             }} /* Close m=m_outer-ny:m_outer+ny+1 */
839 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
840             }} /* Close n=nx+1:-nx */
841             }} /* Close m=ny:-ny */
842 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
843 0           } break;
844 0           case PDL_CLD: {
845 0 0         PDL_DECLARE_PARAMS_box2d_1(PDL_CLDouble,H)
    0          
    0          
    0          
    0          
    0          
846             {
847 0           register int nx = 0.5*__params->wx;
848 0           register int ny = 0.5*__params->wy;
849 0           register int ez = __params->edgezero;
850             PDL_CLDouble div, sum, lsum;
851             int ind1,ind2,first;
852              
853 0           div = 1/((2.0*nx+1)*(2.0*ny+1));
854              
855 0 0         PDL_BROADCASTLOOP_START_box2d_readdata
    0          
    0          
    0          
    0          
    0          
    0          
856 0           first = 1;
857 0 0         {/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {{/* Open n=:nx */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(nx, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
858 0           ind1 = __privtrans->ind_sizes[1]-1-n; /* rightmost strip */
859 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
860 0 0         (b_datap)[0+(__inc_b_n*(ind1))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]);
861             }} /* Close m */}} /* Close n=:nx */
862 0 0         {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m=:ny */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=PDLMIN(ny, (__m_size))); for(; m<__m_stop; m+=1) {
    0          
863 0           ind1 = __privtrans->ind_sizes[0]-1-m; /* topmost strip */
864 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]);
865 0 0         (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(ind1))] = EZ((a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]);
866             }} /* Close n */}} /* Close m=:ny */
867 0 0         {/* Open m=ny:-ny */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((ny),0), __m_stop=(__m_size-ny)); for(; m<__m_stop; m+=1) {
868 0 0         if (first) {
869 0           first = 0;
870 0           lsum = 0;
871 0           PDL_Indx m_outer = m;
872 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {{/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
    0          
873 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(m))]; /* initialize sum */
874             }} /* Close m=m_outer-ny:m_outer+ny+1 */}} /* Close n=:2*nx+1 */
875             } else {
876 0           ind1 = m-ny-1;
877 0           ind2 = m+ny;
878 0 0         {/* Open n=:2*nx+1 */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=PDLMIN(2*nx+1, (__n_size))); for(; n<__n_stop; n+=1) {
879 0           lsum -= (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind1))]; /* remove top pixels */
880 0           lsum += (a_datap)[0+(__inc_a_n*(n))+(__inc_a_m*(ind2))]; /* add bottom pixels */
881             }} /* Close n=:2*nx+1 */
882             }
883 0           sum = lsum;
884 0           (b_datap)[0+(__inc_b_n*(nx))+(__inc_b_m*(m))] = div*sum; /* and assign */
885 0 0         {/* Open n=nx+1:-nx */ PDL_EXPAND2(register PDL_Indx n=PDLMAX((nx+1),0), __n_stop=(__n_size-nx)); for(; n<__n_stop; n+=1) { /* loop along line */
886 0           ind1 = n-nx-1;
887 0           ind2 = n+nx;
888 0           PDL_Indx m_outer = m;
889 0 0         {/* Open m=m_outer-ny:m_outer+ny+1 */ PDL_EXPAND2(register PDL_Indx m=PDLMAX((m_outer-ny),0), __m_stop=PDLMIN(m_outer+ny+1, (__m_size))); for(; m<__m_stop; m+=1) {
890 0           sum -= (a_datap)[0+(__inc_a_n*(ind1))+(__inc_a_m*(m))]; /* remove leftmost data */
891 0           sum += (a_datap)[0+(__inc_a_n*(ind2))+(__inc_a_m*(m))]; /* and add rightmost */
892             }} /* Close m=m_outer-ny:m_outer+ny+1 */
893 0           (b_datap)[0+(__inc_b_n*(n))+(__inc_b_m*(m))] = div*sum; /* and assign */
894             }} /* Close n=nx+1:-nx */
895             }} /* Close m=ny:-ny */
896 0 0         PDL_BROADCASTLOOP_END_box2d_readdata}
    0          
897 0           } break;
898 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in box2d: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
899             }
900             #undef PDL_IF_BAD
901 2           return PDL_err;
902             }
903              
904             static pdl_datatypes pdl_box2d_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 };
905             static PDL_Indx pdl_box2d_vtable_realdims[] = { 2, 2 };
906             static char *pdl_box2d_vtable_parnames[] = { "a","b" };
907             static short pdl_box2d_vtable_parflags[] = {
908             0,
909             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
910             };
911             static pdl_datatypes pdl_box2d_vtable_partypes[] = { -1, -1 };
912             static PDL_Indx pdl_box2d_vtable_realdims_starts[] = { 0, 2 };
913             static PDL_Indx pdl_box2d_vtable_realdims_ind_ids[] = { 1, 0, 1, 0 };
914             static char *pdl_box2d_vtable_indnames[] = { "m","n" };
915             pdl_transvtable pdl_box2d_vtable = {
916             PDL_TRANS_DO_BROADCAST, 0, pdl_box2d_vtable_gentypes, 1, 2, NULL /*CORE21*/,
917             pdl_box2d_vtable_realdims, pdl_box2d_vtable_parnames,
918             pdl_box2d_vtable_parflags, pdl_box2d_vtable_partypes,
919             pdl_box2d_vtable_realdims_starts, pdl_box2d_vtable_realdims_ind_ids, 4,
920             2, pdl_box2d_vtable_indnames,
921             NULL, pdl_box2d_readdata, NULL,
922             NULL,
923             sizeof(pdl_params_box2d),"PDL::Image2D::box2d"
924             };
925              
926              
927 2           pdl_error pdl_run_box2d(pdl *a,pdl *b,int wx,int wy,int edgezero) {
928 2           pdl_error PDL_err = {0, NULL, 0};
929 2 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
930 2           pdl_trans *__privtrans = PDL->create_trans(&pdl_box2d_vtable);
931 2 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
932 2           pdl_params_box2d *__params = __privtrans->params;
933 2           __privtrans->pdls[0] = a;
934 2           __privtrans->pdls[1] = b;
935 2 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
936 2           (__params->wx) = (wx); /* CType.get_copy */
937 2           (__params->wy) = (wy); /* CType.get_copy */
938 2           (__params->edgezero) = (edgezero); /* CType.get_copy */
939 2 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
940 2           return PDL_err;
941             }