File Coverage

lib/PDL/Primitive-pp-clip.c
Criterion Covered Total %
statement 31 172 18.0
branch 39 1410 2.7
condition n/a
subroutine n/a
pod n/a
total 70 1582 4.4


line stmt bran cond sub pod time code
1              
2             #line 453 "lib/PDL/PP.pm"
3             /*
4             * THIS FILE WAS GENERATED BY PDL::PP from lib/PDL/Primitive.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_Primitive
21             extern Core* PDL; /* Structure hold core C functions */
22              
23             #line 1857 "lib/PDL/PP.pm"
24             pdl_error pdl_clip_readdata(pdl_trans *__privtrans) {
25             pdl_error PDL_err = {0, NULL, 0};
26             #line 27 "lib/PDL/Primitive-pp-clip.c"
27 11 50         if (!__privtrans->broadcast.incs) return PDL->make_error(PDL_EUSERERROR, "Error in clip:" "broadcast.incs NULL");
28             /* broadcastloop declarations */
29             int __brcloopval;
30             register PDL_Indx __tind0,__tind1; /* counters along dim */
31 11           register PDL_Indx __tnpdls = __privtrans->broadcast.npdls;
32             /* dims here are how many steps along those dims */
33 11           register PDL_Indx __tinc0_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,0);
34 11           register PDL_Indx __tinc0_l = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,0);
35 11           register PDL_Indx __tinc0_h = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,0);
36 11           register PDL_Indx __tinc0_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,0);
37 11           register PDL_Indx __tinc1_a = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,0,1);
38 11           register PDL_Indx __tinc1_l = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,1,1);
39 11           register PDL_Indx __tinc1_h = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,2,1);
40 11           register PDL_Indx __tinc1_c = PDL_BRC_INC(__privtrans->broadcast.incs,__tnpdls,3,1);
41             #define PDL_BROADCASTLOOP_START_clip_readdata PDL_BROADCASTLOOP_START( \
42             readdata, \
43             __privtrans->broadcast, \
44             __privtrans->vtable, \
45             a_datap += __offsp[0]; \
46             l_datap += __offsp[1]; \
47             h_datap += __offsp[2]; \
48             c_datap += __offsp[3]; \
49             , \
50             ( ,a_datap += __tinc1_a - __tinc0_a * __tdims0 \
51             ,l_datap += __tinc1_l - __tinc0_l * __tdims0 \
52             ,h_datap += __tinc1_h - __tinc0_h * __tdims0 \
53             ,c_datap += __tinc1_c - __tinc0_c * __tdims0 \
54             ), \
55             ( ,a_datap += __tinc0_a \
56             ,l_datap += __tinc0_l \
57             ,h_datap += __tinc0_h \
58             ,c_datap += __tinc0_c \
59             ) \
60             )
61             #define PDL_BROADCASTLOOP_END_clip_readdata PDL_BROADCASTLOOP_END( \
62             __privtrans->broadcast, \
63             a_datap -= __tinc1_a * __tdims1 + __offsp[0]; \
64             l_datap -= __tinc1_l * __tdims1 + __offsp[1]; \
65             h_datap -= __tinc1_h * __tdims1 + __offsp[2]; \
66             c_datap -= __tinc1_c * __tdims1 + __offsp[3]; \
67             )
68             #ifndef PDL_DECLARE_PARAMS_clip_1
69             #define PDL_DECLARE_PARAMS_clip_1(PDL_TYPE_OP,PDL_PPSYM_OP) \
70             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, a, (__privtrans->pdls[0]), 1, PDL_PPSYM_OP) \
71             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, l, (__privtrans->pdls[1]), 1, PDL_PPSYM_OP) \
72             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, h, (__privtrans->pdls[2]), 1, PDL_PPSYM_OP) \
73             PDL_DECLARE_PARAMETER_BADVAL(PDL_TYPE_OP, c, (__privtrans->pdls[3]), 1, PDL_PPSYM_OP)
74             #endif
75 11 50         if ( __privtrans->bvalflag ) { /* ** do 'bad' Code ** */
76             #define PDL_BAD_CODE
77             #define PDL_IF_BAD(t,f) t
78 0           switch (__privtrans->__datatype) { /* Start generic switch */
79 0           case PDL_SB: {
80 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
81 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
82             if( PDL_ISBAD2((a_datap)[0],a_badval,A,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,A,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,A,h_badval_isnan) ) {
83             (c_datap)[0]=c_badval;
84             } else,) {
85 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
86             }
87 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
88 0           } break;
89 0           case PDL_B: {
90 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
91 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
92             if( PDL_ISBAD2((a_datap)[0],a_badval,B,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,B,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,B,h_badval_isnan) ) {
93             (c_datap)[0]=c_badval;
94             } else,) {
95 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
96             }
97 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
98 0           } break;
99 0           case PDL_S: {
100 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
101 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
102             if( PDL_ISBAD2((a_datap)[0],a_badval,S,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,S,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,S,h_badval_isnan) ) {
103             (c_datap)[0]=c_badval;
104             } else,) {
105 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
106             }
107 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
108 0           } break;
109 0           case PDL_US: {
110 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
111 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
112             if( PDL_ISBAD2((a_datap)[0],a_badval,U,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,U,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,U,h_badval_isnan) ) {
113             (c_datap)[0]=c_badval;
114             } else,) {
115 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
116             }
117 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
118 0           } break;
119 0           case PDL_L: {
120 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
121 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
122             if( PDL_ISBAD2((a_datap)[0],a_badval,L,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,L,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,L,h_badval_isnan) ) {
123             (c_datap)[0]=c_badval;
124             } else,) {
125 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
126             }
127 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
128 0           } break;
129 0           case PDL_UL: {
130 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
131 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
132             if( PDL_ISBAD2((a_datap)[0],a_badval,K,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,K,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,K,h_badval_isnan) ) {
133             (c_datap)[0]=c_badval;
134             } else,) {
135 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
136             }
137 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
138 0           } break;
139 0           case PDL_IND: {
140 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
141 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
142             if( PDL_ISBAD2((a_datap)[0],a_badval,N,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,N,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,N,h_badval_isnan) ) {
143             (c_datap)[0]=c_badval;
144             } else,) {
145 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
146             }
147 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
148 0           } break;
149 0           case PDL_ULL: {
150 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
151 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
152             if( PDL_ISBAD2((a_datap)[0],a_badval,P,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,P,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,P,h_badval_isnan) ) {
153             (c_datap)[0]=c_badval;
154             } else,) {
155 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
156             }
157 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
158 0           } break;
159 0           case PDL_LL: {
160 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
161 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
162             if( PDL_ISBAD2((a_datap)[0],a_badval,Q,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,Q,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,Q,h_badval_isnan) ) {
163             (c_datap)[0]=c_badval;
164             } else,) {
165 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
166             }
167 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
168 0           } break;
169 0           case PDL_F: {
170 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
171 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
172             if( PDL_ISBAD2((a_datap)[0],a_badval,F,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,F,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,F,h_badval_isnan) ) {
173             (c_datap)[0]=c_badval;
174             } else,) {
175 0 0         (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
    0          
    0          
176             }
177 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
178 0           } break;
179 0           case PDL_D: {
180 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Double,D)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
181 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
182             if( PDL_ISBAD2((a_datap)[0],a_badval,D,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,D,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,D,h_badval_isnan) ) {
183             (c_datap)[0]=c_badval;
184             } else,) {
185 0 0         (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
    0          
    0          
186             }
187 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
188 0           } break;
189 0           case PDL_LD: {
190 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
191 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
192             if( PDL_ISBAD2((a_datap)[0],a_badval,E,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,E,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,E,h_badval_isnan) ) {
193             (c_datap)[0]=c_badval;
194             } else,) {
195 0 0         (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
    0          
    0          
196             }
197 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
198 0           } break;
199 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in clip: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
200             }
201             #undef PDL_BAD_CODE
202             #undef PDL_IF_BAD
203             } else { /* ** else do 'good' Code ** */
204             #define PDL_IF_BAD(t,f) f
205 11           switch (__privtrans->__datatype) { /* Start generic switch */
206 0           case PDL_SB: {
207 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_SByte,A)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
208 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
209             if( PDL_ISBAD2((a_datap)[0],a_badval,A,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,A,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,A,h_badval_isnan) ) {
210             (c_datap)[0]=c_badval;
211             } else,) {
212 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
213             }
214 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
215 0           } break;
216 0           case PDL_B: {
217 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Byte,B)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
218 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
219             if( PDL_ISBAD2((a_datap)[0],a_badval,B,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,B,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,B,h_badval_isnan) ) {
220             (c_datap)[0]=c_badval;
221             } else,) {
222 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
223             }
224 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
225 0           } break;
226 0           case PDL_S: {
227 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Short,S)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
228 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
229             if( PDL_ISBAD2((a_datap)[0],a_badval,S,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,S,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,S,h_badval_isnan) ) {
230             (c_datap)[0]=c_badval;
231             } else,) {
232 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
233             }
234 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
235 0           } break;
236 0           case PDL_US: {
237 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Ushort,U)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
238 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
239             if( PDL_ISBAD2((a_datap)[0],a_badval,U,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,U,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,U,h_badval_isnan) ) {
240             (c_datap)[0]=c_badval;
241             } else,) {
242 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
243             }
244 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
245 0           } break;
246 0           case PDL_L: {
247 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Long,L)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
248 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
249             if( PDL_ISBAD2((a_datap)[0],a_badval,L,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,L,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,L,h_badval_isnan) ) {
250             (c_datap)[0]=c_badval;
251             } else,) {
252 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
253             }
254 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
255 0           } break;
256 0           case PDL_UL: {
257 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_ULong,K)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
258 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
259             if( PDL_ISBAD2((a_datap)[0],a_badval,K,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,K,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,K,h_badval_isnan) ) {
260             (c_datap)[0]=c_badval;
261             } else,) {
262 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
263             }
264 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
265 0           } break;
266 0           case PDL_IND: {
267 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Indx,N)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
268 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
269             if( PDL_ISBAD2((a_datap)[0],a_badval,N,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,N,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,N,h_badval_isnan) ) {
270             (c_datap)[0]=c_badval;
271             } else,) {
272 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
273             }
274 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
275 0           } break;
276 0           case PDL_ULL: {
277 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_ULongLong,P)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
278 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
279             if( PDL_ISBAD2((a_datap)[0],a_badval,P,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,P,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,P,h_badval_isnan) ) {
280             (c_datap)[0]=c_badval;
281             } else,) {
282 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
283             }
284 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
285 0           } break;
286 0           case PDL_LL: {
287 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_LongLong,Q)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
288 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
289             if( PDL_ISBAD2((a_datap)[0],a_badval,Q,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,Q,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,Q,h_badval_isnan) ) {
290             (c_datap)[0]=c_badval;
291             } else,) {
292 0           (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
293             }
294 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
295 0           } break;
296 0           case PDL_F: {
297 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_Float,F)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
298 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
299             if( PDL_ISBAD2((a_datap)[0],a_badval,F,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,F,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,F,h_badval_isnan) ) {
300             (c_datap)[0]=c_badval;
301             } else,) {
302 0 0         (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
    0          
    0          
303             }
304 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
305 0           } break;
306 11           case PDL_D: {
307 11 50         PDL_DECLARE_PARAMS_clip_1(PDL_Double,D)
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
    50          
308 109 50         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    50          
    50          
    50          
    50          
    100          
    100          
309             if( PDL_ISBAD2((a_datap)[0],a_badval,D,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,D,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,D,h_badval_isnan) ) {
310             (c_datap)[0]=c_badval;
311             } else,) {
312 68 100         (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
    100          
    100          
313             }
314 11 50         }PDL_BROADCASTLOOP_END_clip_readdata
    50          
315 11           } break;
316 0           case PDL_LD: {
317 0 0         PDL_DECLARE_PARAMS_clip_1(PDL_LDouble,E)
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
318 0 0         PDL_BROADCASTLOOP_START_clip_readdata { PDL_IF_BAD(
    0          
    0          
    0          
    0          
    0          
    0          
319             if( PDL_ISBAD2((a_datap)[0],a_badval,E,a_badval_isnan) || PDL_ISBAD2((l_datap)[0],l_badval,E,l_badval_isnan) || PDL_ISBAD2((h_datap)[0],h_badval,E,h_badval_isnan) ) {
320             (c_datap)[0]=c_badval;
321             } else,) {
322 0 0         (c_datap)[0] = PDLMIN((h_datap)[0], PDLMAX((l_datap)[0], (a_datap)[0]));
    0          
    0          
323             }
324 0 0         }PDL_BROADCASTLOOP_END_clip_readdata
    0          
325 0           } break;
326 0           default: return PDL->make_error(PDL_EUSERERROR, "PP INTERNAL ERROR in clip: unhandled datatype(%d), only handles (ABSULKNPQFDE)! PLEASE MAKE A BUG REPORT\n", __privtrans->__datatype);
327             }
328             #undef PDL_IF_BAD
329             }
330 11           return PDL_err;
331             }
332              
333             static pdl_datatypes pdl_clip_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, -1 };
334             static PDL_Indx pdl_clip_vtable_realdims[] = { 0, 0, 0, 0 };
335             static char *pdl_clip_vtable_parnames[] = { "a","l","h","c" };
336             static short pdl_clip_vtable_parflags[] = {
337             0,
338             0,
339             0,
340             PDL_PARAM_ISCREAT|PDL_PARAM_ISOUT|PDL_PARAM_ISWRITE
341             };
342             static pdl_datatypes pdl_clip_vtable_partypes[] = { -1, -1, -1, -1 };
343             static PDL_Indx pdl_clip_vtable_realdims_starts[] = { 0, 0, 0, 0 };
344             static PDL_Indx pdl_clip_vtable_realdims_ind_ids[] = { 0 };
345             static char *pdl_clip_vtable_indnames[] = { "" };
346             pdl_transvtable pdl_clip_vtable = {
347             PDL_TRANS_DO_BROADCAST|PDL_TRANS_BADPROCESS, 0, pdl_clip_vtable_gentypes, 3, 4, NULL /*CORE21*/,
348             pdl_clip_vtable_realdims, pdl_clip_vtable_parnames,
349             pdl_clip_vtable_parflags, pdl_clip_vtable_partypes,
350             pdl_clip_vtable_realdims_starts, pdl_clip_vtable_realdims_ind_ids, 0,
351             0, pdl_clip_vtable_indnames,
352             NULL, pdl_clip_readdata, NULL,
353             NULL,
354             0,"PDL::Primitive::clip"
355             };
356              
357              
358 11           pdl_error pdl_run_clip(pdl *a,pdl *l,pdl *h,pdl *c) {
359 11           pdl_error PDL_err = {0, NULL, 0};
360 11 50         if (!PDL) return (pdl_error){PDL_EFATAL, "PDL core struct is NULL, can't continue",0};
361 11           pdl_trans *__privtrans = PDL->create_trans(&pdl_clip_vtable);
362 11 50         if (!__privtrans) return PDL->make_error_simple(PDL_EFATAL, "Couldn't create trans");
363 11           __privtrans->pdls[0] = a;
364 11           __privtrans->pdls[1] = l;
365 11           __privtrans->pdls[2] = h;
366 11           __privtrans->pdls[3] = c;
367 11 50         PDL_RETERROR(PDL_err, PDL->type_coerce(__privtrans));
368 11 50         PDL_RETERROR(PDL_err, PDL->make_trans_mutual(__privtrans));
369 11           return PDL_err;
370             }