File Coverage

lib/PDL/Image2D-pp-patchbad2d.c
Criterion Covered Total %
statement 30 116 25.8
branch 23 540 4.2
condition n/a
subroutine n/a
pod n/a
total 53 656 8.0


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-patchbad2d.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 1857 "lib/PDL/PP.pm"
35             pdl_error pdl_patchbad2d_readdata(pdl_trans *__privtrans) {
36             pdl_error PDL_err = {0, NULL, 0};
37             #line 38 "lib/PDL/Image2D-pp-patchbad2d.c"
38 2           register PDL_Indx __m_size = __privtrans->ind_sizes[0];
39 2           register PDL_Indx __n_size = __privtrans->ind_sizes[1];
40 2 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in patchbad2d:" "broadcast.incs NULL");
41             /* broadcastloop declarations */
42             int __brcloopval;
43             register PDL_Indx __tind0,__tind1; /* counters along dim */
44 2           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
45             /* dims here are how many steps along those dims */
46 2           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
47 2           register PDL_Indx __tinc0_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
48 2           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
49 2           register PDL_Indx __tinc1_b = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
50             #define PDL_BROADCASTLOOP_START_patchbad2d_readdata PDL_BROADCASTLOOP_START( \
51             readdata, \
52             __privtrans->broadcast, \
53             __privtrans->vtable, \
54             a_datap += __offsp[0]; \
55             b_datap += __offsp[1]; \
56             , \
57             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
58             ,b_datap += __tinc1_b - __tinc0_b * __tdims0 \
59             ), \
60             ( ,a_datap += __tinc0_a \
61             ,b_datap += __tinc0_b \
62             ) \
63             )
64             #define PDL_BROADCASTLOOP_END_patchbad2d_readdata PDL_BROADCASTLOOP_END( \
65             __privtrans->broadcast, \
66             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
67             b_datap -= __tinc1_b * __tdims1 + __offsp[1]; \
68             )
69 2           register PDL_Indx __inc_a_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,0)]; (void)__inc_a_m;register PDL_Indx __inc_a_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,0,1)]; (void)__inc_a_n;
70 2           register PDL_Indx __inc_b_m = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,0)]; (void)__inc_b_m;register PDL_Indx __inc_b_n = __privtrans->inc_sizes[PDL_INC_ID(__privtrans->vtable,1,1)]; (void)__inc_b_n;
71             #ifndef PDL_DECLARE_PARAMS_patchbad2d_1
72             #define PDL_DECLARE_PARAMS_patchbad2d_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
73             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
74             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, b, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP)
75             #endif
76 2 100         if ( __privtrans->bvalflag ) { /* ** do 'bad' Code ** */
77             #define PDL_BAD_CODE
78             #define PDL_IF_BAD(t,f) t
79 1           switch (__privtrans->__datatype) { /* Start generic switch */
80 0           case PDL_SB: {
81 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
82             {
83             #line 584 "lib/PDL/Image2D.pd"
84             PDL_IF_BAD(int flag = 0;,)
85             PDL_BROADCASTLOOP_START_patchbad2d_readdata
86             #line 586 "lib/PDL/Image2D.pd"
87             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
88             #line 587 "lib/PDL/Image2D.pd"
89             PDL_SByte a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
90             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,A,a_badval_isnan) ) {
91             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
92             for(j1=-1; j1<=1; j1++) {
93             PDL_Indx j2 = n+j1;
94             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
95             for(i1=-1; i1<=1; i1++) {
96             /* ignore central pixel, which we know is bad */
97             if ( i1==0 && j1==0 ) continue;
98             PDL_Indx i2 = m+i1;
99             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
100             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
101             if ( PDL_ISBAD2(a_val,a_badval,A,a_badval_isnan) ) continue;
102             tmp += a_val;
103             norm++;
104             } /* for: i1 */
105             } /* for: j1 */
106             /* Patch */
107             if (norm>0) {
108             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
109             } else {
110             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
111             flag = 1;
112             }
113             } else,) {
114             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
115             } /* if: ISGOODVAR() */
116             }} /* Close n */}} /* Close m */
117             #line 615 "lib/PDL/Image2D.pd"
118             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
119             #line 616 "lib/PDL/Image2D.pd"
120             /* handle bad flag */
121             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
122             #line 123 "lib/PDL/Image2D-pp-patchbad2d.c"
123             }
124 0           } break;
125 0           case PDL_B: {
126 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
127             {
128             #line 584 "lib/PDL/Image2D.pd"
129             PDL_IF_BAD(int flag = 0;,)
130             PDL_BROADCASTLOOP_START_patchbad2d_readdata
131             #line 586 "lib/PDL/Image2D.pd"
132             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
133             #line 587 "lib/PDL/Image2D.pd"
134             PDL_Byte a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
135             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,B,a_badval_isnan) ) {
136             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
137             for(j1=-1; j1<=1; j1++) {
138             PDL_Indx j2 = n+j1;
139             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
140             for(i1=-1; i1<=1; i1++) {
141             /* ignore central pixel, which we know is bad */
142             if ( i1==0 && j1==0 ) continue;
143             PDL_Indx i2 = m+i1;
144             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
145             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
146             if ( PDL_ISBAD2(a_val,a_badval,B,a_badval_isnan) ) continue;
147             tmp += a_val;
148             norm++;
149             } /* for: i1 */
150             } /* for: j1 */
151             /* Patch */
152             if (norm>0) {
153             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
154             } else {
155             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
156             flag = 1;
157             }
158             } else,) {
159             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
160             } /* if: ISGOODVAR() */
161             }} /* Close n */}} /* Close m */
162             #line 615 "lib/PDL/Image2D.pd"
163             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
164             #line 616 "lib/PDL/Image2D.pd"
165             /* handle bad flag */
166             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
167             #line 168 "lib/PDL/Image2D-pp-patchbad2d.c"
168             }
169 0           } break;
170 0           case PDL_S: {
171 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
172             {
173             #line 584 "lib/PDL/Image2D.pd"
174             PDL_IF_BAD(int flag = 0;,)
175             PDL_BROADCASTLOOP_START_patchbad2d_readdata
176             #line 586 "lib/PDL/Image2D.pd"
177             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
178             #line 587 "lib/PDL/Image2D.pd"
179             PDL_Short a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
180             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,S,a_badval_isnan) ) {
181             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
182             for(j1=-1; j1<=1; j1++) {
183             PDL_Indx j2 = n+j1;
184             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
185             for(i1=-1; i1<=1; i1++) {
186             /* ignore central pixel, which we know is bad */
187             if ( i1==0 && j1==0 ) continue;
188             PDL_Indx i2 = m+i1;
189             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
190             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
191             if ( PDL_ISBAD2(a_val,a_badval,S,a_badval_isnan) ) continue;
192             tmp += a_val;
193             norm++;
194             } /* for: i1 */
195             } /* for: j1 */
196             /* Patch */
197             if (norm>0) {
198             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
199             } else {
200             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
201             flag = 1;
202             }
203             } else,) {
204             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
205             } /* if: ISGOODVAR() */
206             }} /* Close n */}} /* Close m */
207             #line 615 "lib/PDL/Image2D.pd"
208             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
209             #line 616 "lib/PDL/Image2D.pd"
210             /* handle bad flag */
211             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
212             #line 213 "lib/PDL/Image2D-pp-patchbad2d.c"
213             }
214 0           } break;
215 0           case PDL_US: {
216 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
217             {
218             #line 584 "lib/PDL/Image2D.pd"
219             PDL_IF_BAD(int flag = 0;,)
220             PDL_BROADCASTLOOP_START_patchbad2d_readdata
221             #line 586 "lib/PDL/Image2D.pd"
222             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
223             #line 587 "lib/PDL/Image2D.pd"
224             PDL_Ushort a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
225             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,U,a_badval_isnan) ) {
226             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
227             for(j1=-1; j1<=1; j1++) {
228             PDL_Indx j2 = n+j1;
229             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
230             for(i1=-1; i1<=1; i1++) {
231             /* ignore central pixel, which we know is bad */
232             if ( i1==0 && j1==0 ) continue;
233             PDL_Indx i2 = m+i1;
234             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
235             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
236             if ( PDL_ISBAD2(a_val,a_badval,U,a_badval_isnan) ) continue;
237             tmp += a_val;
238             norm++;
239             } /* for: i1 */
240             } /* for: j1 */
241             /* Patch */
242             if (norm>0) {
243             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
244             } else {
245             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
246             flag = 1;
247             }
248             } else,) {
249             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
250             } /* if: ISGOODVAR() */
251             }} /* Close n */}} /* Close m */
252             #line 615 "lib/PDL/Image2D.pd"
253             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
254             #line 616 "lib/PDL/Image2D.pd"
255             /* handle bad flag */
256             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
257             #line 258 "lib/PDL/Image2D-pp-patchbad2d.c"
258             }
259 0           } break;
260 0           case PDL_L: {
261 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
262             {
263             #line 584 "lib/PDL/Image2D.pd"
264             PDL_IF_BAD(int flag = 0;,)
265             PDL_BROADCASTLOOP_START_patchbad2d_readdata
266             #line 586 "lib/PDL/Image2D.pd"
267             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
268             #line 587 "lib/PDL/Image2D.pd"
269             PDL_Long a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
270             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,L,a_badval_isnan) ) {
271             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
272             for(j1=-1; j1<=1; j1++) {
273             PDL_Indx j2 = n+j1;
274             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
275             for(i1=-1; i1<=1; i1++) {
276             /* ignore central pixel, which we know is bad */
277             if ( i1==0 && j1==0 ) continue;
278             PDL_Indx i2 = m+i1;
279             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
280             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
281             if ( PDL_ISBAD2(a_val,a_badval,L,a_badval_isnan) ) continue;
282             tmp += a_val;
283             norm++;
284             } /* for: i1 */
285             } /* for: j1 */
286             /* Patch */
287             if (norm>0) {
288             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
289             } else {
290             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
291             flag = 1;
292             }
293             } else,) {
294             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
295             } /* if: ISGOODVAR() */
296             }} /* Close n */}} /* Close m */
297             #line 615 "lib/PDL/Image2D.pd"
298             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
299             #line 616 "lib/PDL/Image2D.pd"
300             /* handle bad flag */
301             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
302             #line 303 "lib/PDL/Image2D-pp-patchbad2d.c"
303             }
304 0           } break;
305 0           case PDL_UL: {
306 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
307             {
308             #line 584 "lib/PDL/Image2D.pd"
309             PDL_IF_BAD(int flag = 0;,)
310             PDL_BROADCASTLOOP_START_patchbad2d_readdata
311             #line 586 "lib/PDL/Image2D.pd"
312             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
313             #line 587 "lib/PDL/Image2D.pd"
314             PDL_ULong a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
315             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,K,a_badval_isnan) ) {
316             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
317             for(j1=-1; j1<=1; j1++) {
318             PDL_Indx j2 = n+j1;
319             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
320             for(i1=-1; i1<=1; i1++) {
321             /* ignore central pixel, which we know is bad */
322             if ( i1==0 && j1==0 ) continue;
323             PDL_Indx i2 = m+i1;
324             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
325             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
326             if ( PDL_ISBAD2(a_val,a_badval,K,a_badval_isnan) ) continue;
327             tmp += a_val;
328             norm++;
329             } /* for: i1 */
330             } /* for: j1 */
331             /* Patch */
332             if (norm>0) {
333             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
334             } else {
335             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
336             flag = 1;
337             }
338             } else,) {
339             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
340             } /* if: ISGOODVAR() */
341             }} /* Close n */}} /* Close m */
342             #line 615 "lib/PDL/Image2D.pd"
343             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
344             #line 616 "lib/PDL/Image2D.pd"
345             /* handle bad flag */
346             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
347             #line 348 "lib/PDL/Image2D-pp-patchbad2d.c"
348             }
349 0           } break;
350 0           case PDL_IND: {
351 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
352             {
353             #line 584 "lib/PDL/Image2D.pd"
354             PDL_IF_BAD(int flag = 0;,)
355             PDL_BROADCASTLOOP_START_patchbad2d_readdata
356             #line 586 "lib/PDL/Image2D.pd"
357             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
358             #line 587 "lib/PDL/Image2D.pd"
359             PDL_Indx a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
360             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,N,a_badval_isnan) ) {
361             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
362             for(j1=-1; j1<=1; j1++) {
363             PDL_Indx j2 = n+j1;
364             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
365             for(i1=-1; i1<=1; i1++) {
366             /* ignore central pixel, which we know is bad */
367             if ( i1==0 && j1==0 ) continue;
368             PDL_Indx i2 = m+i1;
369             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
370             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
371             if ( PDL_ISBAD2(a_val,a_badval,N,a_badval_isnan) ) continue;
372             tmp += a_val;
373             norm++;
374             } /* for: i1 */
375             } /* for: j1 */
376             /* Patch */
377             if (norm>0) {
378             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
379             } else {
380             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
381             flag = 1;
382             }
383             } else,) {
384             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
385             } /* if: ISGOODVAR() */
386             }} /* Close n */}} /* Close m */
387             #line 615 "lib/PDL/Image2D.pd"
388             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
389             #line 616 "lib/PDL/Image2D.pd"
390             /* handle bad flag */
391             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
392             #line 393 "lib/PDL/Image2D-pp-patchbad2d.c"
393             }
394 0           } break;
395 0           case PDL_ULL: {
396 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
397             {
398             #line 584 "lib/PDL/Image2D.pd"
399             PDL_IF_BAD(int flag = 0;,)
400             PDL_BROADCASTLOOP_START_patchbad2d_readdata
401             #line 586 "lib/PDL/Image2D.pd"
402             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
403             #line 587 "lib/PDL/Image2D.pd"
404             PDL_ULongLong a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
405             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,P,a_badval_isnan) ) {
406             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
407             for(j1=-1; j1<=1; j1++) {
408             PDL_Indx j2 = n+j1;
409             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
410             for(i1=-1; i1<=1; i1++) {
411             /* ignore central pixel, which we know is bad */
412             if ( i1==0 && j1==0 ) continue;
413             PDL_Indx i2 = m+i1;
414             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
415             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
416             if ( PDL_ISBAD2(a_val,a_badval,P,a_badval_isnan) ) continue;
417             tmp += a_val;
418             norm++;
419             } /* for: i1 */
420             } /* for: j1 */
421             /* Patch */
422             if (norm>0) {
423             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
424             } else {
425             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
426             flag = 1;
427             }
428             } else,) {
429             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
430             } /* if: ISGOODVAR() */
431             }} /* Close n */}} /* Close m */
432             #line 615 "lib/PDL/Image2D.pd"
433             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
434             #line 616 "lib/PDL/Image2D.pd"
435             /* handle bad flag */
436             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
437             #line 438 "lib/PDL/Image2D-pp-patchbad2d.c"
438             }
439 0           } break;
440 0           case PDL_LL: {
441 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
442             {
443             #line 584 "lib/PDL/Image2D.pd"
444             PDL_IF_BAD(int flag = 0;,)
445             PDL_BROADCASTLOOP_START_patchbad2d_readdata
446             #line 586 "lib/PDL/Image2D.pd"
447             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
448             #line 587 "lib/PDL/Image2D.pd"
449             PDL_LongLong a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
450             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,Q,a_badval_isnan) ) {
451             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
452             for(j1=-1; j1<=1; j1++) {
453             PDL_Indx j2 = n+j1;
454             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
455             for(i1=-1; i1<=1; i1++) {
456             /* ignore central pixel, which we know is bad */
457             if ( i1==0 && j1==0 ) continue;
458             PDL_Indx i2 = m+i1;
459             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
460             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
461             if ( PDL_ISBAD2(a_val,a_badval,Q,a_badval_isnan) ) continue;
462             tmp += a_val;
463             norm++;
464             } /* for: i1 */
465             } /* for: j1 */
466             /* Patch */
467             if (norm>0) {
468             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
469             } else {
470             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
471             flag = 1;
472             }
473             } else,) {
474             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
475             } /* if: ISGOODVAR() */
476             }} /* Close n */}} /* Close m */
477             #line 615 "lib/PDL/Image2D.pd"
478             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
479             #line 616 "lib/PDL/Image2D.pd"
480             /* handle bad flag */
481             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
482             #line 483 "lib/PDL/Image2D-pp-patchbad2d.c"
483             }
484 0           } break;
485 0           case PDL_F: {
486 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
487             {
488             #line 584 "lib/PDL/Image2D.pd"
489             PDL_IF_BAD(int flag = 0;,)
490             PDL_BROADCASTLOOP_START_patchbad2d_readdata
491             #line 586 "lib/PDL/Image2D.pd"
492             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
493             #line 587 "lib/PDL/Image2D.pd"
494             PDL_Float a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
495             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,F,a_badval_isnan) ) {
496             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
497             for(j1=-1; j1<=1; j1++) {
498             PDL_Indx j2 = n+j1;
499             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
500             for(i1=-1; i1<=1; i1++) {
501             /* ignore central pixel, which we know is bad */
502             if ( i1==0 && j1==0 ) continue;
503             PDL_Indx i2 = m+i1;
504             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
505             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
506             if ( PDL_ISBAD2(a_val,a_badval,F,a_badval_isnan) ) continue;
507             tmp += a_val;
508             norm++;
509             } /* for: i1 */
510             } /* for: j1 */
511             /* Patch */
512             if (norm>0) {
513             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
514             } else {
515             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
516             flag = 1;
517             }
518             } else,) {
519             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
520             } /* if: ISGOODVAR() */
521             }} /* Close n */}} /* Close m */
522             #line 615 "lib/PDL/Image2D.pd"
523             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
524             #line 616 "lib/PDL/Image2D.pd"
525             /* handle bad flag */
526             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
527             #line 528 "lib/PDL/Image2D-pp-patchbad2d.c"
528             }
529 0           } break;
530 1           case PDL_D: {
531 1 50         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
532             {
533             #line 584 "lib/PDL/Image2D.pd"
534             PDL_IF_BAD(int flag = 0;,)
535             PDL_BROADCASTLOOP_START_patchbad2d_readdata
536             #line 586 "lib/PDL/Image2D.pd"
537             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
538             #line 587 "lib/PDL/Image2D.pd"
539             PDL_Double a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
540             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,D,a_badval_isnan) ) {
541             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
542             for(j1=-1; j1<=1; j1++) {
543             PDL_Indx j2 = n+j1;
544             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
545             for(i1=-1; i1<=1; i1++) {
546             /* ignore central pixel, which we know is bad */
547             if ( i1==0 && j1==0 ) continue;
548             PDL_Indx i2 = m+i1;
549             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
550             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
551             if ( PDL_ISBAD2(a_val,a_badval,D,a_badval_isnan) ) continue;
552             tmp += a_val;
553             norm++;
554             } /* for: i1 */
555             } /* for: j1 */
556             /* Patch */
557             if (norm>0) {
558             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
559             } else {
560             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
561             flag = 1;
562             }
563             } else,) {
564             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
565             } /* if: ISGOODVAR() */
566             }} /* Close n */}} /* Close m */
567             #line 615 "lib/PDL/Image2D.pd"
568             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
569             #line 616 "lib/PDL/Image2D.pd"
570             /* handle bad flag */
571             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
572             #line 573 "lib/PDL/Image2D-pp-patchbad2d.c"
573             }
574 1           } break;
575 0           case PDL_LD: {
576 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
577             {
578             #line 584 "lib/PDL/Image2D.pd"
579             PDL_IF_BAD(int flag = 0;,)
580             PDL_BROADCASTLOOP_START_patchbad2d_readdata
581             #line 586 "lib/PDL/Image2D.pd"
582             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
583             #line 587 "lib/PDL/Image2D.pd"
584             PDL_LDouble a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
585             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,E,a_badval_isnan) ) {
586             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
587             for(j1=-1; j1<=1; j1++) {
588             PDL_Indx j2 = n+j1;
589             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
590             for(i1=-1; i1<=1; i1++) {
591             /* ignore central pixel, which we know is bad */
592             if ( i1==0 && j1==0 ) continue;
593             PDL_Indx i2 = m+i1;
594             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
595             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
596             if ( PDL_ISBAD2(a_val,a_badval,E,a_badval_isnan) ) continue;
597             tmp += a_val;
598             norm++;
599             } /* for: i1 */
600             } /* for: j1 */
601             /* Patch */
602             if (norm>0) {
603             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
604             } else {
605             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
606             flag = 1;
607             }
608             } else,) {
609             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
610             } /* if: ISGOODVAR() */
611             }} /* Close n */}} /* Close m */
612             #line 615 "lib/PDL/Image2D.pd"
613             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
614             #line 616 "lib/PDL/Image2D.pd"
615             /* handle bad flag */
616             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
617             #line 618 "lib/PDL/Image2D-pp-patchbad2d.c"
618             }
619 0           } break;
620 0           case PDL_CF: {
621 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
622             {
623             #line 584 "lib/PDL/Image2D.pd"
624             PDL_IF_BAD(int flag = 0;,)
625             PDL_BROADCASTLOOP_START_patchbad2d_readdata
626             #line 586 "lib/PDL/Image2D.pd"
627             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
628             #line 587 "lib/PDL/Image2D.pd"
629             PDL_CFloat a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
630             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,G,a_badval_isnan) ) {
631             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
632             for(j1=-1; j1<=1; j1++) {
633             PDL_Indx j2 = n+j1;
634             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
635             for(i1=-1; i1<=1; i1++) {
636             /* ignore central pixel, which we know is bad */
637             if ( i1==0 && j1==0 ) continue;
638             PDL_Indx i2 = m+i1;
639             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
640             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
641             if ( PDL_ISBAD2(a_val,a_badval,G,a_badval_isnan) ) continue;
642             tmp += a_val;
643             norm++;
644             } /* for: i1 */
645             } /* for: j1 */
646             /* Patch */
647             if (norm>0) {
648             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
649             } else {
650             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
651             flag = 1;
652             }
653             } else,) {
654             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
655             } /* if: ISGOODVAR() */
656             }} /* Close n */}} /* Close m */
657             #line 615 "lib/PDL/Image2D.pd"
658             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
659             #line 616 "lib/PDL/Image2D.pd"
660             /* handle bad flag */
661             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
662             #line 663 "lib/PDL/Image2D-pp-patchbad2d.c"
663             }
664 0           } break;
665 0           case PDL_CD: {
666 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_CDouble,C)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
667             {
668             #line 584 "lib/PDL/Image2D.pd"
669             PDL_IF_BAD(int flag = 0;,)
670             PDL_BROADCASTLOOP_START_patchbad2d_readdata
671             #line 586 "lib/PDL/Image2D.pd"
672             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
673             #line 587 "lib/PDL/Image2D.pd"
674             PDL_CDouble a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
675             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,C,a_badval_isnan) ) {
676             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
677             for(j1=-1; j1<=1; j1++) {
678             PDL_Indx j2 = n+j1;
679             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
680             for(i1=-1; i1<=1; i1++) {
681             /* ignore central pixel, which we know is bad */
682             if ( i1==0 && j1==0 ) continue;
683             PDL_Indx i2 = m+i1;
684             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
685             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
686             if ( PDL_ISBAD2(a_val,a_badval,C,a_badval_isnan) ) continue;
687             tmp += a_val;
688             norm++;
689             } /* for: i1 */
690             } /* for: j1 */
691             /* Patch */
692             if (norm>0) {
693             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
694             } else {
695             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
696             flag = 1;
697             }
698             } else,) {
699             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
700             } /* if: ISGOODVAR() */
701             }} /* Close n */}} /* Close m */
702             #line 615 "lib/PDL/Image2D.pd"
703             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
704             #line 616 "lib/PDL/Image2D.pd"
705             /* handle bad flag */
706             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
707             #line 708 "lib/PDL/Image2D-pp-patchbad2d.c"
708             }
709 0           } break;
710 0           case PDL_CLD: {
711 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_CLDouble,H)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
712             {
713             #line 584 "lib/PDL/Image2D.pd"
714             PDL_IF_BAD(int flag = 0;,)
715             PDL_BROADCASTLOOP_START_patchbad2d_readdata
716             #line 586 "lib/PDL/Image2D.pd"
717             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
718             #line 587 "lib/PDL/Image2D.pd"
719             PDL_CLDouble a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
720             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,H,a_badval_isnan) ) {
721             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
722             for(j1=-1; j1<=1; j1++) {
723             PDL_Indx j2 = n+j1;
724             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
725             for(i1=-1; i1<=1; i1++) {
726             /* ignore central pixel, which we know is bad */
727             if ( i1==0 && j1==0 ) continue;
728             PDL_Indx i2 = m+i1;
729             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
730             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
731             if ( PDL_ISBAD2(a_val,a_badval,H,a_badval_isnan) ) continue;
732             tmp += a_val;
733             norm++;
734             } /* for: i1 */
735             } /* for: j1 */
736             /* Patch */
737             if (norm>0) {
738             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
739             } else {
740             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
741             flag = 1;
742             }
743             } else,) {
744             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
745             } /* if: ISGOODVAR() */
746             }} /* Close n */}} /* Close m */
747             #line 615 "lib/PDL/Image2D.pd"
748             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
749             #line 616 "lib/PDL/Image2D.pd"
750             /* handle bad flag */
751             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
752             #line 753 "lib/PDL/Image2D-pp-patchbad2d.c"
753             }
754 0           } break;
755 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in patchbad2d: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
756             }
757             #undef PDL_BAD_CODE
758             #undef PDL_IF_BAD
759             } else { /* ** else do 'good' Code ** */
760             #define PDL_IF_BAD(t,f) f
761 1           switch (__privtrans->__datatype) { /* Start generic switch */
762 0           case PDL_SB: {
763 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
764             {
765             #line 584 "lib/PDL/Image2D.pd"
766             PDL_IF_BAD(int flag = 0;,)
767             PDL_BROADCASTLOOP_START_patchbad2d_readdata
768             #line 586 "lib/PDL/Image2D.pd"
769             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
770             #line 587 "lib/PDL/Image2D.pd"
771             PDL_SByte a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
772             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,A,a_badval_isnan) ) {
773             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
774             for(j1=-1; j1<=1; j1++) {
775             PDL_Indx j2 = n+j1;
776             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
777             for(i1=-1; i1<=1; i1++) {
778             /* ignore central pixel, which we know is bad */
779             if ( i1==0 && j1==0 ) continue;
780             PDL_Indx i2 = m+i1;
781             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
782             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
783             if ( PDL_ISBAD2(a_val,a_badval,A,a_badval_isnan) ) continue;
784             tmp += a_val;
785             norm++;
786             } /* for: i1 */
787             } /* for: j1 */
788             /* Patch */
789             if (norm>0) {
790             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
791             } else {
792             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
793             flag = 1;
794             }
795             } else,) {
796             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
797             } /* if: ISGOODVAR() */
798             }} /* Close n */}} /* Close m */
799             #line 615 "lib/PDL/Image2D.pd"
800             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
801             #line 616 "lib/PDL/Image2D.pd"
802             /* handle bad flag */
803             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
804             #line 805 "lib/PDL/Image2D-pp-patchbad2d.c"
805             }
806 0           } break;
807 0           case PDL_B: {
808 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
809             {
810             #line 584 "lib/PDL/Image2D.pd"
811             PDL_IF_BAD(int flag = 0;,)
812             PDL_BROADCASTLOOP_START_patchbad2d_readdata
813             #line 586 "lib/PDL/Image2D.pd"
814             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
815             #line 587 "lib/PDL/Image2D.pd"
816             PDL_Byte a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
817             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,B,a_badval_isnan) ) {
818             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
819             for(j1=-1; j1<=1; j1++) {
820             PDL_Indx j2 = n+j1;
821             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
822             for(i1=-1; i1<=1; i1++) {
823             /* ignore central pixel, which we know is bad */
824             if ( i1==0 && j1==0 ) continue;
825             PDL_Indx i2 = m+i1;
826             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
827             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
828             if ( PDL_ISBAD2(a_val,a_badval,B,a_badval_isnan) ) continue;
829             tmp += a_val;
830             norm++;
831             } /* for: i1 */
832             } /* for: j1 */
833             /* Patch */
834             if (norm>0) {
835             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
836             } else {
837             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
838             flag = 1;
839             }
840             } else,) {
841             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
842             } /* if: ISGOODVAR() */
843             }} /* Close n */}} /* Close m */
844             #line 615 "lib/PDL/Image2D.pd"
845             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
846             #line 616 "lib/PDL/Image2D.pd"
847             /* handle bad flag */
848             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
849             #line 850 "lib/PDL/Image2D-pp-patchbad2d.c"
850             }
851 0           } break;
852 0           case PDL_S: {
853 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
854             {
855             #line 584 "lib/PDL/Image2D.pd"
856             PDL_IF_BAD(int flag = 0;,)
857             PDL_BROADCASTLOOP_START_patchbad2d_readdata
858             #line 586 "lib/PDL/Image2D.pd"
859             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
860             #line 587 "lib/PDL/Image2D.pd"
861             PDL_Short a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
862             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,S,a_badval_isnan) ) {
863             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
864             for(j1=-1; j1<=1; j1++) {
865             PDL_Indx j2 = n+j1;
866             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
867             for(i1=-1; i1<=1; i1++) {
868             /* ignore central pixel, which we know is bad */
869             if ( i1==0 && j1==0 ) continue;
870             PDL_Indx i2 = m+i1;
871             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
872             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
873             if ( PDL_ISBAD2(a_val,a_badval,S,a_badval_isnan) ) continue;
874             tmp += a_val;
875             norm++;
876             } /* for: i1 */
877             } /* for: j1 */
878             /* Patch */
879             if (norm>0) {
880             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
881             } else {
882             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
883             flag = 1;
884             }
885             } else,) {
886             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
887             } /* if: ISGOODVAR() */
888             }} /* Close n */}} /* Close m */
889             #line 615 "lib/PDL/Image2D.pd"
890             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
891             #line 616 "lib/PDL/Image2D.pd"
892             /* handle bad flag */
893             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
894             #line 895 "lib/PDL/Image2D-pp-patchbad2d.c"
895             }
896 0           } break;
897 0           case PDL_US: {
898 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
899             {
900             #line 584 "lib/PDL/Image2D.pd"
901             PDL_IF_BAD(int flag = 0;,)
902             PDL_BROADCASTLOOP_START_patchbad2d_readdata
903             #line 586 "lib/PDL/Image2D.pd"
904             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
905             #line 587 "lib/PDL/Image2D.pd"
906             PDL_Ushort a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
907             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,U,a_badval_isnan) ) {
908             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
909             for(j1=-1; j1<=1; j1++) {
910             PDL_Indx j2 = n+j1;
911             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
912             for(i1=-1; i1<=1; i1++) {
913             /* ignore central pixel, which we know is bad */
914             if ( i1==0 && j1==0 ) continue;
915             PDL_Indx i2 = m+i1;
916             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
917             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
918             if ( PDL_ISBAD2(a_val,a_badval,U,a_badval_isnan) ) continue;
919             tmp += a_val;
920             norm++;
921             } /* for: i1 */
922             } /* for: j1 */
923             /* Patch */
924             if (norm>0) {
925             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
926             } else {
927             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
928             flag = 1;
929             }
930             } else,) {
931             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
932             } /* if: ISGOODVAR() */
933             }} /* Close n */}} /* Close m */
934             #line 615 "lib/PDL/Image2D.pd"
935             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
936             #line 616 "lib/PDL/Image2D.pd"
937             /* handle bad flag */
938             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
939             #line 940 "lib/PDL/Image2D-pp-patchbad2d.c"
940             }
941 0           } break;
942 0           case PDL_L: {
943 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
944             {
945             #line 584 "lib/PDL/Image2D.pd"
946             PDL_IF_BAD(int flag = 0;,)
947             PDL_BROADCASTLOOP_START_patchbad2d_readdata
948             #line 586 "lib/PDL/Image2D.pd"
949             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
950             #line 587 "lib/PDL/Image2D.pd"
951             PDL_Long a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
952             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,L,a_badval_isnan) ) {
953             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
954             for(j1=-1; j1<=1; j1++) {
955             PDL_Indx j2 = n+j1;
956             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
957             for(i1=-1; i1<=1; i1++) {
958             /* ignore central pixel, which we know is bad */
959             if ( i1==0 && j1==0 ) continue;
960             PDL_Indx i2 = m+i1;
961             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
962             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
963             if ( PDL_ISBAD2(a_val,a_badval,L,a_badval_isnan) ) continue;
964             tmp += a_val;
965             norm++;
966             } /* for: i1 */
967             } /* for: j1 */
968             /* Patch */
969             if (norm>0) {
970             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
971             } else {
972             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
973             flag = 1;
974             }
975             } else,) {
976             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
977             } /* if: ISGOODVAR() */
978             }} /* Close n */}} /* Close m */
979             #line 615 "lib/PDL/Image2D.pd"
980             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
981             #line 616 "lib/PDL/Image2D.pd"
982             /* handle bad flag */
983             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
984             #line 985 "lib/PDL/Image2D-pp-patchbad2d.c"
985             }
986 0           } break;
987 0           case PDL_UL: {
988 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
989             {
990             #line 584 "lib/PDL/Image2D.pd"
991             PDL_IF_BAD(int flag = 0;,)
992             PDL_BROADCASTLOOP_START_patchbad2d_readdata
993             #line 586 "lib/PDL/Image2D.pd"
994             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
995             #line 587 "lib/PDL/Image2D.pd"
996             PDL_ULong a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
997             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,K,a_badval_isnan) ) {
998             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
999             for(j1=-1; j1<=1; j1++) {
1000             PDL_Indx j2 = n+j1;
1001             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
1002             for(i1=-1; i1<=1; i1++) {
1003             /* ignore central pixel, which we know is bad */
1004             if ( i1==0 && j1==0 ) continue;
1005             PDL_Indx i2 = m+i1;
1006             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
1007             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
1008             if ( PDL_ISBAD2(a_val,a_badval,K,a_badval_isnan) ) continue;
1009             tmp += a_val;
1010             norm++;
1011             } /* for: i1 */
1012             } /* for: j1 */
1013             /* Patch */
1014             if (norm>0) {
1015             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
1016             } else {
1017             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
1018             flag = 1;
1019             }
1020             } else,) {
1021             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
1022             } /* if: ISGOODVAR() */
1023             }} /* Close n */}} /* Close m */
1024             #line 615 "lib/PDL/Image2D.pd"
1025             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
1026             #line 616 "lib/PDL/Image2D.pd"
1027             /* handle bad flag */
1028             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
1029             #line 1030 "lib/PDL/Image2D-pp-patchbad2d.c"
1030             }
1031 0           } break;
1032 0           case PDL_IND: {
1033 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1034             {
1035             #line 584 "lib/PDL/Image2D.pd"
1036             PDL_IF_BAD(int flag = 0;,)
1037             PDL_BROADCASTLOOP_START_patchbad2d_readdata
1038             #line 586 "lib/PDL/Image2D.pd"
1039             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
1040             #line 587 "lib/PDL/Image2D.pd"
1041             PDL_Indx a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
1042             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,N,a_badval_isnan) ) {
1043             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
1044             for(j1=-1; j1<=1; j1++) {
1045             PDL_Indx j2 = n+j1;
1046             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
1047             for(i1=-1; i1<=1; i1++) {
1048             /* ignore central pixel, which we know is bad */
1049             if ( i1==0 && j1==0 ) continue;
1050             PDL_Indx i2 = m+i1;
1051             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
1052             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
1053             if ( PDL_ISBAD2(a_val,a_badval,N,a_badval_isnan) ) continue;
1054             tmp += a_val;
1055             norm++;
1056             } /* for: i1 */
1057             } /* for: j1 */
1058             /* Patch */
1059             if (norm>0) {
1060             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
1061             } else {
1062             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
1063             flag = 1;
1064             }
1065             } else,) {
1066             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
1067             } /* if: ISGOODVAR() */
1068             }} /* Close n */}} /* Close m */
1069             #line 615 "lib/PDL/Image2D.pd"
1070             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
1071             #line 616 "lib/PDL/Image2D.pd"
1072             /* handle bad flag */
1073             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
1074             #line 1075 "lib/PDL/Image2D-pp-patchbad2d.c"
1075             }
1076 0           } break;
1077 0           case PDL_ULL: {
1078 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1079             {
1080             #line 584 "lib/PDL/Image2D.pd"
1081             PDL_IF_BAD(int flag = 0;,)
1082             PDL_BROADCASTLOOP_START_patchbad2d_readdata
1083             #line 586 "lib/PDL/Image2D.pd"
1084             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
1085             #line 587 "lib/PDL/Image2D.pd"
1086             PDL_ULongLong a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
1087             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,P,a_badval_isnan) ) {
1088             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
1089             for(j1=-1; j1<=1; j1++) {
1090             PDL_Indx j2 = n+j1;
1091             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
1092             for(i1=-1; i1<=1; i1++) {
1093             /* ignore central pixel, which we know is bad */
1094             if ( i1==0 && j1==0 ) continue;
1095             PDL_Indx i2 = m+i1;
1096             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
1097             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
1098             if ( PDL_ISBAD2(a_val,a_badval,P,a_badval_isnan) ) continue;
1099             tmp += a_val;
1100             norm++;
1101             } /* for: i1 */
1102             } /* for: j1 */
1103             /* Patch */
1104             if (norm>0) {
1105             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
1106             } else {
1107             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
1108             flag = 1;
1109             }
1110             } else,) {
1111             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
1112             } /* if: ISGOODVAR() */
1113             }} /* Close n */}} /* Close m */
1114             #line 615 "lib/PDL/Image2D.pd"
1115             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
1116             #line 616 "lib/PDL/Image2D.pd"
1117             /* handle bad flag */
1118             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
1119             #line 1120 "lib/PDL/Image2D-pp-patchbad2d.c"
1120             }
1121 0           } break;
1122 0           case PDL_LL: {
1123 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1124             {
1125             #line 584 "lib/PDL/Image2D.pd"
1126             PDL_IF_BAD(int flag = 0;,)
1127             PDL_BROADCASTLOOP_START_patchbad2d_readdata
1128             #line 586 "lib/PDL/Image2D.pd"
1129             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
1130             #line 587 "lib/PDL/Image2D.pd"
1131             PDL_LongLong a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
1132             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,Q,a_badval_isnan) ) {
1133             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
1134             for(j1=-1; j1<=1; j1++) {
1135             PDL_Indx j2 = n+j1;
1136             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
1137             for(i1=-1; i1<=1; i1++) {
1138             /* ignore central pixel, which we know is bad */
1139             if ( i1==0 && j1==0 ) continue;
1140             PDL_Indx i2 = m+i1;
1141             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
1142             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
1143             if ( PDL_ISBAD2(a_val,a_badval,Q,a_badval_isnan) ) continue;
1144             tmp += a_val;
1145             norm++;
1146             } /* for: i1 */
1147             } /* for: j1 */
1148             /* Patch */
1149             if (norm>0) {
1150             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
1151             } else {
1152             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
1153             flag = 1;
1154             }
1155             } else,) {
1156             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
1157             } /* if: ISGOODVAR() */
1158             }} /* Close n */}} /* Close m */
1159             #line 615 "lib/PDL/Image2D.pd"
1160             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
1161             #line 616 "lib/PDL/Image2D.pd"
1162             /* handle bad flag */
1163             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
1164             #line 1165 "lib/PDL/Image2D-pp-patchbad2d.c"
1165             }
1166 0           } break;
1167 0           case PDL_F: {
1168 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1169             {
1170             #line 584 "lib/PDL/Image2D.pd"
1171             PDL_IF_BAD(int flag = 0;,)
1172             PDL_BROADCASTLOOP_START_patchbad2d_readdata
1173             #line 586 "lib/PDL/Image2D.pd"
1174             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
1175             #line 587 "lib/PDL/Image2D.pd"
1176             PDL_Float a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
1177             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,F,a_badval_isnan) ) {
1178             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
1179             for(j1=-1; j1<=1; j1++) {
1180             PDL_Indx j2 = n+j1;
1181             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
1182             for(i1=-1; i1<=1; i1++) {
1183             /* ignore central pixel, which we know is bad */
1184             if ( i1==0 && j1==0 ) continue;
1185             PDL_Indx i2 = m+i1;
1186             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
1187             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
1188             if ( PDL_ISBAD2(a_val,a_badval,F,a_badval_isnan) ) continue;
1189             tmp += a_val;
1190             norm++;
1191             } /* for: i1 */
1192             } /* for: j1 */
1193             /* Patch */
1194             if (norm>0) {
1195             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
1196             } else {
1197             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
1198             flag = 1;
1199             }
1200             } else,) {
1201             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
1202             } /* if: ISGOODVAR() */
1203             }} /* Close n */}} /* Close m */
1204             #line 615 "lib/PDL/Image2D.pd"
1205             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
1206             #line 616 "lib/PDL/Image2D.pd"
1207             /* handle bad flag */
1208             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
1209             #line 1210 "lib/PDL/Image2D-pp-patchbad2d.c"
1210             }
1211 0           } break;
1212 1           case PDL_D: {
1213 1 50         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
1214             {
1215             #line 584 "lib/PDL/Image2D.pd"
1216             PDL_IF_BAD(int flag = 0;,)
1217             PDL_BROADCASTLOOP_START_patchbad2d_readdata
1218             #line 586 "lib/PDL/Image2D.pd"
1219             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
1220             #line 587 "lib/PDL/Image2D.pd"
1221             PDL_Double a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
1222             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,D,a_badval_isnan) ) {
1223             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
1224             for(j1=-1; j1<=1; j1++) {
1225             PDL_Indx j2 = n+j1;
1226             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
1227             for(i1=-1; i1<=1; i1++) {
1228             /* ignore central pixel, which we know is bad */
1229             if ( i1==0 && j1==0 ) continue;
1230             PDL_Indx i2 = m+i1;
1231             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
1232             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
1233             if ( PDL_ISBAD2(a_val,a_badval,D,a_badval_isnan) ) continue;
1234             tmp += a_val;
1235             norm++;
1236             } /* for: i1 */
1237             } /* for: j1 */
1238             /* Patch */
1239             if (norm>0) {
1240             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
1241             } else {
1242             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
1243             flag = 1;
1244             }
1245             } else,) {
1246             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
1247             } /* if: ISGOODVAR() */
1248             }} /* Close n */}} /* Close m */
1249             #line 615 "lib/PDL/Image2D.pd"
1250             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
1251             #line 616 "lib/PDL/Image2D.pd"
1252             /* handle bad flag */
1253             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
1254             #line 1255 "lib/PDL/Image2D-pp-patchbad2d.c"
1255             }
1256 1           } break;
1257 0           case PDL_LD: {
1258 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1259             {
1260             #line 584 "lib/PDL/Image2D.pd"
1261             PDL_IF_BAD(int flag = 0;,)
1262             PDL_BROADCASTLOOP_START_patchbad2d_readdata
1263             #line 586 "lib/PDL/Image2D.pd"
1264             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
1265             #line 587 "lib/PDL/Image2D.pd"
1266             PDL_LDouble a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
1267             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,E,a_badval_isnan) ) {
1268             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
1269             for(j1=-1; j1<=1; j1++) {
1270             PDL_Indx j2 = n+j1;
1271             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
1272             for(i1=-1; i1<=1; i1++) {
1273             /* ignore central pixel, which we know is bad */
1274             if ( i1==0 && j1==0 ) continue;
1275             PDL_Indx i2 = m+i1;
1276             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
1277             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
1278             if ( PDL_ISBAD2(a_val,a_badval,E,a_badval_isnan) ) continue;
1279             tmp += a_val;
1280             norm++;
1281             } /* for: i1 */
1282             } /* for: j1 */
1283             /* Patch */
1284             if (norm>0) {
1285             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
1286             } else {
1287             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
1288             flag = 1;
1289             }
1290             } else,) {
1291             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
1292             } /* if: ISGOODVAR() */
1293             }} /* Close n */}} /* Close m */
1294             #line 615 "lib/PDL/Image2D.pd"
1295             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
1296             #line 616 "lib/PDL/Image2D.pd"
1297             /* handle bad flag */
1298             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
1299             #line 1300 "lib/PDL/Image2D-pp-patchbad2d.c"
1300             }
1301 0           } break;
1302 0           case PDL_CF: {
1303 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_CFloat,G)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1304             {
1305             #line 584 "lib/PDL/Image2D.pd"
1306             PDL_IF_BAD(int flag = 0;,)
1307             PDL_BROADCASTLOOP_START_patchbad2d_readdata
1308             #line 586 "lib/PDL/Image2D.pd"
1309             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
1310             #line 587 "lib/PDL/Image2D.pd"
1311             PDL_CFloat a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
1312             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,G,a_badval_isnan) ) {
1313             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
1314             for(j1=-1; j1<=1; j1++) {
1315             PDL_Indx j2 = n+j1;
1316             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
1317             for(i1=-1; i1<=1; i1++) {
1318             /* ignore central pixel, which we know is bad */
1319             if ( i1==0 && j1==0 ) continue;
1320             PDL_Indx i2 = m+i1;
1321             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
1322             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
1323             if ( PDL_ISBAD2(a_val,a_badval,G,a_badval_isnan) ) continue;
1324             tmp += a_val;
1325             norm++;
1326             } /* for: i1 */
1327             } /* for: j1 */
1328             /* Patch */
1329             if (norm>0) {
1330             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
1331             } else {
1332             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
1333             flag = 1;
1334             }
1335             } else,) {
1336             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
1337             } /* if: ISGOODVAR() */
1338             }} /* Close n */}} /* Close m */
1339             #line 615 "lib/PDL/Image2D.pd"
1340             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
1341             #line 616 "lib/PDL/Image2D.pd"
1342             /* handle bad flag */
1343             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
1344             #line 1345 "lib/PDL/Image2D-pp-patchbad2d.c"
1345             }
1346 0           } break;
1347 0           case PDL_CD: {
1348 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_CDouble,C)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1349             {
1350             #line 584 "lib/PDL/Image2D.pd"
1351             PDL_IF_BAD(int flag = 0;,)
1352             PDL_BROADCASTLOOP_START_patchbad2d_readdata
1353             #line 586 "lib/PDL/Image2D.pd"
1354             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
1355             #line 587 "lib/PDL/Image2D.pd"
1356             PDL_CDouble a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
1357             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,C,a_badval_isnan) ) {
1358             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
1359             for(j1=-1; j1<=1; j1++) {
1360             PDL_Indx j2 = n+j1;
1361             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
1362             for(i1=-1; i1<=1; i1++) {
1363             /* ignore central pixel, which we know is bad */
1364             if ( i1==0 && j1==0 ) continue;
1365             PDL_Indx i2 = m+i1;
1366             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
1367             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
1368             if ( PDL_ISBAD2(a_val,a_badval,C,a_badval_isnan) ) continue;
1369             tmp += a_val;
1370             norm++;
1371             } /* for: i1 */
1372             } /* for: j1 */
1373             /* Patch */
1374             if (norm>0) {
1375             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
1376             } else {
1377             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
1378             flag = 1;
1379             }
1380             } else,) {
1381             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
1382             } /* if: ISGOODVAR() */
1383             }} /* Close n */}} /* Close m */
1384             #line 615 "lib/PDL/Image2D.pd"
1385             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
1386             #line 616 "lib/PDL/Image2D.pd"
1387             /* handle bad flag */
1388             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
1389             #line 1390 "lib/PDL/Image2D-pp-patchbad2d.c"
1390             }
1391 0           } break;
1392 0           case PDL_CLD: {
1393 0 0         PDL_DECLARE_PARAMS_patchbad2d_1(PDL_CLDouble,H)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1394             {
1395             #line 584 "lib/PDL/Image2D.pd"
1396             PDL_IF_BAD(int flag = 0;,)
1397             PDL_BROADCASTLOOP_START_patchbad2d_readdata
1398             #line 586 "lib/PDL/Image2D.pd"
1399             {/* Open n */ PDL_EXPAND2(register PDL_Indx n=0, __n_stop=(__n_size)); for(; n<__n_stop; n+=1) {{/* Open m */ PDL_EXPAND2(register PDL_Indx m=0, __m_stop=(__m_size)); for(; m<__m_stop; m+=1) {
1400             #line 587 "lib/PDL/Image2D.pd"
1401             PDL_CLDouble a_val = (a_datap)[0+(__inc_a_m*(m))+(__inc_a_n*(n))];
1402             PDL_IF_BAD(if ( !!PDL_ISBAD2(a_val,a_badval,H,a_badval_isnan) ) {
1403             PDL_CLDouble tmp = 0; PDL_Indx norm=0; int i1; int j1;
1404             for(j1=-1; j1<=1; j1++) {
1405             PDL_Indx j2 = n+j1;
1406             if ( j2<0 || j2>=__privtrans->ind_sizes[1] ) continue;
1407             for(i1=-1; i1<=1; i1++) {
1408             /* ignore central pixel, which we know is bad */
1409             if ( i1==0 && j1==0 ) continue;
1410             PDL_Indx i2 = m+i1;
1411             if ( i2<0 || i2>=__privtrans->ind_sizes[0] ) continue;
1412             a_val = (a_datap)[0+(__inc_a_m*(i2))+(__inc_a_n*(j2))];
1413             if ( PDL_ISBAD2(a_val,a_badval,H,a_badval_isnan) ) continue;
1414             tmp += a_val;
1415             norm++;
1416             } /* for: i1 */
1417             } /* for: j1 */
1418             /* Patch */
1419             if (norm>0) {
1420             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = tmp/norm;
1421             } else {
1422             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))]=b_badval;
1423             flag = 1;
1424             }
1425             } else,) {
1426             (b_datap)[0+(__inc_b_m*(m))+(__inc_b_n*(n))] = a_val;
1427             } /* if: ISGOODVAR() */
1428             }} /* Close n */}} /* Close m */
1429             #line 615 "lib/PDL/Image2D.pd"
1430             PDL_BROADCASTLOOP_END_patchbad2d_readdata /* broadcastloop */
1431             #line 616 "lib/PDL/Image2D.pd"
1432             /* handle bad flag */
1433             PDL_IF_BAD(if ( flag ) __privtrans->pdls[1]->state |= PDL_BADVAL;,)
1434             #line 1435 "lib/PDL/Image2D-pp-patchbad2d.c"
1435             }
1436 0           } break;
1437 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in patchbad2d: unhandled datatype(%d), only handles (ABSULKNPQFDEGCH)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
1438             }
1439             #undef PDL_IF_BAD
1440             }
1441 2           return PDL_err;
1442             }
1443              
1444             static pdl_datatypes pdl_patchbad2d_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 };
1445             static PDL_Indx pdl_patchbad2d_vtable_realdims[] = { 2, 2 };
1446             static char *pdl_patchbad2d_vtable_parnames[] = { "a","b" };
1447             static short pdl_patchbad2d_vtable_parflags[] = {
1448             0,
1449             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
1450             };
1451             static pdl_datatypes pdl_patchbad2d_vtable_partypes[] = { -1, -1 };
1452             static PDL_Indx pdl_patchbad2d_vtable_realdims_starts[] = { 0, 2 };
1453             static PDL_Indx pdl_patchbad2d_vtable_realdims_ind_ids[] = { 0, 1, 0, 1 };
1454             static char *pdl_patchbad2d_vtable_indnames[] = { "m","n" };
1455             pdl_transvtable pdl_patchbad2d_vtable = {
1456             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_patchbad2d_vtable_gentypes, 1, 2, NULL /*CORE21*/,
1457             pdl_patchbad2d_vtable_realdims, pdl_patchbad2d_vtable_parnames,
1458             pdl_patchbad2d_vtable_parflags, pdl_patchbad2d_vtable_partypes,
1459             pdl_patchbad2d_vtable_realdims_starts, pdl_patchbad2d_vtable_realdims_ind_ids, 4,
1460             2, pdl_patchbad2d_vtable_indnames,
1461             NULL, pdl_patchbad2d_readdata, NULL,
1462             NULL,
1463             0,"PDL::Image2D::patchbad2d"
1464             };
1465              
1466              
1467 2           pdl_error pdl_run_patchbad2d(pdl *a,pdl *b) {
1468 2           pdl_error PDL_err = {0, NULL, 0};
1469 2 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
1470 2           pdl_trans *__privtrans = PDL->create_trans(&pdl_patchbad2d_vtable);
1471 2 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
1472 2           __privtrans->pdls[0] = a;
1473 2           __privtrans->pdls[1] = b;
1474 2 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
1475 2 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
1476 2           return PDL_err;
1477             }