File Coverage

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