File Coverage

lib/PDL/Primitive-pp-histogram.c
Criterion Covered Total %
statement 44 187 23.5
branch 31 716 4.3
condition n/a
subroutine n/a
pod n/a
total 75 903 8.3


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