File Coverage

lib/PDL/Bad-pp-setbadif.c
Criterion Covered Total %
statement 58 295 19.6
branch 108 1440 7.5
condition n/a
subroutine n/a
pod n/a
total 166 1735 9.5


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