File Coverage

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